Hlavní navigace

Termux: Linux ve vašem Androidu

 Autor: Termux project
Android je postavený na linuxovém jádře, ale běžný uživatel to na něm nijak nepozná. Pokročilému linuxákovi by třeba přístup k plnohodnotné konzoli vyhovoval, ale nechce kvůli tomu rootovat telefon. Termux je řešením.
Petr Krčmář 2. 9. 2020
Doba čtení: 4 minuty

Sdílet

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 aplikacemi
  • downloads  – soubory stažené prohlížečem
  • dcim  – adresář s fotkami a videi
  • pictures  – úložiště obrázků
  • music  – hudba pro přehrávače
  • movies  – videa pro přehrávače
  • external  – 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:

Cyber Security tip1

  • 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.