
Durante minha formação, desenvolvi aplicativos e sites para Android iOS por quase 18 meses. Agora, como projeto de último ano, estou trabalhando no código-fonte do Linux com o objetivo de inicializá-lo em um dispositivo móvel – como o Android. Eu o obtive com sucesso como um pacote Debian seguindo tutoriais na Internet. Atualmente estou usando o Ubuntu.
Tenho uma estratégia, mas não tenho certeza se estou no caminho certo. É o seguinte:
A:
Baixe o código-fonte do Linux. Remova drivers extras, compile e instale-os no Ubuntu atualmente em execução e use-os.
Personalize ainda mais o código e inicialize-o como minha própria distribuição. Para isso estou acompanhandoLFS.
Especifique um celular de destino específico, modifique o código para ele, escreva drivers se eu precisar de algum, não tenho certeza de qual deles (é por isso que estou aqui :)) e inicialize o kernel nele.
Não sei se minha estratégia está certa ou não. Eu realmente aprecio se alguém puder me dizer:
B:
- Estou no caminho certo? Se não, qual pode ser o caminho certo?
- Preciso especificar um celular e personalizar o código do kernel para ele?
- Além dos drivers, o que mais preciso alterar no kernel?
- Por último, mas não menos importante: Quando inicializo o kernel em um dispositivo móvel; vou ter alguma interface ou terminal aí?
Desculpe se minha pergunta não faz sentido. Sou estudante e ainda estou tentando entender as coisas. Ficaria muito grato se alguém pudesse me dar dicas sobre quais assuntos pesquisar na Internet.
Atualização: O que quero é confirmar se minha estratégia está correta ou não. Caso contrário, basta citar as etapas que devo seguir.
Responder1
Não seria muito mais fácil tentar compilar primeiro o kernel Linux do Android e não apenas o kernel vanilla do kernel.org? Em princípio, isso deveria estar disponível para todos os dispositivos Android existentes, já que o kernel é GPL. Se você não conseguir obter o código-fonte do kernel para o seu dispositivo de destino, porque o fabricante não tem noção ou é um conhecido violador da GPL, sua próxima aposta é baixar e compilar o código-fonte para um dispositivo com um SoC semelhante (Tegra 3, RK3188, etc).
Observe que inicializar em um dispositivo móvel executando vários designs de SoC é uma proposta muito mais duvidosa do que inicializar a partir de um desktop ou laptop com CPUs AMD ou Intel familiares. Na verdade, você nem tem certeza se pode copiar ou atualizar o kernel no dispositivo móvel (a menos, é claro, que o dispositivo móvel seja um laptop). Então você precisa pesquisar isso também.
Então a primeira coisa que eu pesquisaria é o dispositivo alvo. É uma boa ideia escolher um dispositivo que possa inicializar a partir de seu cartão SD externo, já que em teoria você pode executar o Linux simplesmente copiando seu kernel e outras coisas do sistema operacional para o cartão SD. Fora isso, escolha um dispositivo com uma partição de recuperação funcional que permitirá que você atualize o kernel para a partição de inicialização apropriada. Esse dispositivo terá efetivamente duas partições de inicialização, a partição de inicialização do Android e a partição de recuperação. Portanto, caso algo dê errado e torne seu dispositivo não inicializável, você pode pressionar uma combinação especial de botões de hardware em seu dispositivo para poder inicializar na partição de recuperação e retornar o dispositivo a um estado utilizável.