Aus Linux-Magazin 05/2021

Gut ausgestattete Linux-Distributionen auf Android-Smartphones

© Alexander Savchenko / 123RF.com

Smartphones werden immer leistungsstärker. Wie wäre es, das Smartphone oder Tablet wie einen richtigen Computer zu benutzen – mit Monitor, Tastatur, Maus und vielleicht externem Speicher?

Will man sich in das Abenteuer stürzen, das Smartphone zum PC umzufunktionieren, muss man es im ersten Schritt mit den nötigen Peripheriegeräten ausstatten.

Zuerst kommt der Monitor an die Reihe. Spätestens, seit der neuere USB-C-Anschluss verbaut wird, können Android-Smartphones grundsätzlich ihr Bild auf einem Monitor oder Fernseher ausgeben. Allerdings machen da nicht alle Handys mit; manche – etwa die von Sony – erkennen den notwendigen Adapter einfach nicht.

Das heißt aber nicht, dass man hier schon aufgeben müsste: In solchen Fällen kann man mit drahtlosem Screen Sharing Erfolg haben, etwa mit Google Cast. Der Autor hat ebenfalls gute Erfahrungen mit Miracast auf LG- und Sony-Geräten gemacht (auch Screen Share oder Screen Mirroring genannt), wofür man keine Google-Dienste benötigt. Miracast ist ein Standard der WiFi Alliance, der zwei Geräte drahtlos via WiFi Direct verbindet und in die Android-Versionen ab 4.2 und bis 6.0 integriert war. An seine Stelle trat danach Googles Chromecast.

Eine Maus oder Tastatur anzuschließen, ist ebenfalls kein Problem, entweder über Bluetooth oder mit einem passenden Adapter. Der Autor verwendet einen kombinierten USB-C-Type-C-to-HDMI-HDTV-Adapter. Der bietet einen HDMI-, einen USB-C- und einen USB-A-3.0-Anschluss. Weil der Adapter sehr warm wird, benötigt er einen passiven Kühlkörper.

Am USB-A-Anschluss steckte der Autor einen kleinen Zweifachverteiler an, in dem auch eine MicroSD-Karte Platz findet. Dazu musste er den Verteiler seitlich schmaler schleifen, um für den breiten HDMI-Stecker Platz zu machen. Eine kleine Verlängerung oder ein anders gestalteter Verteiler löst das Problem gegebenenfalls auch. Es gibt zudem Adapter, die vier unabhängige USB-A-Anschlüsse bieten.

Im Smartphone des Autors werkelt ein Qualcomm Snapdragon 845 von 2018 mit 8 Kernen und 4 GByte RAM [1] inklusive einer GPU Adreno 630. Seine Tochter hat ein Smartphone mit dem Nachfolger Snapdragon 855 und 6 GByte RAM plus einer GPU Adreno 640.

Die Software

Android 10 bringt einen neuen Desktop-Modus mit, den es beim Anschluss eines HDMI-Adapters aktiviert. Je nach Hersteller funktioniert das mehr (Samsung, Huawei) oder weniger (LG) ausgereift. Der Modus lässt sich zugunsten einer einfachen Bildschirmspiegelung auch abschalten. Egal, wie man sich entscheidet, die LG-Smartphones geben immer Full-HD mit 60 Hz aus. Android-Apps müssen häufig noch an diesen neuen Desktop-Modus (Breitformat) angepasst werden.

Um überhaupt herkömmliche Linux-Applikationen unter Android laufen lassen zu können, gilt es, auf dem Smartphone eine Linux-Laufzeitumgebung zu emulieren. Das übernimmt das Projekt UserLAnd [2]. Die Software steht auf F-Droid und im Google Play Store zur Verfügung. Man kann Sie auch selbst kompilieren – dazu später mehr. Rooten ist nicht erforderlich, und man benötigt auch keine Google-Dienste.

Die Darstellung der Bildschirminhalte des Smartphones übernimmt ein VNC-Viewer, der ebenfalls auf dem Smartphone läuft und das Bild dann aber zum externen Monitor sendet. Dafür stehen diverse Viewer zur Auswahl, bVNC Free und RealVNC kann der Autor empfehlen. Theoretisch könnte der Viewer auch auf dem PC laufen, aber der soll ja gerade entlastet werden. Außerdem würde sich die Übertragung des Bildschirminhalts über WLAN in diesem Fall womöglich zäh anfühlen. Die VNC-Session läuft im Smartphone über die Localhost-Adresse 127.0.0.1:5951.

