In manchen Anwenderkreisen haben sich Chromebooks durchgesetzt, entgegen der Erwartung vieler Experten. Alle Arbeiten im Browser erledigen zu wollen, erschien als fragwürdiges Konzept, sobald es um mehr als Textverarbeitung und eben das Browsen an sich ging. Offenbar hatte Google allerdings bereits 2011 ein gutes Verständnis für den Markt, der damals noch als Zukunftsvision betrachtet werden musste. Einige Jahre später wurde deutlich: im Browser kann man tatsächlich fast alles machen.

Für Entwickler sind Anwendungen auf Basis von HTML und JavaScript zum Alltag geworden, und der Betrieb solcher Anwendungen im Web der Vergangenheit – also mit einem „richtigen“ Webserver, der am Rendern der Seiten beteiligt ist – stellt mittlerweile nur eines von vielen unterschiedlichen Szenarien dar. Chromebooks haben von dieser Entwicklung profitiert, indem es für Anwender immer plausibler wurde, dass mit den Geräten tatsächlich alltägliche Arbeiten problemlos erledigt werden können. Studenten bilden nun eine der größten Anwendergruppen, aber auch für den privaten Einsatz oder gar das Kinderzimmer sind Chromebooks recht beliebt.

Technisch basieren Chromebooks auf Linux. Diese Tatsache machten sich findige Anwender schnell zunutze, um abgesehen von der kontrollierten Umgebung Chrome OS auch eigene Linux-Distributionen laufen zu lassen. So gibt es zum Beispiel seit 2013 Crouton, mit dem im Entwicklermodus von Chrome OS eine parallele Umgebung verwendet werden kann, die vom Hauptsystem getrennt ist. Oder zumindest sollte diese Umgebung getrennt sein – Fachleute haben gewisse Sicherheitsbedenken, die durchaus berechtigt sein könnten und angesichts der notwendigen Umschaltung in den Entwicklermodus auch nicht überraschen sollten. Alternativ bietet chrx die Möglichkeit, Linux-Distributionen separat zu installieren und zu booten. Das ist sicherer, aber natürlich auch wesentlich weniger praktisch, da keine Integration zwischen Chrome OS und den parallel installierten Linuxen existiert.

Crostini betreibt Linux in VMs und Containern

Seit 2018 arbeitet Google nun an eigenen Plänen, Linux-Anwendungen für Chromebook-Nutzer verfügbar zu machen. Dieses Projekt heisst Crostini und ermöglicht die Verwendung von Linux parallel zum Betrieb von Chrome OS, aber ohne den Entwicklermodus mit seinen sicherheitstechnischen Nachteilen vorauszusetzen. Das System basiert auf virtuellen Maschinen (VMs) und Containern, mit Standardbausteinen wie KVM als Hypervisor und Linux containers (LXC).

Auf den meisten modernen Chromebooks ist es mittlerweile einfach, Linux zu benutzen. Das Feature muss extra aktiviert werden, da es sich noch im Betastadium befindet. Eine kurze Anleitung dazu gibt es allerdings in der offiziellen Chromebook-Hilfe online, und der Vorgang ist nach einigen Mausklicks erledigt. Ich selbst setze das System bereits seit den Anfangstagen ein und kann daher berichten, dass selbst nach vielen Updates und Entwicklungsschritten noch nie eine Neuinstallation der Linux-Umgebung auf meinem Gerät notwendig war – das ist beeindruckend!

Wenn Sie ganz tief in die Materie einsteigen wollen, empfehle ich die Lektüre der recht detaillierten Projektdokumentation. Der Einstieg ist allerdings wirklich einfach und schnell: nach der Aktivierung des Systems per Anleitung gibt es im Startmenü Einträge für Linux-Anwendungen. Dort ist ein Terminal schnell gestartet und schon kann es mit der Debian-Distribution losgehen, die während der Aktivierung des Subsystems automatisch aufgesetzt wurde. Standardsoftware von Debian Buster lässt sich gleich per apt installieren, und wer schon zuvor ein Linux-System von der Kommandozeile aus gepflegt hat, findet sich schnell zurecht. Ansonsten empfehle ich, einschlägige Artikel zur Paketverwaltung in Debian zu lesen. Synaptic ist ein Paketmanager mit grafischer Oberfläche, der in Debian typischerweise zum Einsatz kommt. Damit gelingen hoffentlich auch dem Linux-Neuling der Einstieg und die Installation einiger Softwarepakete.

Container auf Chromebooks: Abbildung - Anwendungssoftware mit grafischer Oberfläche erscheint direkt im Chromebook-Startmenü

