Bom já vimos o que é uma Distro Linux nesse artigo, e a divisão entre User space e Kernel space. Nesse artigo vamos utilizar esse conhecimento para provar que o Android é só mais uma distribuição Linux.

Esse conteúdo também está em formato de vídeo no nosso canal do YouTube:

Android x Ubuntu

Não é o objetivo desse artigo contar a história do Android. Para esse articulista o Android é só mais uma Distro Linux. Como já sabemos dos artigos anteriores uma distro Linux roda em cima de um Kernel Linux 😱. E o Android roda em cima de um Kernel Linux:

E para provar isso na prática vamos primeiramente rodar um Android em um Raspberry Pi 3B e utilizando o mesmo Kernel do Android vamos rodar um Ubuntu 19.10.

Android para Raspberry Pi 3B

Estou utilizando uma imagem pronta do Android 9 para Raspberry Pi. Esse Android é do projeto Lineage OS, o fork do famoso Cyanogen-MOD que como todo Android, até o do Google, vem do projeto AOSP (Android Open Source Project). Eu apenas peguei a imagem do site e gravei em um SDCard, e botei pra rodar:

É esse Android que vamos usar como base para rodar nosso Ubuntu. Uma coisa que eu gostaria de destacar aqui é a versão do Kernel Linux que o Android está usando. Guarde bem essa versão, pois será a mesma versão que vamos ver quando formos rodar o Ubuntu 19.10.

Rodando Ubuntu 19.10 com Kernel Linux do Android

Agora é a hora. Primeiramente peguei um roofs de um Ubuntu 19.10 para ARM e configurei dentro de um pen drive USB. Por que você não colocou o Ubuntu no mesmo SDCard do Android? Eu realmente queria fazer isso, e seria bem mais fácil. Maas o Android tem um arquitetura de partições, por questões de segurança, que estourou as 4 partições lógicas possíveis. Eu ia ter que fazer uma partição estendida e bla bla bla.

No final das contas achei mais fácil colocar em um pen drive mesmo. Esse pen drive aliás eu já tinha usado pra bootar um Raspbian pelo USB e ele já estava meio que configurado, só fiz sobrescrever o rootfs do Raspbian com o rootfs do Ubuntu e deletar a partição do boot para não termos dúvida que estamos usando o Kernel do Android:

Coloquei o pen drive no USB da Raspberry Pi, para conferir como o Kernel, rodando no Android, ia listar o device:

Sabendo que o Kernel lista o pen drive como /dev/sda fica fácil agora dizer pro Kernel inicializar pela partição do USB que está o Ubuntu. Usei o próprio terminal do ADB do Android para montar a partição de boot e editar o arquivo cmdline.txt e modificar o argumento root=/dev/ram0 para root=/dev/sda2:

Também tive que editar o arquivo config.txt:

temos que comentar a linha 3 pois o Android tem sua inicialização baseada em um initramfs, por isso no cmdline.txt ele estava root=/dev/ram0, e o nosso Ubuntu vai inicializar direto do rootfs.

Pronto com esses dois hacks podemos então reinicializar a Rasbpberry Pi, que quando a placa voltar ela vai inicializar direto do pen drive e vai rodar nosso Ubuntu 19.10:

Note o detalhe, estamos rodando o Ubuntu 19.10 que está na partição do pen drive mas estamos utilizando o mesmo Kernel Linux da partição boot do SDCard do Android sem maiores problemas. Eu tenho conexão com a internet, consigo usar o gerenciador de pacotes e tudo mais.

Como no Ubuntu eu tenho poderes de super vaca e consigo dar um “apt-get install neofecth” eu peguei o neofetch e copiei para uma partição do Android para rodar ele no Android:

Conclusão

Essa é o prova definitiva que o Android é nada mais que uma Distribuição Linux. O que difere o Android do Ubuntu é o User space, os programas utilitários, serviços que rodam, as bibliotecas, que nós vimos que no terminal temos muitos programas similares, gerenciador gráfico e etc. Já o Kernel space é uma coisa comum entre os dois, nos podemos usar o mesmo Kernel Linux para rodar tanto um Android como um Ubuntu!

Categories: AndroidLinux