Klasické Linux prostředí v Androidu

Android je operační systém s Linux kernelem, ale od koncepce klasických distribucí se dost vzdálil. Existují ale různé možnosti, jak si Android doplnit o klasické utility. Jedna z nich je nainstalovat (bootstrapnout) si celou oblíbenou Linux distribuci na kartu přepnout se (chrootnout). Pro Android existují aplikace, které takovou instalaci a následné ovládání usnadňují.

Předpokladem pro tyto experimenty je rootnutý Android!

Hledal jsem na Play Store a vyzkoušel Complete Linux Installer, také Debian Kit a ještě nejaké další. Pořád to ale nebylo to, co bych si představoval, dokud jsem nenarazil na Linux Deploy, jehož autorem je Anton Skshidlevsky z Ruska. Program jednoduše, ale spolehlivě dělá to, co má a nenutí to, co nechci. Dále je sympatické, že je open source a zdrojáky jsou na GitHubu.

Linux Deploy

Aplikace umožňuje nainstalovat Linux distribuci pro architekturu armel (sw floating point) nebo armhf (hw floating point). V době psaní jsou podporované Debian, Ubuntu, Arch Linux, Fedora a OpenSUSE. Zkušenost mám s Debianem armhf, pro použití armel jsem zatím neměl důvod.

Distro lze nainstalovat do:

  • adresáře
  • partition na kartě
  • image souboru

Vyzkoušeno mám použití image souboru (může zde být limit 4GB v případě FAT32 na kartě). Jsou podporovány filesystémy ext2, ext3 a ext4. Připojení image má program vyřešeno pomocí loopback zařízení.

Může být nainstalováno více instancí (distribucí), které se rozlišují pomocí profilů. Po spuštění profilu se přimountuje root filesystem, včetně vytvoření /dev, /proc, /sys. Dále se spustí příslušně služby, jako SSH server, VNC server, X server - podle toho co bylo zvoleno při instalaci a v konfiguraci (je to tak z toho důvodu, že chrootnuté prostředí nemá žádný svůj vlastní init). Je zde i možnost spuštění vlastního init skriptu.

Linux Deploy

Dobrá ukázka je přímo autorovo video na youtube.

Použití

Aplikace nemá vlastní konzoli, nebo obrazovku k systému.
Do prostředí je možné se připojit pomocí SSH, případně VNC klienta. Výchozí login a heslo je android / changeme.

Je možné použít i Android terminál, postup trochu komplikovanější, ale dá se oskriptovat...

su
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export TERM=xterm
chroot /data/local/linux/mnt /bin/bash -l

... a ještě o něco více komplikovanější, ale může se hodit: spustit přímo binárku, která je uvnitř nainstalované distribuce:

export ROOT=/data/local/linux/mnt
export LD_LIBRARY_PATH=$ROOT/lib:$ROOT/lib/arm-linux-gnueabihf:$ROOT/usr/lib:$ROOT/usr/lib/arm-linux-gnueabihf
${ROOT}/lib/ld-linux-*.so* ${ROOT}/bin/ls

V případě armel jsou libky v /lib/arm-linux-gnueabi.
Konkrétní cesta k mnt (ROOT) je odvozena od pojmenování profilu (po spuštění se dá zjistit pomocí mount).


Václav Vinklát 20.2.2013

TOPlist