Um den Bildbereich des externen Monitors komplett auszufüllen, muss man gegebenenfalls das Format auf 16:9 einstellen. RealVNC v3.6.1 kommt mit dem Android-10-Desktop-Modus gar nicht zurecht, bVNC gibt immer ein etwas zu helles Bild aus. Dafür bietet bVNC einen gut skalierten Mauszeiger, zumindest im Desktop-Modus. Falls der Desktop nicht komplett sichtbar ist oder man einen Teilbereich vergrößern möchte, kann man das mit einer Zweifingergeste auf dem Smartphone einstellen.

Abbildung 1: In kurzer Zeit ist das Smartphone einsatzbereit.

Abbildung 1: In kurzer Zeit ist das Smartphone einsatzbereit.

UserLAnd

UserLAnd bietet recht nutzerfreundlich die (Basis-)Installation von Distributionen wie Alpine, Arch, Debian, Kali und Ubuntu an. Daneben kann man einen Desktop mit LXDE oder XFCE wählen oder nur einzelne Applikationen wie Firefox, LibreOffice, Octave, Gimp, zwei Spiele und andere.

Die Desktop-Umgebung LXDE bietet einen guten Einstieg und bringt Firefox bereits mit. Würde man mehrere Desktop-Umgebungen oder einen Desktop und zusätzlich einzelne Applikationen installieren, so würde UserLAnd jede dieser Komponenten mit einer eigenen Laufzeitumgebung in einer eigenen Session ausstatten. Das verbraucht sehr viel Platz, allein für Gimp zum Beispiel 850 MByte im Dateisystem. Da erscheint es besser, sich für nur einen Desktop oder eine Distribution zu entscheiden und die dann intern individuell auszubauen. So benötigt Gimp lediglich 80 MByte extra.

Probiert man eine Distribution und wählt Ubuntu, startet zunächst der Windowmanager Twm mit einem Xterm-Fenster. Hier kann man jetzt grundlegende Tools und den LXDE-Windowmanager nachinstallieren (Listing 1, erste zwei Zeilen), was 20 bis 40 Minuten dauert. Firefox ist schon dabei. Im Anschluss empfiehlt es sich, die Bildschirmauflösung an den verwendeten Monitor anzupassen. Dazu editiert man die Datei »~/.vncrc« mit einem Editor wie Leafpad oder Vi und startet danach die Session neu. Wichtig ist auch das Einstellen der Zeitzone (Listing 1, letzte Zeile).

Listing 1

Grundeinrichtung

$ sudo apt-get update
$ sudo apt-get install vim dialog tasksel lxde
$ sudo dpkg-reconfigure tzdata

Ausbau

Die Linux-Welt ist jetzt zugänglich: »lsb_release -a« meldet »Ubuntu 18.04.5 LTS«, und »uname -a« verrät die Prozessorarchitektur – beim Snapdragon 845/855 »aarch64«. Als Erstes möchte man vielleicht das Hintergrundbild, die Schriftgröße oder das ganze Theme einstellen.

Apropos Hintergrundbild: Unter Android 10 ist das Dateisystem wegen der dortigen Sicherheitsrichtlinien nicht sofort zugänglich. Das Feature nennt sich Scoped Storage und bewirkt, dass eine App nur auf App-spezifische Verzeichnisse zugreifen darf. Es gibt hier einen vom UserLAnd-Projekt empfohlenen Weg zum Importieren von Dateien in die Linux-Session [3]. Außerdem lassen sich diese Sicherheitseinstellungen umgehen, wenn man sich des Risikos eines solchen Eingriffs bewusst ist.

Ein Testzugriff auf den internen Speicher und die SD-Karte(n) gelingt mit den Kommandos aus Listing 2. Im Verzeichnis »storage/« sollten die SD-Karte(n) und USB-Sticks als Verzeichnisse mit neunstelligen Nummern auftauchen. »emulated/0/« ist üblicherweise der Pfad zum internen Speicher. Wo die Kamera ihre Fotos und Videos ablegt, gibt es ein Verzeichnis DCIM. Daneben sollte es andere, bekannte Verzeichnisse geben wie etwa »Android/data/«. Gegebenenfalls gilt es, die herstellerspezifischen Pfade herausfinden.

