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
armhfporarmelabaixo. Você pode dizer, verificando/proc/cpuinfono Android (ou qualquer outra coisa usando um kernel Linux): você deve ter o ARMv7 (ou ARMv8) com os recursosthumbeeevfpv3. -
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-staticDebian, extrair o executável do BusyBox comar p busybox-static_*_armhf.deb data.tar.gz | tar -xzf - ./bin/busyboxe transferir o bináriobusyboxpara 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/debianCaso 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.gzpara 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/debiane 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/binou 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