Container auf Chromebooks: Anwendungssoftware mit grafischer Oberfläche erscheint direkt im Chromebook-Startmenü

Was man nun gar nicht sieht, wenn man mit Linux-Anwendungen auf dem Chromebook arbeitet, ist die zugrundeliegende Struktur auf Basis von VMs und Containern. Allerdings liefert das System alle Werkzeuge mit, um auf dieser Ebene aus Neugierde zu recherchieren oder das System zu eigenen Zwecken zu erweitern. Erster Anlaufpunkt ist die Chrome OS shell, kurz „crosh“. Diese rufen Sie aus einem Chrome-Fenster heraus mit der Tastaturkombination Ctrl-Alt-T auf, und je nach Systemversion erscheint sie entweder in einem eigenen Fenster oder in einem Browser-Tab.

Die Chrome OS shell verwaltet virtuelle Maschinen im System…

In crosh gibt es viele Kommandos, und eine eingebaute Dokumentation lässt sich mit help und help_advanced anzeigen. Einzelne Kommandos bieten auch ihre eigene Syntaxhilfe an, hier etwa die zum Kommando vmc.

Container auf Chromebooks: Abbildung - Das Kommando vmc erklärt sich zum Teil selbst

Das Kommando vmc erklärt sich zum Teil selbst

Das Kommando dient zur Verwaltung von virtuellen Maschinen im System, und der Ausgabe von vmc list können Sie entnehmen, dass es eine solche Maschine bereits gibt: „termina“. Es ist möglich, mit vmc create weitere VMs zu erzeugen, und diese dürfen auch auf unterschiedlichen Images basieren. Allerdings habe ich mangels Dokumentation bisher nicht viel mit VM-Images experimentiert, sondern bin beim Standard-Image geblieben. Für viele Zwecke ist es auch gar nicht notwendig, weitere VMs zu verwenden, denn in der Standard-VM laufen als zusätzliche Abstraktionsebene nebeneinander mehrere Container.

Um die Container innerhalb der VM sehen zu können, müssen Sie sich mit dem Kommando vsh mit der VM verbinden. Die virtuelle Maschine läuft parallel zum Basissystem des Chromebooks, vereint allerdings die Prozesse aus laufenden Containern – ganz so, wie man das etwa auf einem ausgewachsenen Linux-System mit laufenden Docker-Containern auch erwartet. In der folgenden Konsolenausgabe können Sie deutlich sehen, dass das Kommando ps fx in einem ganz anderen Teil der Prozesshierarchie angezeigt wird als die beiden zsh-Prozesse, die von einem anderen Terminalfenster aus gestartet wurden. Diese beiden Prozesse laufen in demselben Container, obwohl sie auf unterschiedlichem Wege gestartet wurden.

(termina) chronos@localhost ~ $ ps fx
PID TTY STAT TIME COMMAND
508 ? Ss 0:00 /lib/systemd/systemd --user
522 ? S 0:00 \_ (sd-pam)
...
1193 ? Ssl 0:11 \_ /opt/google/cros-containers/bin/../lib/ld-linux-x86-64.so.2 ...
1241 ? Ss 0:00 | \_ /bin/sh /usr/local/bin/dbus-terminator
1242 ? S 0:00 | \_ /usr/bin/dbus-run-session -- /usr/bin/terminator
1243 ? S 0:00 | \_ dbus-dämon --nofork --print-address 4 --session
1244 ? Sl 0:08 | \_ /usr/bin/python3 /usr/bin/terminator
1283 pts/0 Ss+ 0:00 | \_ /bin/zsh
1284 pts/1 Ss 0:05 | \_ /bin/zsh
...
6748 ? S 0:00 vshd
6749 pts/1 Ss 0:00 \_ -bash
7221 pts/1 R+ 0:00 \_ ps fx

(termina) chronos@localhost ~ $

… und in virtuellen Maschinen laufen Container

Zur Verwaltung von Containern auf dieser Ebene dienen die Kommandos aus dem LXD-Paket – verwirrenderweise heisst das Hauptkommando lxc. Mit lxc list lässt sich etwa eine Liste der bekannten Container anzeigen. Der Container „penguin“ ist der Standardcontainer, den Chrome OS für das Linux-Subsystem erzeugt hat.

Container auf Chromebooks - Abbildung - Container "penguin"

Das Kommando lxc kennt viele Unterkommandos, mit deren Hilfe Sie Container starten und stoppen können, Snapshots erzeugen, auf die Inhalte laufender Container zugreifen und andere Verwaltungsaufgaben ausführen können. Zur Installation von Containern sind Images notwendig, die aus verschiedenen Repositories heruntergeladen werden können. Mit lxc remote list werden die konfigurierten Repositories angezeigt. Natürlich können Sie auch eigene Repositories hinzufügen und eigene Images erzeugen. Das Tool distrobuilder des LXC-Projektes steht hierzu frei zur Verfügung.