Listing 2

Testzugriff

$ ls /host-rootfs/storage
$ ls /host-rootfs/storage/emulated/0

Unter Android 10 oder höher kann man allerdings nicht direkt auf die Pfade zugreifen: »Permission denied«. Dann muss man entweder die Hinweise des UserLAnd-Tutorials [3] beachten oder den Abschnitt “UserLAnd selbst kompilieren” weiter unten anschauen.

Der Systemausbau geht jetzt mit Anwendungen wie einem Büropaket, C, Java, Gimp, VLC oder Spielen [4] weiter (Listing 3, Zeile 1 bis 4). OpenJDK 11 JRE ist bei LibreOffice bereits dabei. Eine Vielzahl weiterer Programme lässt sich ebenso leicht einrichten, beispielsweise Octave, Gnuplot oder Inkscape (Abbildung 2).

Listing 3

Systemausbau

$ sudo apt-get install libreoffice thunderbird
$ sudo apt-get install gcc g++ make
$ sudo apt-get install gimp vlc
$ sudo apt-get install xboard crafty scid fruit stockfish
$ sudo apt-get install cups hp-ppd hplip iputils-ping system-config-printer
Abbildung 2: Mit wenig Aufwand laufen schon LXDE, Firefox, Thunderbird, und das LibreOffice Paket.

Abbildung 2: Mit wenig Aufwand laufen schon LXDE, Firefox, Thunderbird, und das LibreOffice Paket.

Erste Schwierigkeiten mit Eclipse und CUPS

Unvermutet schwierig gestaltet sich das Installieren der Eclipse-IDE für Java; »sudo apt-get install eclipse« führt nicht zum Erfolg. Im Internet wird die Verwendung von Snap empfohlen, aber dieses Tool konnte der Autor auch nicht zum Laufen bringen. Glücklicherweise kann man die IDE auch vorkompiliert von Eclipse.org herunterladen [5]. Unschön ist, dass man sie dann von Hand in das Dateisystem kopieren muss (üblicherweise nach »/usr/lib/eclipse/« mit einem Start-Link in »/usr/bin/«) und sie sich nicht ins Startmenü einträgt.

Auch das Drucken mit CUPS gelingt nicht sofort. Für einen Drucker von HP genügt aber die Installation weniger Komponenten (Listing 3, letzte Zeile). Im Test schlug das Drucken allerdings zunächst fehl. Als Ursache ließ sich die Datei »/data/user/0/tech.ula/files/support/libcrypto.so.1.1« ermitteln. Der Autor löste das Problem mit dem in Listing 4 gezeigten Workaround. Ärgerlicherweise stellt Android die »libcrypto.so.1.1« nach jedem Neustart wieder her, das Skript muss also pro Session einmal laufen. Das UserLAnd-Projekt behebt diesen Fehler jedoch möglicherweise schon bald.

Listing 4

libcrypto.so-Workaround

$ mv /data/user/0/tech.ula/files/support/libcrypto.so.1.1 /data/user/0/tech.ula/files/support/libcrypto.so.1.1_orig
$
 cp /usr/lib/aarch64-linux-gnu/libcrypto.so.1.1 /data/user/0/tech.ula/files/support
$ sudo /etc/init.d/cups start

Nach dem Ersetzen der »libcrypto.so.1.1« gilt es abschließend noch, »system-config-printer« zu konfigurieren. Dazu installiert man das Werkzeug noch einmal, startet es und bindet damit (WLAN)-Drucker sehr komfortabel ein. Danach steht der Drucker vielen Programmen zur Verfügung.

Tonausgabe, OpenGL und Kameras

Es gibt eine gute Anleitung zur Benutzung des Android-Soundsystems [6]. Man leitet dafür die Tonausgabe via TCP auf einen anderen Android-Prozess aus. Zuerst muss man die Android-App Termux installieren. Darin fügt man die ersten zwei Zeilen aus Listing 5 an die »~/.bashrc« an. In UserLAnd installiert man anschließend das Paket pulseaudio und fügt die letzte Zeile aus Listing 5 in die ».bashrc« ein.

Listing 5

Ergänzungen in der .bashrc

pulseaudio --start --exit-idle-time=-1
pacmd load-module module-native-protocol -tcpauth-ip-acl=127.0.0.1 auth-anonymous=1
export PULSE_SERVER="127.0.0.1"

