Android je postavený na linuxovém jádře, ale není to „plnohodnotný Linux“. Chybí v něm totiž uživatelské utility, které jsou právě tím, co od GNU/Linuxu očekáváme. V telefonu ale máme vlastně Android/Linux, tedy úplně jiné běhové prostředí, které jako svůj podvozek využívá linuxové jádro.
Pokud jste ale zvyklí na prostředí běžné linuxové distribuce, možná vám také občas něco podobného chybí v telefonu. Možnost nějaký úkol vyřešit jednoduše běžnou řádkovou utilitou je velice lákavá. K tomu nám ale chybí základní software, který nám do běžného systému dodává projekt GNU a který v Androidu není.
Můžeme ho sice do systému dostat, pokud telefon rootneme, ale to zase nechce dělat každý uživatel. Jednoduchou cestu k linuxovému prostředí v Androidu nabízí projekt Termux.
Linux v jedné aplikaci
Z uživatelského hlediska je Termux běžnou androidí aplikací, kterou nainstalujete z Google Play nebo alternativního obchodu F-Droid. Nemá žádné speciální požadavky, nevyžaduje úpravu systému ani nic podobného. Instaluje se stejně snadno jako jakákoliv jiná aplikace.
Zahrnuje v sobě vlastně dvě různé věci: emulátor terminálu a kompletní prostředí příkazové řádky. Po prvním spuštění si stáhne do svého úložiště základní prostředí, které obsahuje 55 balíčků:
apt, bash, busybox, bzip2, ca-certificates, command-not-found, coreutils, curl, dash, diffutils, dos2unix, dpkg, ed, findutils, game-repo, gawk, gpgv, grep, gzip, inetutils, less, libandroid-glob, libandroid-support, libbz2, libc++, libcrypt, libcurl, libgcrypt, libgmp, libgpg-error, libiconv, liblzma, libmpfr, libnghttp2, libutil, ncurses, net-tools, openssl, patch, pcre, procps, psmisc, readline, science-repo, sed, tar, termux-am, termux-exec, termux-keyring, termux-licenses, termux-tools, unzip, util-linux, xz-utils, zlib
Jak vidíte, jedná se vlastně o základ linuxové distribuce, najdeme tu balíčkovací systém, základní sadu běžných utilit a hlavně busybox. To je univerzální utilita, která dokáže zastat funkci desítek různých příkazů. Chová se podle toho, jakým názvem ji zavoláme. Takto dokáže pracovat jako ls
, ps
nebo třeba grep
.
Máme tedy základní funkční systém, do kterého vstoupíme jednoduše tím, že spustíme v Androidu aplikaci Termux. Tím získáme docela pěkně udělaný emulátor terminálu. Můžeme v něm volit písmo, barvu, kopírovat a vkládat text, otevírat více terminálových sezení či si přidat ke klávesnici vlastní lištu s přídavnými klávesami. To podstatné je ale uvnitř.
Ono to žije!
Celá „linuxová distribuce Termux“ žije v systémovém adresáři /data/data/com.termux/files/
. Tam najdete nainstalovaný software, konfigurační soubory i uživatelská data. Veškerý software v Termuxu je k tomuto zvláštnímu stavu upraven, takže počítá s jinými cestami.
Zároveň tu nemáte k dispozici žádné další uživatelské účty. Vše běží pod tím jedním uživatelem, jako aplikace samotná. Chová se to stejně, jako byste byli v Termuxu stále root. Máte možnost instalovat balíčky, zapisovat do všech souborů a celé prostředí klidně jedním příkazem smazat. V tomhle prostoru jste pánem vy a ne Android.
Je pochopitelné, že některé věci jsou tu jinak. Kromě zmíněných cest (pozor na shebang u skriptů) se například také nedostanete k nízkým TCP/UDP portům. Balíčky s tím počítají a ve výchozím stavu používají porty jako 8021, 8022 nebo 8080. Nemáte také možnost pochopitelně ovlivňovat systémovou konfiguraci, takže zapomeňte na editaci souborů ve skutečném /etc/
. Vy si budete muset vystačit s konfigurací uvnitř zapisovatelného úložiště.
Balíčky sem
Jako balíčkovací systém se používá standardní APT, který znáte třeba z Debianu nebo Ubuntu. K dispozici je více než tisícovka balíčků, jejichž zdrojové kódy najdete na GitHubu. K dispozici jsou editory, programovací jazyky, servery, síťové utility a další. Počet balíčků navíc průběžně stále roste.
Jsou podepsány vývojáři Termuxu a existují také tři oficiální přídavné repozitáře:
- termux-root-packages obsahuje balíčky vyžadující root systému
- x11-packages nabízí grafické desktopové aplikace
- unstable-packages zase sdružuje vývojové či rozbité balíky
Správa balíčků je jednoduchá, buď použijete jednoduchou utilitu pkg
nebo rovnou zavoláte apt
, jak jste zvyklí. Výsledek bude v každém případě stejný, balíček se běžným způsobem stáhne a nainstaluje, případně můžete klasicky aktualizovat.
Integrace se systémem
Termux má volitelně možnost přistupovat také k datům původně patřícím Androidu. Slouží k tomu utilita termux-setup-storage
, která osloví systémové API s požadavkem pro přidání příslušného oprávnění. Pokud uživatel prosbu odsouhlasí, vznikne v domovském adresáři Termuxu několik symlinků:
shared
– adresář sdílený mezi aplikacemidownloads
– soubory stažené prohlížečemdcim
– adresář s fotkami a videipictures
– úložiště obrázkůmusic
– hudba pro přehrávačemovies
– videa pro přehrávačeexternal
– karta (pokud je přítomna)
Při přístupu k nim tedy můžeme pracovat se soubory, které jsme získali z jiných aplikací. Například stáhneme komprimovaný archiv, v Termuxu si ho rozbalíme, promažeme, zabalíme a zase pošleme jinou androidí aplikací pryč.
Termux nabízí také několik volitelných doplňků, které umožňují jít ještě dále a například volat androidí API ze skriptů nebo naopak spouštět skripty rovnou z prostředí Androidu. Rozšíření, která jsou k dispozici v podobě samostatných aplikací pro Android:
- Termux:API – přístup k API Androidu z Linuxu
- Termux:Boot – spustí skripty po startu Androidu
- Termux:Float – terminál v plovoucím okýnku
- Termux:Styling – barevná schémata a fonty
- Termux:Tasker – možnost volat příkazy z Taskeru (a kompatibilních)
- Termux:Widget – spouštění akcí z obrazovky Androidu
K čemu je to dobré?
Můžete na cestách zpracovávat data v Pythonu, synchronizovat soubory po síti, programovat v jednom z mnoha jazyků, debugovat místní síť, automatizovat různé úkony, spouštět připravené skripty a vůbec tuhle neobvyklou linuxovou distribuci používat skoro jako běžnou linuxovou distribuci.
Já osobně nejvíce Termux používám kvůli plnohodnotnému OpenSSH jako klient i jako server pro nahrávání souborů do telefonu. K dispozici je i Mosh, takže připojení k různým linuxovým zařízením funguje jako z jakéhokoliv jiného systému. Když k tomu všemu připojíte ještě bluetoothovou klávesnici, máte Linux v kapse kdekoliv na cestách.