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.141 ]

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


Criando: Imagem/Sistema base



Criando a imagem

De início, no PC, iremos precisar do root para criar a base Debian. Então, no terminal:

su

Ou, para sistemas baseados no sudo, como o Ubuntu:

sudo -s

Vamos criar um arquivo de imagem que irá conter o Debian e, posteriormente, será montado no Android.

A vantagem de fazer isso, é que não precisamos reparticionar o SD card, mas em contrapartida, estaremos limitados a 4 GB de espaço, sendo esse o tamanho máximo de arquivos que FAT32 suporta.

Se precisar de mais espaço, é possível fazer algumas jogadas como criar uma segunda imagem e montá-la em /usr, por exemplo. Neste artigo, iremos trabalhar com um arquivo de 3 GB.

Criando a imagem e atribuindo um loop device para ela:

# dd if=/dev/zero of=/tmp/debian.img bs=1024 count=3M
# mknod /dev/loop0 b 7 0
# losetup /dev/loop0 /tmp/debian.img


Hora de formatar e montar a imagem. Vários Androids suportam até ext4, mas iremos trabalhar com ext2 por uma razão importante: o journaling utilizado pelos ext3/ext4 aumenta significativamente as operações de escrita no sistema de arquivos, e isso reduz o tempo de vida do SD card.

Se isso não for um problema para você, vá de ext4, por ser mais seguro contra perda de dados - neste caso, um SWAP seria bem-vindo também, existem alguns tutoriais na internet sobre como criar um SWAP file no Android (SD classe 10 recomendado). Aqui estou poupando o SD:

# mkfs -t ext2 /dev/loop0
# mkdir /mnt/debian
# mount -t ext2 /dev/loop0 /mnt/debian


Criação do sistema base via debootstrap

O debootstrap é uma ferramenta de instalação do Debian, que permite criar uma raiz com os pacotes básicos do sistema dentro de outra distribuição e/ou arquitetura.

A esmagadora maioria dos dispositivos Android trabalha com processadores ARM, portanto, copiar a raiz de um Debian "comum" compilado para PC x86, não irá funcionar. A não ser que você tenha um dispositivo Intel. No geral, precisamos da versão específica ARM.

O debootstrap é um pacote Deb padrão. Se a sua distribuição for o Debian ou similar, a instalação é, como sempre:

# apt-get install debootstrap

Para quem está em outras distribuições, uma solução é instalá-lo manualmente, conforme a documentação menciona.

Nota: se o Wget não encontrar o pacote, acesse aqui e veja qual a versão mais recente, precisa ser essa all.

# mkdir ~/dbs
# cd ~/dbs
# wget
http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.53_all.deb
# ar -x debootstrap_1.0.53_all.deb
# cd /
# zcat ~/dbs/data.tar.gz | tar xv
# rm -rf ~/dbs


Isso poderia ser feito pelo Alien, que converte pacotes para o padrão da distribuição corrente. Apesar de não ser muito recomendado instalar pacotes Deb em distribuições baseadas no RPM e vice-versa, o debootstrap é apenas uma coleção de scripts e não oferece riscos ao sistema, como quebrar alguma dependência.

A instalação do Debian se baseará em dois estágios:
  1. No primeiro, será feito o download e a descompressão de programas essenciais.
  2. No segundo, ele precisa executar algumas ferramentas previamente descompactadas pelo debootstrap e isso deverá ser feito pelo Android, já que o PC não será capaz de executar nativamente os binários ARM.

Um ponto de atenção, é qual arquitetura ARM será utilizada. Para dispositivos com processador ARMv7, podemos usar armhf, para ARMv6 devemos usar armel.

Se não tiver certeza qual arquitetura é seu processador, use armel, que funciona na v7 também, só não é otimizado para ela. Os dispositivos mais modernos são ARMv7, então armhf seria o mais recomendado.

Observe o parâmetro --arch armel e mude, caso deseje:

# debootstrap --variant=minbase --foreign --arch armel wheezy /mnt/debian http://ftp.us.debian.org/debian

Hora de desmontar a imagem:

# umount /mnt/debian
# rmdir /mnt/debian
# exit


Agora crie um diretório debian na raiz do SD card no Android e copie o /tmp/debian.img para este local. Apenas por uma questão de praticidade, inicie o SSHDroid, assim podemos continuar trabalhando do Desktop mesmo.

Um ponto importante aqui, são os diretórios em que trabalharemos. No meu Tablet, está assim:
  • SD: /storage/sdcard1
  • Data (onde os Apps residem): /data

Isso pode mudar no seu dispositivo, então, verifique estes caminhos antes de continuar. Eu tive alguns problemas com o mount no meu, e estou sempre o executando como busybox mount, desta forma sempre funciona.

Vamos nos conectar no SSHDroid e executar o segundo estágio do debootstrap. Posteriormente, teremos que montar o /dev, /dev/pts, /sys e /proc também.

Usar os parâmetros noatime e nodiratime no mount é interessante, pois além de acelerar o sistema, isso reduz o número de gravações no SD card:

ssh root@ANDROID_IP

# mkdir /data/debian
# busybox mount -o loop,noatime,nodiratime /storage/sdcard1/debian/debian.img /data/debian
# LANG=C.UTF-8 chroot /data/debian debootstrap/debootstrap --second-stage


Página anterior     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

Genymotion - Emulando Android no GNU/Linux

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

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

Transforme seu smartphone em uma webcam no Debian, Ubuntu e derivados com Iriun Webcam

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

  
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