Jetzt kann der VLC-Player auch den Ton ausgeben, und viele tolle Spiele (Maelstrom und andere) laufen. Allerdings ließ sich bis Redaktionsschluss OpenGL nicht installieren, sodass etliche andere Spiele nur eine Fehlermeldung ausgeben. Der Zugriff auf die Kameras des Smartphones klappt im Moment ebenfalls nicht. Eine Webseite des Hasso-Plattner-Instituts [7] kann Kameras testen, findet aber keine installierte.

Spiele

Die Spieleliste von Ubuntuusers.de [4] verzeichnet eine große Zahl an Spielen; der Autor konnte nur wenige selbst prüfen. Manche verweigern komplett den Start, wenn man nicht vorher die Tonausgabe oder OpenGL einrichtet. Einige Spiele laufen aber und lassen sich einfach installieren, darunter Pingus, Maelstrom und Gnome-Sudoku sowie Xboard mit den Schach-Engines Crafty und Fruit (Abbildung 3).

Abbildung 3: Crafty und Fruit sind starke Engines, die hier unter Xboard gegeneinander spielen.

Abbildung 3: Crafty und Fruit sind starke Engines, die hier unter Xboard gegeneinander spielen.

Die Performance

Nun hat man ein Linux-System, aber welche Leistung bietet es? Das kann man jetzt mit genau denselben Benchmarks wie auf einem echten PC testen und so die Ergebnisse direkt vergleichen. Sysbench erfordert kleine Anpassungen, die Listing 6 zeigt.

Listing 6

Benchmarking mit Anpassungen

$ sudo apt-get install sysbench hardinfo
$ cd /usr/lib/aarch64-linux-gnu
$ sudo mv libc.so libc_script.so
$ sudo ln -s /lib/aarch64-linux-gnu/libc.so.6 libc.so
$ sysbench --threads=8 cpu run
$ sysbench --threads=8 memory run
$ sysbench --threads=1 --file-test-mode=seqwr fileio run
$ sysbench --threads=1 --file-test-mode=seqrd fileio prepare
[... Reboot erforderlich ...]
$ sysbench --threads=1 --file-test-mode=seqrd fileio run

Das GUI-Tool Hardinfo ist auch vom verwendeten VNC-Viewer abhängig. RealVNC kann sich mit 1449 Punkten deutlich gegen bVNC mit nur 930 Punkten durchsetzen. Vor dem Test »seqrd fileio run« sollte man das Linux-System neu starten, um unrealistische Ergebnisse durch Caching zu vermeiden. Interessante Ergebnisse liefert auch die Phoronix-Testsuite [8] (Listing 7). Der Autor hätte auch gern die 3D-Grafiktests wie »unigine-heaven« daraus laufen lassen, doch die gibt es nur im Binärformat für x86_64-Rechner.

Listing 7

Phoronix-Testsuite

$ sudo apt-get install unzip gdebi-core
$ gdebi Downloads/phoronix-test-suite_10.0.1_all.deb
$ phoronix-test-suite run sunflow

Die Überraschung: Ein durchschnittlicher Familiencomputer deklassiert ein Smartphone zwar klar, kann es aber nicht total abhängen. Die 3D-Grafikleistung ist wahrscheinlich das einzige wirkliche Manko (Abbildung 4).

Abbildung 4: Die Smartphones halten einigermaßen mit PCs mit. Die Leistung genügt für allgemeine Büroaufgaben, das Surfen im Web und nicht zu anspruchsvolle Spiele.

Abbildung 4: Die Smartphones halten einigermaßen mit PCs mit. Die Leistung genügt für allgemeine Büroaufgaben, das Surfen im Web und nicht zu anspruchsvolle Spiele.

Alternative Browser

Während der Tests lief zeitweise Firefox nicht, etwa im Dezember 2020 aufgrund von Problemen mit Fonts. Dann lassen sich andere Browser installieren [9]. Nicht alle stehen für die ARM-Architektur bereit oder lassen sich installieren, aber Chromium und Epiphany funktionieren zum Beispiel. Für einen erfolgreichen Start muss man die Option »–no-sandbox« hinzufügen.

UserLAnd selbst kompilieren

