Debian no Android "from scratch"

Este artigo pretende demonstrar, passo a passo, a instalação do Debian em sistema Android, desde o Debootstrap até a configuração final. Algumas alterações nas linhas de comandos/scripts podem ser necessárias, dependendo do dispositivo.

[ Hits: 31.095 ]

Por: Rodrigo Morette em 11/10/2013 | Blog: http://www.morette.com.br


Introdução



Existem vários tutoriais explicando como instalar o Debian no Android, mas no geral, estão em inglês ou não demonstram o passo a passo sobre como criar a imagem, ou maiores detalhes sobre o que está sendo feito. Normalmente, pedem para baixar uma imagem pré-configurada.

Outro ponto, é que em muitos está sendo utilizado apenas o root, prática não recomendada. Neste projeto também não há a necessidade de remontar a raiz como RW, tornando-o mais seguro.

Isso não é dual-boot, nem máquina virtual. O que iremos fazer, será instalar o Debian em uma imagem e criar uma gaiola chroot para ela. No final, teremos um sistema muito parecido com um Debian "real", mas rodando concorrentemente com o Android e utilizando o seu kernel.

Em alguns sistemas Android, isso pode ser um problema, alguns não possuem suporte a ext2 nativo ou tiveram algumas funções do kernel cortadas. Acredito que este tutorial seja aplicável com poucas ou nenhuma modificação para a maioria dos dispositivos Android 4.

Isso foi feito em um Galaxy Tab 2 com o CyanogenMod 10.1 (JB 4.2.2), e dadas as diferenças entre as customizações dos fabricantes nas ROMs "stock", algumas partes deste tutorial, provavelmente, precisem ser revistas para o seu dispositivo, em especial o ponto de montagem do SD card.

Como teremos uso intenso de root, sempre tome muito cuidado com o que está fazendo, especialmente no Android para não "brickar" o aparelho. Analise cada linha de comando deste tutorial e certifique-se que ela é aplicável ao seu dispositivo, embora não seja algo muito complexo, certa experiência com o terminal de comandos e scripts será necessária.

Vamos precisar de:

  PC com GNU/Linux, não precisa ser necessariamente o Debian.
  Android com root/BusyBox, mais os seguintes aplicativos:
  • Android Terminal Emulator;
  • AndroidVNC;
  • SSHDroid;
  • Hacker's Keyboard.

Este último não é obrigatório, mas facilita bastante ter um teclado padrão PC, já que os teclados Android normalmente não possuem Ctrl, Alt, Esc, teclas de função, etc.

Como funciona

Uma explicação rápida sobre o gaiola chroot: a ideia é mudar a raiz para algum outro ponto do sistema de arquivos. Vou usar um exemplo simples para demonstrar o funcionamento (apenas conceitual, isso exige outros detalhes que serão abordados depois). Suponhamos que isso seja feito:

# mkdir /gaiola
# cp -R /* /gaiola
# touch /gaiola/exemplo


Agora temos um clone do nosso sistema de arquivos no diretório /gaiola. Note que foi criado um arquivo /gaiola/exemplo, ele servirá para esta demonstração. Agora, se executarmos o comando:

# chroot /gaiola /bin/bash

Aparentemente nada muda, mas se executarmos:

# ls /

Veremos que o arquivo /gaiola/exemplo agora é /exemplo, e não temos mais o diretório gaiola.

Como assim? Simples: a raiz do sistema (para essa seção do bash e qualquer processo filho dela) está usando o diretório gaiola como a raiz, ignorando a original. Se carregarmos algum servidor, como por exemplo o SSH, ele ficará confinado nesta gaiola.

Exemplo:

# /etc/init.d/ssh start
# exit


OK, iniciamos o SSH e fechamos o bash que estava no chroot. Mas o SSH continua em execução, e dentro do ambiente chroot. Se remontarmos via SSH na máquina onde isso foi feito, notaremos que ele exibirá o arquivo /exemplo e não terá o diretório /gaiola. Agora, observe o seguinte:

# chroot /gaiola /bin/bash
# /etc/inid.d/ssh stop
# exit


Isso irá retornar a nossa gaiola, parar o SSH e sair dela.

Um problema que encontrei nos scripts de fake boot foi nesse conceito, muitos consideram que só é possível entrar "uma vez" no ambiente, outros declaram uma série de variáveis, como $PATH, o que não é interessante.

