Android na smartfonie jako wstęp do Linuxa. Czyżby?¶

2020/12/11
Posiadam od czasu pewnego smartfona, Samsung Galaxy J4+. Nie byłem entuzjastą tego typu zabawek i nadal nie jestem, ale - w pewnej mierze - zmusiły mnie okoliczności, praca, do posiadania. Przez lata wystarczał mi stary model telefonu komórkowego, gdzie tylko odebrać rozmowę, raz na miesiąc zadzwonić…
Może to wydać się dziwne tym, którzy wiedzą, że około 15 lat życia chleb jadłem ze znajomości internetu i programowania. Proszę bardzo, dziwcie się ;)
Wcześniej jednak internet funkcjonował całkiem inaczej. Od chwili, gdy w zasadzie wszyscy posługują się nim, w tym zupełni ignoranci, łapę nad nim położyło państwo i te wszelkie Google, Facebooki. Mnie to nie odpowiada i mierzi…
W sumie więc zainteresowanie tym, jak działa smartfon odeszło na plan dalszy.
Wiem, że Android jest głównym systemem operacyjnym używanym na smartfonach.
Android to wersja Linuksa, stworzona w oparciu o jądro Linuksa, przez Google. Przypuszczam, że nie całkiem legalnie stworzona i funkcjonująca (sprawa wcale trywialna nie jest z punktu prawa), ale zapewne doszło do jakiejś ugody między właścicielem znaku towarowego Linux (Linus Torvalds) i społecznością linuksową, a Google.
Miałem przez długi czas przeświadczenie, że zabawki z Android mogłyby posłużyć dla ich użytkowników jako narzędzie do nauki Linuksa. Wierzyłem w to przez parę lat, bez sprawdzenia.
Niestety nie jest tak. Owszem, pewnych spraw można nauczyć się na smartfonie. Trudno jednak myśleć poważnie o wykorzystaniu smartfona z Android jako zamiany za dostęp do komputera z zainstalowanym Linuksem. Nie ma o tym mowy.
Wydawało mi się też, że smartfon możnaby wykorzystać w sposób znacznie bardziej ciekawy i efektywny, niż jedynię zabawkę, jaką jest teraz. Sądziłem, że rzeczą oczywistą i naturalną jest, że tam na pewno możliwy jest dostęp do pełnego systemu operacyjnego, że każdy może urządzenie podłaczyć do swego laptopa i wyświetlać obraz ze smartfona na ekranie laptopie, że można korzystać z myszy i klawiatury zewnętrznej (bez których, w mym odczuciu - nie ma zupełnie mowy o poważnym używaniu urządzenia; dotyczy to zreszta także i laptopa).
Owszem, można. Nie zawsze, nie w przypadku każdego modelu, ale można. Tyle, że te funkcje tak naprawdę pozostają do wykorzystania jedynie dla osób, które naprawdę dobrze znają się na technicznych sprawach. Albo pozostają dla genialnych, ciekawskich, technicznie ukierunkowanych dorastających dzieci.
Przede wszystkim dostęp do systemu operacyjnego został przemyślanie i z premedytacją uniemożliwiony (albo co najmniej mocno utrudniony) w sposób sztuczny przez same firmy produkujące swoje urządzenia dla pospólstwa. Można zgadywać, że uniemożliwienia/utrudnienia zostały wprowadzone za zachętą (jeśli nie pod przymusem) służb bezpieczeństwa w krajach, w których urządzenia są sprzedawane.
Trzeba mieć na uwadze, że smartfon to może być tak potęźne narzędzie jak pistolet na prawdziwe naboje albo karabin. Nie jestem przeciwnikiem posiadania broni przez zwykłych ludzi (mimo, że sam jej nie mam, nie zamierzam mieć i nie lubię). Nie jestem zwolennikiem ograniczania dostępu do funkcji w Android. Zgaduję, że zapewne istnieje podziemny rynek dla czarnych hakerów w tych specjalnościach, oczywiście nasiąknięty wtykami ze spec-służb.

