Hlavní navigace

Debian v chrootu na Androidu

11. 11. 2011
Doba čtení: 7 minut

Sdílet

Android je založený na linuxovém jádře a když si odmyslíme funkcionalitu, kterou potřebuje pro běh vlastních aplikací, dostaneme téměř stejné jádro, jako máme na našem desktopu nebo notebooku. K plnohodnotnému linuxovému systému chybí tak už jen krůček a aplikace Linux Installer ho umí udělat za nás.

O víkendu jste měli možnost si na LinuxAltu poslechnout mou přednášku na téma „Android je taky Linux“, kde jsem se snažil vysvětlit, že Android má linuxové jádro a s chrootem se s v něm můžete cítit jako na svém velkém počítači. Ano, jsou tu nějaké překážky ať už hardwarové nebo softwarové, ale dále v článku budu předpokládat, že těmi softwarovými jste si už prošli (získání roota) a že vám zůstala trocha paměti na nějaký ten Debian.

Popis aplikace Linux Installer, který v článku uvedu, by vás neměl dovést k poškození systému vašeho telefonu, ale vývojáři aplikace velkým červeným písmem varují, že chybnou konfigurací si s telefonem můžete něco provést, takže berte na vědomí, že Root.cz, autor aplikace ani autor tohoto článku nenesou odpovědnost za to, co si s telefonem provedete na základě zde uvedených informací.

Linux Installer

Linux Installer je aplikace, která ulehčuje instalaci Debianu a Ubuntu do chrootu v androidích zařízeních. Na Marketu jsou k nalezení alternativní aplikace s podobnou funkčností, ale pro mé potřeby jsem vybral právě Linux Installer, protože je jednoduchý, flexibilní a dělá přesně to co od něj čekám.

Interakce s uživatelem je zúžena asi na osm tlačítek a intentu s konfigurací, kde je možné upravit některé parametry jako velikost obrazu nebo verzi distribuce. Navíc LI v mém případě nepotřeboval nic extra, aby fungoval. Je možné, že u něj narazíte na problémy s některými funkcemi jádra jako třeba podporu pro loop files nebo podporu pro ext2/3/4. Pokud máte dobré jádro, tak jedinou věcí, kterou budete potřebovat, je BusyBox, který jde na jedno kliknutí nainstalovat přes BusyBox Installer.

V custom ROMkách bývá BusyBox už přítomen. BusyBox je v systému často v několika kopiích. Jeden si nese LI, další má v sobě třeba emulátor terminálu a BusyBox Installer dá do systému třetí. BusyBox v LI je zde vyloženě jen kvůli pár utilitám, které LI samo využívá a nedoporučuji ho používat na něco jiného. Emulátor terminálu ho v sobě má kvůli podpoře BASHe a podobně, ale taktéž většinou nejde o integrovanou součást systému a jiné aplikace ho používat nebudou. Proto zbývá BusyBox Installer, který BusyBox nainstaluje tam, kde bude k nalezení i ostatními, a to do /system/xbin. Pravděpodobně se obejdete i bez něj, ale pokud budete chtít po svém originálním systému jen o kousek víc, tak narazíte, protože v něm nenajdete ani grep.

Pokud si myslíte, že ze svého telefonu dostáváte málo, nepřehlédněte naše školení Operační systém Android v Akademii Root.cz, kde se naučíte z něj dostat maximum.

První Debian

Máte-li tedy nainstalovaný BusyBox a stažený Linux Installer (LI), můžete se pustit do prvního Debianu na vašem Androidu. Při spuštění LI se vám možná objeví hláška podobná této:

To znamená, že vaše jádro v sobě nemá uloženou konfiguraci, která je na některých custom jádrech k nalezení v /proc/config.gz. Jejich autoři ji tam často nedávají, protože zbytečně zabírá nějaké to místo v paměti, takže i když se vám podobná hláška objeví, nemusí to znamenat, že to nepojede, ale jen to prostě LI nemůže říct hned a na jisto. Pokračujte tedy tlačítkem Override a hned co to půjde, tak vlezte do nastavení přes Menu->Setup.

Výchozí nastavení by mělo víceméně stačit, ale určitě věnujte pozornost následujícím volbám.

  • Preferred distribution – Debian nebo Ubuntu
  • Distribution version – verze vybrané distribuce
  • Loop file – cesta k obrazu se systémem
  • File size – velikost obrazu se systémem
  • Ext version. – ujistěte se, že je nastaveno 2
  • Allow write on /system
  • Allow remount with dev/exec