Container auf Chromebooks: Abbildung - Eigene Repositories hinzufügen

Obwohl die Linux-Integration von Chrome OS automatisch nur einen Container erzeugt, können Sie beliebig weitere hinzufügen. Neue Container können entweder in der Standard-VM „termina“ laufen, oder in einer zusätzlichen VM, die Sie in crosh mit vmc create erzeugt haben. So lässt sich jeder beliebige Grad von Integration oder Separation erreichen. Im Beispiel sehen Sie, wie ein Container „k1“ für Kali Linux erzeugt und gestartet wird.

Container auf Chromebooks: Abbildung - Container für Linux erzeugen und starten

Wie schon eingangs beschrieben, sorgt die Standardinstallation von Linux auf dem Chromebook dafür, dass grafische Anwendungen im Startmenü angezeigt werden. Dazu wird übrigens der normale Linux-Mechanismus der .desktop-Dateien in /usr/share/applications verwendet, und Sie können auch eigene Zusätze wie gewohnt in ~/.local/share/applications ablegen. Wenn Sie auf diesem Weg eine grafische Anwendung starten, erscheint diese gewöhnlich wie erwartet auf dem Bildschirm. Falls Ihr Chromebook eine hohe Auflösung hat und daher mit einem ungewöhnlichen DPI-Wert läuft, können Sie über das Kontextmenü der Anwendung im Dock zwischen zwei DPI-Einstellungen umschalten.

Container auf Chromebooks: Abbildung - Linux-Anwendungen können mit unterschiedlichen DPI-Einstellungen laufen

Container auf Chromebooks: Linux-Anwendungen können mit unterschiedlichen DPI-Einstellungen laufen

 

Eigene Container können auch in Chrome OS integriert werden

Das Linux-Subsystem auf dem Chromebook enthält eine Wayland-Implementation. Wayland ist eine neuere Alternative zum alten UI-System X11, das unter Linux und anderen Unix-Derivaten seit vielen Jahren eingesetzt wird. Auch in vielen anderen Linux-Distributionen wird Wayland mittlerweile bevorzugt eingesetzt – ich verwende es gerade jetzt, während ich diesen Artikel schreibe –, aber es gibt natürlich noch immer viele Client-Anwendungen, die für X11 geschrieben sind. So muss das Chromebook-Linux also erstens seinen Desktop für den Linux-Container verfügbar machen, und zweitens für die Übersetzung von X11-Kommandos in ein Wayland-Format sorgen. Der Prozess Xwayland ist für den zweiten Punkt zuständig, dabei handelt es sich um eine Standardfunktion, die auch auf anderen Wayland-Linuxen typischerweise verfügbar ist.

Der erste Punkt hingegen wird von einem speziellen Subsystem von Crostini übernommen, das auf den klangvollen Namen „Sommelier“ hört. Wie für andere Komponenten von Crostini gibt es auch für Sommelier Quelltext und Beschreibung, falls Sie als Entwickler Interesse an den Details haben. Im Container selbst gibt es derzeit noch „Garcon“ als zusätzlichen Chrome OS-spezifischen Dienst. Wenn Sie nun einen eigenen Container erstellen und darin gern eine Integration ähnlich der des Standardcontainers „Penguin“ haben möchten, müssen Sie diese verschiedenen Dienste korrekt installieren und konfigurieren.

Je nach dem Linux-System Ihrer Wahl ist das entweder einfach oder komplex. Für Debian und verwandte Systeme wie Ubuntu gibt es das Paket „cros-guest-tools“, das sich über eine apt-Source installieren lässt. Für Arch Linux gibt es eine gute Beschreibung sowie ein entsprechendes Paket im AUR-Repository. In jedem Fall ist allerdings Know-How gefragt, wenn es zu Komplikationen kommt. Derzeit ist die einzige offiziell unterstützte Systemvariante das automatisch installierte Debian Linux.

Natürlich ist es für viele Einsatzzwecke gar nicht notwendig, grafische Anwendungen auszuführen. Allerdings stellt selbst die Hacker-Distribution Kali, die oben als Beispiel verwendet wurde, bereits zahlreiche Anwendungen mit grafischer Schnittstelle zur Verfügung. Ich selbst benutze gewöhnlich bei Bedarf einen Trick, der mir die Arbeit erspart, in einem Container die Chrome OS-Pakete installieren zu müssen. Der Trick ist einfach: ich benutze SSH.

Trick: X11 Forwarding in der SSH