Im Wesentlichen gibt es zwei Gründe, UserLAnd selbst zu kompilieren: Zum einen kann man damit die Android-10-Speicherrichtlinie umgehen (Abbildung 5), zum anderen hat man vielleicht neue Ideen und möchte am Projekt mitarbeiten. Besteht das Motiv darin, die Speicherrestriktionen abzuschalten, so sollte man sich unbedingt des Risikos bewusst sein, damit eine prinzipiell sinnvolle Sicherheitsbarriere zu entfernen.

Abbildung 5: Ein selbst kompiliertes UserLAnd erlaubt den Zugriff auf Android-Dateisysteme wie unter Android 9.

Abbildung 5: Ein selbst kompiliertes UserLAnd erlaubt den Zugriff auf Android-Dateisysteme wie unter Android 9.

Der Quellcode von UserLAnd lässt sich direkt von GitHub herunterladen [2] und dann bequem mit Android Studio 4.x [10] öffnen. Wer die neue Speicherrichtlinie umgehen will, der kompiliert UserLAnd mit einem älteren Android-SDK, etwa mit der Version 28, zu dessen Zeit es die Beschränkungen noch nicht gab. Hierzu muss man die Datei »app\gradle.build« an drei Stellen editieren (Listing 8). Den Versionsnamen müsste man nicht ändern; so sieht man aber gleich, was man gerade installiert hat.

Listing 8

Änderungen in app\gradle.build

compileSdkVersion 28
targetSdkVersion 28
versionName "2.7.2-Android9"

Wie üblich muss man das eigene Gerät als Entwicklergerät einstellen und das Software-APK vom PC aus mit Adb [11] oder über den Dateimanager im Gerät installieren. Ärgerlicherweise muss man vorher die offizielle UserLAnd-Version deinstallieren (wegen anderer oder fehlender Signierung) und verliert damit alle Daten sowie das eingerichtete Linux-System.

Grenzen und Probleme

Die wohl störendste Schwäche besteht in der begrenzten Anzahl (3 bis 6) offener Fenster, die sich im Laufe der Session noch verringern kann. UserLAnd meldet dann »Maximum number of clients reached. Failed to open display.«. Auch sehr störend ist, dass die Verbindung zum VNC-Server gelegentlich abbricht. Dann verliert man alle nicht gespeicherten Daten, weil man sich nicht mehr zur Session verbinden kann.

Die meisten VNC-Viewer können die sehr wichtigen Tastatureingaben [AltGr]+[Q] (“@”), [AltGr]+[+] (“~”), [AltGr]+[ß] (“\”) und [AltGr]+[<] (“|”) nicht übertragen. AndroidVNC hat das Problem nicht, wird aber nicht mehr gepflegt und weist viele andere Mängel auf. Der PC-Viewer von RealVNC hingegen überträgt die Tastenkombinationen korrekt.

Funkmäuse reagieren oft hakelig. Dabei scheint es sich um ein Hardware-Problem zu handeln, das sich auch über die Energiespareinstellungen nicht lösen lässt. Unschön ist auch, dass man eine Linux-Session nicht herunterfahren kann und sie stattdessen von Android aus stoppen muss.

Als Pluspunkt lässt sich das Dateisystem exportieren und als Backup verwenden – sehr praktisch auch für Übertragungen auf andere Geräte. Allerdings ist die Performance einer solchen Kopie nicht besonders gut.

Fazit

Das Zeitalter der vollwertigen Computer im Hosentaschenformat ist eingeläutet. Werden noch ein paar Kinderkrankheiten gelöst, lassen sie sich zu Hause uneingeschränkt nutzen. Viele grundlegende Anwendungen können die Smartphones bereits bedienen, für spezielle Aufgaben und 3D-Spiele mit hohen Anforderungen an Performance und Ressourcen hingegen benötigt man immer noch moderne Desktop-Computer oder Laptops. Der Autor besitzt eine Smartwatch mit Dual-Core-CPU und 4 GByte Hauptspeicher und fragt sich bereits, wann auch darauf eine Linux-Distribution laufen wird. (jcb/jlu)

Der Autor

Dirk Ambras arbeitet bei Airbus als IT-Experte. Früher war er bei Siemens als Betriebssystementwickler für Handys in den Bereichen Grafik, Spiele und Java tätig. Der Spaß am Umgang mit Embedded Devices hat ihn nie verlassen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben