A maneira menos dolorosa de instalar utilitários do Linux em um dispositivo Android é instalar uma distribuição inteira em um subdiretório. Distribuições “normais” (Debian, Arch, Fedora, etc.) fornecem binários que são dinamicamente vinculados ao Glibc, que o Android não fornece. Eles precisam ser executados com o carregador ( /lib/ld-linux*.so
) da Glibc.
Uma maneira simples de configurar tal sistema é usar o deboostrap do Debian para construir uma árvore inicial de diretórios Debian, transferi-lo para o dispositivo Android e, a partir daí, instale pacotes com apt-get
e outras ferramentas Debian padrão. Existem algumas páginas sobre o tópico no wiki do Debian: ChrootOnAndroid , HotwoDebianInAndroid .
-
Primeiro, instale o Debootstrap. No Debian ou derivado, basta instalar o pacote
debootstrap
. Em algum outro Linux ou outra variante Unix, simplesmente pegue o tarball de origem do debootstrap ou confira no Git: é só um script de shell e arquivos de dados de suporte. -
Determine se o seu dispositivo suporta ponto flutuante de hardware . Se isso não acontecer, substitua
armhf
porarmel
abaixo. Você pode dizer, verificando/proc/cpuinfo
no Android (ou qualquer outra coisa usando um kernel Linux): você deve ter o ARMv7 (ou ARMv8) com os recursosthumbee
evfpv3
. -
Se você ainda não tem, instale o BusyBox no dispositivo Android. Embora não seja estritamente necessário, será útil abaixo. Você pode recuperar o pacote binário
busybox-static
Debian, extrair o executável do BusyBox comar p busybox-static_*_armhf.deb data.tar.gz | tar -xzf - ./bin/busybox
e transferir o bináriobusybox
para o dispositivo Android. Abaixo, presumo que o BusyBox está localizado em/vendor/bin/busybox
. -
Se o seu dispositivo Android for capaz de montar um cartão SD formatado como ext2 / ext3 / ext4 (ou qualquer outro sistema de arquivos compatível com permissões unix, ou seja, não FAT), monte o cartão SD no seu PC Unix e execute o seguinte comando como root:
debootstrap --arch=armhf --foreign wheezy /media/sdcard/debian http://http.debian.net/debian
Caso contrário, execute o seguinte comando como root (ou sob fakeroot, se tiver):
sh -c 'debootstrap --arch=armhf --foreign wheezy /tmp/debian http://http.debian.net/debian && tar -zcf /tmp/debian.tar.gz -C /tmp debian'
Agora você precisa transferir
/tmp/debian.tar.gz
para o seu dispositivo Android. Você pode fazer isso em adb (adb push /tmp/debian.tar.gz /
) ou qualquer outra maneira que funcione para você, então descompacte o tarball (use o BusyBoxtar
):tar -zxvf /debian.tar.gz
-
Configure um ambiente confortável para executar programas do Linux. A maneira mais fácil é executá-los em um chroot . Eu suponho que o sistema Debian está localizado em
/media/sdcard/debian
e que você tem BusyBox. Crie um script de shell:#!/vendor/bin/busybox sh LINUX_ROOT=/media/sdcard/debian alias bb=/vendor/bin/busybox unset LD_LIBRARY_PATH PATH SHELL export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # Bind-mount filesystems if not already done for d in /dev /media /proc /sys; do bb grep -q " $LINUX_ROOT$d " /proc/mounts || bb mount -o rbind "$d" "$LINUX_ROOT/$d" done for d in /data /system; do if ! bb grep -q " $LINUX_ROOT$d " /proc/mounts; then mkdir -p "$LINUX_ROOT/android/$d" bb mount -o rbind "$d" "$LINUX_ROOT/android/$d" fi done exec bb chroot "$LINUX_ROOT" /bin/bash "$@"
Torne este script executável e coloque-o em
/vendor/bin
ou em qualquer outro lugar no Android PATH. Antes que você possa desfrutar plenamente da instalação do Linux, você precisa concluir o trabalho do debootstrap: no chroot, execute/debootstrap/debootstrap --second-stage