Nastavte si, zda preferujete Ubuntu nebo Debian, případně v jaké verzi, cesku k loop file (obraz se systémem) nasměrujte někam na SD kartu a počítejte s tím, že se to LI nebude líbit. Loop file je možné hodit i přímo do telefonu, ale zaberete si místo pro aplikace. Ext version. závisí na podpoře souborového systému ExtX ve vašem jádře. Zařízení s 2.3.4 by měly zvládat Ext4 bez problémů, protože na ní mají systém a data. V integrovaném BusyBoxu v LI chybí utilitka mkfs.ext3/4, takže pokud vám nestačí ext2, je nutné použít nějaký jiný BusyBox. V tomto případě nepomůže ani BusyBox Installer. Poslední dvě volby si minimálně zapamatujte. Remount s dev/exec budete potřebovat kvůli SD kartě a zápis do /system zase kvůli souboru, který se postará o nahození chrootu. V LI je označován jako chroot launcher a ve výchozím nastavení jde o script s názvem linuxchroot. Pokud bude nějaký přepínač špatně, LI o tom něco řekne v logu a nasměruje uživatele co má udělat.

Když máte vše nastaveno, vraťte se tlačítkem zpět na dashboard a měli byste se dívat na něco takového:

Přečte si červený nápis a pokud jste smířeni s riziky, klikněte na Create target loop a potvrďte další varování (o loop file na SD kartě). Tím se začnou kopírovat nuly do vašeho loop file. Bude to chvilku trvat v závislosti na tom, jak velký jste ho chtěli. Pro 2 GB na Nexus S to je něco kolem deseti minut.

V dalším kroku už máte tlačítka tři a zajímá vás Format target loop", které v loop file vytvoří souborový systém. Po kliknutí se objeví další varování, které upozorňuje, že v loop file* všechno zmizí.

Po potvrzení už čekáte jen pár sekund a můžete přejít k Mount loop. Tím připojíte loop file do souborového systému telefonu. Bod připojení se dá nakonfigurovat v nastavení a ve výchozím stavu je to /data/local/mnt/Li­nux. Po kliknutí na poslední tlačítko s mountem se objeví další varování o SD kartě, kde máte napsáno, že ji nemáte v žádném případě odpojovat, když běží chroot. Po připojení se opět změnilo rozložení tlačítek.

Zbývá systém nainstalovat kliknutím na Install in LOOP. Všimněte si také tlačítka Stop loop env (will kill running services), které zabije všechny procesy související s vaším chrootem a odpojí loop file. Samotná instalace už žádné upozornění nehlásí. Jen se ujistěte, že jste na dobré síti, protože se stáhne několik desítek MB balíčků. Nainstalovaný Debian Squeeze zabere přibližně 250 MB místa, takže si podle toho dimenzujte velikost loop file. Jeho instalace je na lokální 2Mbit WiFi přibližně na 10 minut.

Nakonec se dostanete k poslední skupince tlačítek, kde můžete zastavit běh chrootu, přeinstalovat systém v loop file a nebo aktualizovat chroot launcher.

S chrootem můžete pracovat po otevření příkazové řádky a spuštěním chroot launcheru, což je ve výchozím stavu linuxchroot. Doporučuji na nových telefonech používat jako emulátor Better Terminal Emulator Pro. Sice je placený (přes 70 Kč), ale na nových telefonech je pro práci s řádkou nepostradatelný.

Co s tím

Možnosti využití jsou široké a každý si asi najde to své. Na svém Nexus S jsem se nepouštěl do žádných extrémností. Podařilo se mi nahodit webovou aplikaci pro správu serverů Python Control Panel nebo taky Apache s PHP5 a DokuWiki. PCP běží na frameworku Django a Python telefonu nedělal žádný problém. Jako databázi jsem použil SQLite, protože MySQL i PostgreSQL moc nespolupracovaly s nějakým androidím omezením, které neumožnilo ani jedné z databází naslouchat na TCP/IP socketu. Apache ani Django na osmdesátém portu nemělo sebemenší problém, takže tomuto se ještě budu věnovat.

Nexus S od aktualizace na 2.3.6 přestal ignorovat router advertisement, takže si sám nastaví IPv6 adresu. Kdybych ještě využil jednu z mých veřejných IPv4 adres a k PCP doplnil alespoň Nginx, Postfix, Courier a Bind, měl bych nenáročný a plnohodnotný hosting, který by utáhl i malý web a nějaký ten e-mail. Na mé přednášce jste se mohli přesvědčit, že web na telefonu vyloženě pomalý nebyl ani při běhu relativně náročného Djanga.

Cloud23

Možnosti využití jsou prakticky neomezené, ale berte na vědomí, že takto nainstalovaný systém nějak nespolupracuje s Androidem, pouze mu užírá RAMku. Zajímavá je možnost nahodit X Server a připojit se k němu přes VNC, kde už můžete pracovat třeba s Unity nebo s KDE.

Závěr

Debian běží v chrootu na Nexus S pěkně, je omezen jen tím socketem, o kterém jsem psal u databází, ale ani v tom bych neviděl neřešitelný problém. S telefonem jde i přes „polinuxštění“ stále telefonovat.

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.