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: 37.837 ]

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

Devo atender? Um ótimo aplicativo para bloquear Telemarketing

Genymotion - Emulando Android no GNU/Linux

Conheça o Viva o Android, site coirmão do VOL

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

KDE Connect: Integrando o ambiente Android com o desktop Linux

  
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

[13] Comentário enviado por Alannah358 em 19/07/2021 - 03:17h


[10] Comment sent by purcina on 02/26/2015 - 20:51h

Very good article. Just a question. When I run the command &lt;code&gt; LANG=C.UTF-8 chroot /data/debian debootstrap/debootstrap --second-stage &lt;/code&gt; it gives the following error &lt;code&gt;No pkgdetails available; https://www.targetpayandbenefits.biz/ either install perl, or build pkgdetails.c from the base-installer source package&lt;/&gt;. I know this is caused by the fact that perl is not installed. But should I install perl on android or on the install image??



"Linux from scratch on ARM" It would show a number of pages for clues. Either cross compile or build embedded or build on system.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts