Béton brut

UserLAnd: chroot w kieszeni

2020-04-10

Gdybym zeskanował teraz domową sieć trafiłbym pewnie na nie mniej niż cztery komputery z Linuksem. A jeśli starczyłoby mi gniazdek, to mogę dobić i do dziewięciu. To nie mówi zbyt wiele o samym systemie, a więcej o mojej nieumiejętności używania innego środowiska. Może to Syndrom sztokholmski, ale czuję się z tym doskonale! Dla niektórych „rok Linuksa na biurku” zaczął się w 1997.

Niedawno zapytano mnie „czy możesz nauczyć mnie Linuksa”. Trochę się tym strapiłem, bo mogę oczywiście, tylko nie wiem, co rozumieć przez „Linuksa”? Czy uczenie kogoś powłoki, potoków i pisania pomocniczych skryptów to nauka Linuksa, czy na przykład Basha? Czy stawianie serwera HTTP to nauka Linuksa? Embedded? Rzuciłem okiem na spisy treści już napisanych książek typu „Wstęp do…” i wyszło mi, że zwykle jest to książka w której autor opisuje jak okiełznuje się jego ulubioną dystrybucję.

Dla mnie pytanie o „naukę Linuksa” jest jak pytanie o „naukę młotka”. Do stolarki, budowlanki, morderstwa powodowanego pasją? Nie wiem, jak do tego podejść. Żeby nie utykać w filozofii tego pytania przeskoczyłem na grunt twardszy, jak uczyć kogoś, kto może nie ma wystarczająco zasobów i intuicji żeby mógł wybrać jedną z miliona opcji. Zainstalować na komputerze jako główny lub drugi system? Ciężko. Wirtualna maszyna? Trochę pokracznie. Raspberry Pi? Ból tyłka. WSL? Obiecujące, ale mam zero doświadczenia i jak coś się wywali to nie będę umiał odkręcić.

I wreszcie wpadłem na rozwiązanie, które mi się spodobało.

Każdy telefon z Androidem chodzi pod kontrolą kernela Linuksa i jakiś śmieci na górze, które służą do wyświetlania reklam. Teoretycznie nic nie stoi na przeszkodzie żeby „dorobić” telefonowi przedrostek GNU/. Przez lata było kilka takich projektów, nigdy nie przykładałem do nich jednak uwagi, gdyż jak wspomniałem na górze, mam dziewięć innych komputerów. Przebiegłem się po Biedronce Aplikacji i znalazłem jeden, który mi wybitnie odpowiada: UserLAnd.

Po pobraniu aplikacji i jej odpaleniu zostaniemy powitani przygotowanymi dystrybucjami, które możemy odpalić na swoim telefonie. Są to po prostu drzewa plików spakowane i gotowe do pobrania. Osobiście testowałem tylko Debiana, ale zakładam, że inne działają tak samo. Poza surowymi dystrybucjami można porać pojedyncze aplikacje, takie jak IDE Pythona, Firefoks, GIMP czy zork.

Wybór dystrybucji

Po kliknięciu rozpocznie się proces pobierania i ekstrakcji. Trzeba zwrócić uwagę na to, że pliki te trafią na miejsce z którego mogą być czytane przez inne aplikacje (albo nie: nie jestem na bieżąco z Androidem) więc składanie ważnych danych takich jak hasła, klucze SSH i dane osobiste nie jest polecane.

Konfiguracja użytkownika

Następnie zostaniemy poproszeni o podanie nazwy użytkownika i haseł do SSH i VNC. Nic prostszego.

Tworzenie połączenia

Potem deklarujemy jak się chcemy łączyć z naszą maszyną. Osobiście, co nie jest dziwne, preferuję SSH. Jak będę potrzebował okienek to zawsze mogę dodać -X.

I to wszystko. System podniesie się po chwili i możemy na niego wskoczyć. Ponieważ aplikacja nie może przypisać sobie niskich portów domyślnym jest 2022. Podczas uruchamiania sesji aplikacja będzie chciała użyć jednego z dostępnych klientów aby ustanowić połączenie na telefonie, ale możemy to zignorować. Ekran dotykowy plus magiczne | zaklęcia | z --toną --parametrów to nie jest świat w którym chcę żyć i którego i Wam nie życzę.

λ ~/ ssh emil@192.168.1.204 -p 2022
emil@192.168.1.204's password:
Welcome to Debian in UserLAnd!
emil@localhost:~$ uname -a
Linux localhost 4.9.117+ #2 SMP PREEMPT Thu Feb 13 01:10:05 CST 2020 aarch64 GNU/Linux

I już mamy „prawdziwego Linuksa” chodzącego pod kontrolą kernela dostępnego w Androidzie. Czy to metoda „lepsza” niż te, które wspomniałem wyżej? Wątpliwe. Ale wydaje się najmniej skomplikowana i inwazyjna.

QR for UserLAnd: chroot w kieszeni