Nun kennen Sie sicher SSH, die Secure Shell, die auf Unix-Systemen gern zu Zwecken wie Fernwartung eingesetzt wird. SSH unterstützt ein Feature namens „X11 Forwarding“. Dies macht es möglich, Anwendungen für X11 auf einem Computer laufen zu lassen, während ihre UI auf einem anderen Computer angezeigt wird. Tatsächlich ist dies ein Feature von X11 selbst – SSH sorgt lediglich dafür, dass die anfallenden Daten dieser Verbindung über einen sicheren Tunnel ausgetauscht werden.

Beachten Sie bitte, dass X11 Forwarding oft sowohl auf Server- als auch Clientseite einer SSH-Standardinstallation ausgeschaltet ist. Es ist nicht so, dass dieses System generell unsicher wäre, aber man ist sich einig, dass die Voreinstellung für ein komplexes Feature wie dieses am besten „aus“ ist. Im folgenden Beispiel verwende ich SSH lediglich für den Zugriff zwischen zwei Containern auf meinem lokalen System, so dass jede potentielle Angriffsfläche klein ist. Falls Sie vorhaben, ähnliche Mechanismen zwischen öffentlich zugänglichen Internetsystemen anzuwenden, ist Vorsicht geboten!

# Direkt in crosh / lxc shell wireshark starten - dies
# funktioniert nicht, da die UI nicht erzeugt werden kann.
root@k1:~# wireshark
15:18:40.120 Main Warn could not connect to display
15:18:40.120 Main Info Could not load the Qt platform plugin "xcb" in "" even though it was found.
Aborted (core dumped)

root@k1:~#

Wenn ich etwa im Container für Kali Linux das Tool “wireshark” (ein Netzwerkanalysewerkzeug) laufen lassen möchte, starte ich zunächst einen SSH-Server in dem Container. Dann verbinde ich mich aus meiner normalen Linux-Shell – diese läuft im Standardcontainer „Penguin“, mit Sommelier & Co – mit dem Kali-Container. Die Adresse des Containers im System finde ich in der Ausgabe von lxc list, und ich benutze die Option -X (ein großes X!) für das ssh-Kommando, so dass X11 Forwarding aktiviert wird.

root@k1:~# apt install openssh-server
...

# Falls erwünscht und notwendig, SSH-Server für
# den root-User zugänglich machen
root@k1:~# vi /etc/ssh/sshd_config
...

service ssh start

Bitte beachten Sie: in diesem Beispiel lasse ich den direkten Zugang für den User „root“ in den Kali-Container zu. Letztlich ist natürlich für das Beispiel eines Netzwerkmonitors immer ein User mit ausreichenden Hardwarezugriffsrechten erforderlich. Trotzdem sei davor gewarnt, root-Zugang über SSH zu ermöglichen! Generell ist es ein besserer Weg, einen zusätzlichen User anzulegen, der dann per sudo Rechte anfordern kann, wenn sie benötigt werden.

In der Shell, die durch SSH gestartet wurde, kann ich nun das Kommando wireshark ausführen, und das grafische Frontend der Anwendung erscheint wie erwartet.

Container auf Chromebooks: Abbildung - Wireshark läuft durch den SSH-X11-Tunnel zwischen den beiden Containern

Wireshark läuft durch den SSH-X11-Tunnel zwischen den beiden Containern

Virtuelle Maschinen und Container auf Chromebooks – Fazit

Es ist eine tolle Sache, was sich Google ausgedacht hat, um Chromebooks für verschiedene Anwender interessant zu machen. Natürlich laufen darauf noch immer all die Browseranwendungen, die man schon vor Jahren benutzen konnte. Zusätzlich lassen sich auch Android-Anwendungen direkt aus dem Play-Store installieren, und nun Linux!

Zum Abschluss sei erwähnt, dass selbst der Betrieb von Windows möglich ist – es gibt tatsächlich ein kommerzielles Produkt, das diese Virtualisierung ermöglicht, aber Sie können Windows auch auf Basis von QEMU/KVM unter Linux laufen lassen. So sind Chromebooks in jeder Hinsicht vollwertige PCs, sicherlich oft mit eingeschränkter Leistung, aber auch mit deutlich niedrigerem Preis als manch anderer Laptop.

 

Titelmotiv: Bild von Otto Garcia auf Pixabay

Oliver Sturm

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Die von Ihnen hier erhobenen Daten werden von der Host Europe GmbH zur Veröffentlichung Ihres Beitrags in diesem Blog verarbeitet. Weitere Informationen entnehmen Sie bitte folgendem Link: www.hosteurope.de/AGB/Datenschutzerklaerung/