Architektura Androida
Zobaczmy, jakie są dane techniczne mojego konkretnie telefonu.
Smartfon: Samsung Galaxy J4+ https://www.mgsm.pl/pl/katalog/samsung/galaxyj4plusdualsim/
RAM 2 GB Dysk: 32 GB System operacyjny Android 8.1 Oreo Procesor 4x ARM Cortex A53 do 1,4 GHz
A więc liczba rdzeni: 4
Z tym, że liczby rdzeni obliczeniowych na smarfonie nie należy liczyć tak samo, jak na laptopie. Niektóre rdzenie pełnią funkcje specjalistyczne.
Tym niemniej, przy tej liczbie rdzeni i częstości zegara (a wiele nowszych zabawek ma znacznie lepsze parametry techniczne) możnaby śmiało mieć w zasięgu ręki drugi komputer do potężnych obliczeń naukowych. Zaś przy wykorzystaniu jeszcze smartfona żony - trzeci. Przy wykorzystaniu zabawek dzieci, jeśli ktoś je ma a i one mają androida - czwarty i piaty. To już dawałoby takie moce obliczeniowe, że hej!
Rooting
Droga do pełniejszego wykorzystania Androida wiedzie poprzez rooting, czyli poprzez uzyskanie pełnego (ściślej - prawie pełnego) dostępu do systemu operacyjnego: możliwości dokonywania dowolnych zmian, uzyskania pozwoleń administratora. Wstępny opis znajdziemy tutaj:
https://www.androidcentral.com/root
Ale, jak napisałem, nie jest to sposób dla każdego. No i tak naprawdę, rooting pozwala uzyskać dostęp do systemu, ale nie daje praw zmieniania funkcjonowania jądra. Do tego trzebaby skompilować sobie system od nowa ze źródeł, a to raz, że nie zawsze jest możliwe, bo kod źródłowy może nie być publicznie dostępny, a dwa - jest bardzo ryzykowne: przy instalacji nowej wersji można zniszczyć swą zabawkę nieodwracalnie, poprzez błąd (błedy, czasem głupie, są popełniane w programowaniu zawsze, należy to przyjąć jako prawo przyrody). Czasem uszkodzony system mozna naprawić (nie zawsze) - to juz wyższa szkoła jazdy.
Android Studio
https://developer.android.com/studio <– stąd mozna sobie ściagnąć wersje Android Studio dla Windows, Mac, czy Linuksa.
To świetny sposób na uzyskanie (prawie) pełnej kontroli nad urządzeniem. Świetny też sposób do nauczenia się programowania w Java. Cuda można z tym robić.
Ale - to jest dla programistów, nie dla dzieci z ulicy.
SSH Server
https://techwiser.com/how-to-access-your-android-from-computer-using-ssh/
- SSH client on my laptop
- SSH server running on Android
- Download SSHelper for Android.
- Włączyć Wi-Fi na smartfonie
- Ustawić konfigurację SSH Server. Np port 2222
- Uruchomić Server SSH
Najpierw sprawdzam, czy samo połączenie ze smartfonem istnieje: Z laptopa w okienku terminalu pisze komendę:
>>>
ping 192.168.8.102
W odpowiedzi dostaję:
>>>
PING 192.168.8.102 (192.168.8.102) 56(84) bytes of data.
64 bytes from 192.168.8.102: icmp_seq=1 ttl=64 time=45.7 ms
64 bytes from 192.168.8.102: icmp_seq=2 ttl=64 time=53.3 ms
- Wykonuje połaczenie ssh:
>>>
ssh -ladmin -p 2222 192.168.8.102
password: *****
W .bashrc mam wpisany alias (krótka nazwa komendy):
>>>
alias J4='ssh -ladmin -p 2222 192.168.8.102'
Wpisując w oknie terminala J4 (+Enter) wykonuję komendę:
>>>
ssh -ladmin -p 2222 192.168.8.102
co oznacza: połącz mnie poprzez SSH z komputerem o adresie IP=192.168.8.102 jako użytkownika o nazwie admin
>>>
zbych@orion:~/www/Sphinx/TOOLS/BIBLIO/J4$ /sbin/ifconfig
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.8.137 netmask 255.255.255.0 broadcast 192.168.8.255
W moim przypadku używam w laptopie dostępu internetowego z sieci Play (dodatkowo z Play mam abonament telefoniczny plus internet na smartfonie). Play dostarczył mi router zewnętrzny (dzieki niemu pełny dostep do internetu ma również żona, ze swojego smartfona).
Router należy skonfigurować tak, by pozwalał na dostęp z urządzeń innych niż jedynie laptop, poprzez poprzez połaczenie Wi-Fi. W laptopie używam połaczenia z routerem albo z Wi-Fi, albo poprzez kabel, w zależności od nastroju/przypadku.
SSH musi być wczesniej uruchomione na telefonie.
Termux
Install Termux from Google Sklep:
https://wiki.termux.com/wiki/Main_Page
Termux is an Android terminal emulator and Linux environment application that works directly with no rooting or setup required. A minimal base system is installed automatically, additional packages are available using the package manager.
Przykład komend do instalacji dodatkowych pakietów oprogramowania (in Termux):
>>>
pkg install package-name
pkg upgrade
W moim przypadku - przywykłem do Midnight Commander do przegladania plików w systemie (MC jest dobry też do wielu innych zadań). Jego instalacji dokonujemy komendą:
>>>
pkg install mc
Ograniczone, acz potężne rozwiązanie: Chromecast

Rozwiązanie jest potężne. Ale tylko dla pasywnego wykorzystania smartfona. Nie zainstalujesz i nie skompilujesz na nim nowego oprogramowania i nie wykorzystasz jako stacji obliczeniowej.
W oparciu o: https://www.phonearena.com/news/How-to-quickly-turn-your-smartphone-into-a-desktop-PC_id114401 i inne strony.
External display A USB-C or Bluetooth keyboard and mouse
Chromecast pozwala połaczyć te zewnętrzne dodatkowe urzadzenia za pomocą mikro-USB uzywanego normalnie do ładowania baterii. Istotne jest, by USB było typu USB-C.
Czym jest Chromecast? https://en.wikipedia.org/wiki/Chromecast
Jako zewnętrzny monitor można wykorzystać monitor laptopa (poprzez łącze HDMI). Mozna też wykorzystać dodatkowy zewnętrzny ekran albo istniejący w domu odbiornik TV.
Nie zawsze możliwe jest zrobienie przewodowych połaczeń. Wygodniejszym rozwiązaniem jest wykorzystanie łaczy Wi-Fi między urzadzeniami.
Podsumowując:
Wrażenie moje jest takie, że owszem, można smartfona wykorzystać jako potężną zabawkę. Można sobie usprawnić wiele pracy.
Ale jako prawdziwy komputer wykorzystać się nie da, z powodu ograniczeń funkcjonowania i dostepu sztucznie wprowadzonych przez firmy produkujące urządzenia, czy to arbitralnie, czy też może (oraz?) pod presją rządów.