O mais correto, é sempre entrar na gaiola a partir de um login shell (bash -l ou su -l) ao invés de fazer "remendos" no script responsável pela carga do chroot.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Criando: Imagem/Sistema base
   3. Configuração do sistema
   4. Scripts de carga e shutdown
   5. Finalizar a configuração e instalar pacotes básicos
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

DriveDroid - Transforme o seu Android em um pendrive bootável

Chromecast - Upgrade de sua TV LED sem Wi-Fi

Genymotion - Emulando Android no GNU/Linux

Tranferência rápida de arquivos do Android para PC via FTP

Zello - Transforme seu Android (e GNU/Linux) num Walkie Talkie

  
Comentários
[1] Comentário enviado por lcavalheiro em 11/10/2013 - 11:58h

Este artigo está do caralho! Favoritado com certeza. Pergunta: existe experiência dessa brincadeira em smartphones? Se existe, você pode nos relatar como foi?

[2] Comentário enviado por rmorette em 11/10/2013 - 15:52h

Valeu :-). Eu não cheguei a testar no smartphone, mas já vi alguns relatos de pessoas que fizeram chroot para uma distro neles. Desde que não tenha problemas no Android (como a falta suporte a EXT2), é para funcionar normalmente.

[3] Comentário enviado por oliviofarias em 13/10/2013 - 00:00h

Estou pensando em fazer isso, mas será que funciona em um Galaxy S3?

[4] Comentário enviado por Pylm em 13/10/2013 - 18:14h

Se o kernel instalado (no smart claro) tiver suporte a ext, vai.

[5] Comentário enviado por luisrcs em 15/10/2013 - 19:09h

Muito bom o artigo, parabéns. Mas eu fiz isso no meu tablet Coby com menos trabalho. Bastando instalar e configurar o Debian em um microSD pelo computador e depois montando o mesmo no tablet e executando o chroot.

Consigo rodar qualquer programa em console nele. O que me fez abandonar o projeto foi não conseguir rodar nenhum ambiente gráfico, fiquei frustrado.

E sim. Dá pra fazer o debootstrap armel num computador x86, bastando instalar o qemu e configurar corretamente.

[6] Comentário enviado por rmorette em 16/10/2013 - 22:29h

Boa cara! De fato, uma VM ARM simplifica pacas e acelera o processo de criação da imagem :-)
Valeu pela dica!

[7] Comentário enviado por mfrlinux em 05/11/2013 - 13:53h

Show Rodrigo, total hacker.
Estou montando meu cenário pelo seu passo-a-passo.

[8] Comentário enviado por psctec em 02/01/2014 - 15:41h

Se alguem souber como rootear um S3 Mini para poder usar este tutorial agradeço

[9] Comentário enviado por leoribas35 em 22/12/2014 - 12:17h

aonde abre esse de $ su ? eu to horas tentando instalar o kali no cel e da o erro de loop to ficando loco algume me ajuda

[10] Comentário enviado por purcina em 26/02/2015 - 20:51h

Muito bom o artigo. Só uma dúvida. Quando eu vou executar o comando <code> LANG=C.UTF-8 chroot /data/debian debootstrap/debootstrap --second-stage </code> da o seguinte erro <code>No pkgdetails available; either install perl, or build pkgdetails.c from the base-installer source package</>. Eu sei que isso é causado pelo fato do perl não está instalado. Mas eu devo instalar o perl no android ou na imagem de instalação??

[11] Comentário enviado por marconso em 09/02/2016 - 18:06h

Achei interessante poder colocar uma distro no celular, porém fiquei enrolado na parte da criação da base.... Fiquei confuso em qual momento devo iniciar a utilizar o cartão sd.... Uso um moto g 3 e gostaria de saber se poderia fazer todo o procedimento sem o cartão.
Vlw ta favoritado

[12] Comentário enviado por TimeinLosted em 30/10/2017 - 03:24h


[10] Comentário enviado por purcina em 26/02/2015 - 20:51h

Muito bom o artigo. Só uma dúvida. Quando eu vou executar o comando &lt;code&gt; LANG=C.UTF-8 chroot /data/debian debootstrap/debootstrap --second-stage &lt;/code&gt; da o seguinte erro &lt;code&gt;No pkgdetails available; either install perl, or build pkgdetails.c from the base-installer source package&lt;/&gt;. Eu sei que isso é causado pelo fato do perl não está instalado. Mas eu devo instalar o perl no android ou na imagem de instalação??



O perl está instalado,mas ele não acha.Digite:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts