Konzipiert wurde Chrome OS eigentlich für den Privatanwender zum Surfen und für einfache Büroarbeiten. Mit der Erweiterung Crostini erschließt es Chromebooks aber ganz andere Potenziale.
Seit fast drei Jahren versucht Microsoft mit dem Windows Subsystem für Linux (WSL), Entwickler auf seiner Plattform zu halten oder gar von Linux und MacOS zurückzugewinnen. Einen ähnlichen Weg geht Google seit rund einem Jahr auch mit seinem Chrome OS, das eigentlich nie als Entwicklungsplattform vorgesehen war, sondern vielmehr für simple Büroarbeiten oder zum schlichten Konsum. Die Linux-App-Unterstützung in Chrome OS namens Crostini zeigt, dass das System tatsächlich Potenzial für viel breitere Einsatzzwecke bietet als bisher. Noch fehlen dazu aber einige Details.
Den Namen Crostini wählten die Entwickler als witzig gemeinte Anspielung auf das Crouton-Projekt [1]. Letzteres erlaubt seit einigen Jahren, Linux-Distributionen und deren Pakete unter Chrome OS zu verwenden, allerdings nur im sogenannten Entwicklungsmodus, in dem aber unter anderem die Sicherheitsfunktionen von Chrome OS nicht zur Verfügung stehen. Crostini soll Chrome-OS-Nutzern eine ähnliche Umgebung bereitstellen wie Crouton, dabei aber offiziell in den stabilen Codezweig von Chrome OS integriert sein.
Echtes Linux
Durch Crostini bekommen die Chromebook-Nutzer Zugriff auf eine Vielzahl von Anwendungen, die ebenso wie die Android-Unterstützung die gesamte Software-Auswahl sprunghaft vergrößern. Darüber hinaus lässt sich die Linux-Unterstützung auch aus technischer Sicht für Google wohl vergleichsweise einfach umsetzen.
Waren für das WSL noch diverse Verrenkungen nötig, verwendet Google für Crostini einfach den Linux-Unterbau von Chrome OS. Auch die Android-Integration leistete schon einige Vorarbeiten. Letztlich fasst das Team für Crostini viele moderne und für Linux typische Techniken zu einem sehr gut durchdachten Gesamtpaket zusammen, das den Entwicklern, die das System nutzen sollen, überraschend viele Möglichkeiten bietet.
In einem Test des Chromebook Spin 13 von Acer bei Golem [2] ging der Autor bereits kurz auf die Linux-Unterstützung ein, aber nur aus Sicht einfacher Nutzer, die schnell eine typische Desktop-Anwendung installieren und verwenden wollen. Aus Sicht eines Windows-Nutzers war das aber nicht besonders erfolgreich und gelungen umgesetzt. Crostini richtet sich nun in erster Linie an Entwickler und gefällt aus dieser Perspektive schon ganz gut, auch wenn noch einige wichtige Funktionen fehlen. Wer auf der Kommandozeile zu Hause ist, der findet sich in Crostini schnell zurecht.
Aus der Sicht üblicher Linux-Distributionen, wie dem von der Community gepflegten Debian oder dem von Unternehmen unterstützten Fedora, Ubuntu oder OpenSuse, war Chrome OS immer ein Sonderling. Genaugenommen handelt es sich dabei um eine Art Gentoo-Derivat: Es nutzt relativ viele Grundlagen dieser Distribution, und die Entwickler sind sehr darauf bedacht, möglichst alle eigenen Änderungen am Code in den Hauptzweig der jeweiligen Upstream-Projekte einzupflegen – ganz im Gegensatz zu Android, das damit immer noch reichlich Probleme hat.
Die bisherigen Nutzer von Chrome OS sollten davon aber nichts mitbekommen. Für sie war das Betriebssystem nicht viel mehr als ein ausgefeilter Browser. Und für die experimentierfreudigen Nutzer gab es ja immer noch Crouton, mit dem eine echte Linux-Umgebung samt Wahlfreiheit und Entwicklerwerkzeugen auf Chromebooks bereitstand. Crostini bietet dasselbe, nur jetzt eben regulär und ohne Abstriche bei den Systemfunktionen (Abbildung 1).
Um Crostini zu installieren, genügt es, in den Einstellungen die entsprechende Option anzuwählen. Ein kurzer Dialog gibt über die Installation der Linux-Umgebung Aufschluss (Abbildung 2). Danach steht in der Anwendungsübersicht ein Terminal bereit, mit dem Sie in eine Shell des aktuellen Debian 9 “Stretch” gelangen. Darin lassen sich wie gewohnt per Apt Pakete installieren, mit Systemd Dienste verwalten, und auch eine Entwicklungsumgebung aus Compilern, Werkzeugen und Servern einrichten.
Durchdachter Unterbau
Um die Handhabung zu vereinfachen, kombinierte Googles Entwicklerteam viele vorhandene Linux-Techniken und passte sie auch an die eigenen Bedürfnisse an. Das Herzstück der ganzen Architektur bildet das in Rust geschriebene Werkzeug Crosvm. Dabei handelt es sich um einen Virtual-Machine-Monitor, also einen Hypervisor auf Basis von KVM, der als leichtgewichtiger Ersatz von Werkzeugen wie etwa Qemu dienen soll.
Crosvm nutzt zur Kommunikation zwischen Gast und Wirt ausschließlich die Virtio-Schnittstellen des Linux-Kernels. Darüber hinaus sperrt es aus Sicherheitserwägungen heraus jedes virtualisierte Gerät mit Minijail [3] in eine Art Sandbox aus Namensräumen und der Seccomp-Technik.
Als bisher einziges Gastsystem startet darüber die Termina-VM. Dabei handelt es sich um eine auf das Nötigste abgespeckte Version von Chrome OS, die nur möglichst schnell starten soll. Darin läuft wiederum LXD zum Verwalten von Containern, und hier vor allem für den standardmäßig genutzten Debian-Container namens Penguin (Abbildung 3).
Viele Zusatzdienste
Zugriff auf die erwähnten Werkzeuge erhalten Sie zunächst über Crosh, die minimale Terminal-Umgebung von Chrome OS. Dort lässt sich das Werkzeug Vmc nutzen, um auch manuell die Termina-VM zu starten oder zu beenden. Noch klappt hier tatsächlich nur die Nutzung von Termina, doch Google arbeitet schon an einer Technik für sogenannte Plugin-VMs, mit der sich auch andere Betriebssysteme nutzen lassen. Der weitere Aufbau sei hier nur kurz erwähnt; Details dazu finden Sie bei Interesse in der umfangreichen Dokumentation des Projekts [4].
Die Kommunikation zwischen Host und Gast-VM geschieht per gRPC über Vsock. Das Verwalten von VM und Container übernimmt auf Host-Seite der Daemon Concierge, auf Gastseite der Dienst Maitred, der auch als Init-Dienst im Gast fungiert. Dazu kommen weiter spezialisierte Dienste, wie Tremplin als Wrapper für LXD, der Daemon Cicerone für den laufenden Betrieb, und zu guter Letzt Seneschal, das für die Dateisystemkommunikation über einen 9P-Server und das gleichnamige Dateisystemprotokoll sorgt.
Der von der VM gehostete Container nutzt dann außerdem den Dienst Garcon, der sich mit Cicerone auf dem Host verknüpft, und Sommelier als Proxy-Compositor für Wayland. Er reicht Inhalte und Events an das Host-System weiter, das diese schließlich rendert. Sommelier startet bei Bedarf außerdem einen XWayland-Server, womit die Umgebung auch X11-Anwendungen darstellt.
Unix auf Steroiden
Schon bei der ersten öffentlichen Vorstellung des Systems durch die Freigabe von Code hat uns der Aufbau an Ideen wie Systemd-Nspawn erinnert, mit dem sich auf üblichen Distributionen schnell und leicht andere Linux-Systeme starten lassen. Die Systemd-Entwickler bezeichnen dies als “Chroot auf Steroiden”.
In diesem Sinne handelt es sich bei der Crostini-Architektur um ein Unix auf Steroiden. Immerhin setzte das Team die Unix-Philosophie, Programme so zu schreiben, dass sie “nur eine Aufgabe erledigen und diese gut machen”, mit verschiedenen Daemons um, die diesem Anspruch folgen. Der Hypervisor Crosvm dient darüber hinaus auch nur dazu, einen Linux-Gast auf einem ebensolchen Host möglichst schnell und sicher zu starten.
Die Programme arbeiten zwar nicht mehr, wie vor fast 40 Jahren angedacht, über Textdateien miteinander, dafür aber über eine Interprozesskommunikation per RPC sowie über die simplen Virtio-Schnittstellen, die der Kernel bereitstellt. Mit der Verwendung von 9P für die Dateisystemkommunikation nutzt Crostini letztlich sogar direkt Ideen aus dem ideellen Unix-Nachfolger Plan 9. Auch beim Verwenden von Containern und den Jails als Prozess-Sandboxen handelt es sich um teils jahrzehntealte, typische Unix-Konzepte.
Auch Google nutzt Teile dieser Technik, etwa die Container oder Wayland, bereits seit einigen Jahren für seine Android-Integration. Wenig überraschend ist der für die Android-Integration zuständige Entwickler Dylan Reid nun auch führend an der Linux-App-Unterstützung beteiligt.
Container zum Basteln
Zusätzlich zu diesem für Unix-Liebhaber sehr interessanten Aufbau gibt Google Entwicklern aber noch mehr als nur die hauseigenen Werkzeuge an die Hand. Zwar lässt sich mit dem Debian-Container Penguin schon einiges anstellen, wirklich spannend wird aber erst das Nutzen eigener Container, was mit LXD auch problemlos gelingt.
Dank des Aufbaus mit der Termina-VM, welche die Hardware zusätzlich von den Containern isoliert, schadet es der Sicherheit von Chrome OS nicht, weitere Container zuzulassen. Die Nutzer verlieren dabei zwar die besonders enge Integration ins Host-System, was im Zweifel aber vielleicht auch nicht allzu wichtig ist.
So lassen sich über die Kommandozeilenwerkzeuge von LXD einfach weitere Container mit anderen Distributionen installieren, wie Alpine oder Ubuntu, in denen Sie dann jeweils eigene Anwendungen, Server und Datenbanken starten. Die Port-Weiterleitung bleibt hier zudem weitgehend aktiviert, sodass sich auch Entwicklungen mit einem komplexeren Aufbau und mehreren Bestandteilen gut testen und erstellen lassen.
Zu Höherem berufen
Der Autor fand schnell Spaß und Gefallen an dem Konzept und der Ausführung von Crostini. Dafür, dass Chrome OS in seinen Augen bisher nicht viel mehr als eine Spielerei mit einem Browser war, überraschte Crostini ihn sehr positiv. Vor allem für Nutzer, die auch bisher schon viel in Umgebungen wie Systemd-Nspawn oder an und mit Containern entwickeln, ohne dabei viel Wert auf die Basisdistribution zu legen, könnte Crostini tatsächlich einen Mehrwert bieten.
Die Unzulänglichkeiten von Crostini liegen derzeit noch in der fehlenden technischen Unterstützung einiger wichtiger Hardware-Geräte. Dazu gehören die Audio-Ausgabe, die USB-Unterstützung, und nicht zuletzt auch die 3D-Hardware-Beschleunigung über die GPU. Auch daran arbeitet Google bereits und testet das in ausgewählten Geräten.
Strategie
Letztlich stellt sich eigentlich nur noch die Frage, warum Google überhaupt so viel Arbeit und Ressourcen in Crostini steckt. Immerhin bedient Chrome OS die bisherige Zielgruppe eigentlich ganz gut – also Schüler, Studenten und jene, die nur eine kleine, billige Office-Kiste benötigen. Zur Beantwortung der Frage drängt sich ein Vergleich von Crostini zu Microsofts WSL in Bezug auf die strategische Ausrichtung der Projekte geradezu auf, auch wenn der Vergleich aus technischer Sicht eher unfair erscheint.
Die Entwicklung und Nutzung moderner (und derzeit stark wachsender) Technologien vor allem im Web und beim Cloud Computing findet zu großen Teilen auf klassischen Linux-Systemen statt. Microsoft hält hier trotz großer Anstrengungen (etwa .Net Core oder dem Port von Docker- und Container-Technologien) kaum mit. WSL stellt zumindest den Versuch dar, die Entwickler und Nutzer der Technologie auf der eigenen Plattform zu halten und so vielleicht auch an eigene Dienste zu binden. Darüber hinaus ist dies ein Schritt von Microsoft in Richtung seiner großen Enterprise-Kunden, die oft das ganze Unternehmen mit Windows-Rechnern ausstatten. Mit WSL bedient der Konzern damit auch die Linux- und Cloud-Entwickler.
Google befindet sich aus diesem Betrachtungswinkel heraus in einer ähnlichen Situation. Mit Android und Chrome OS vertreibt das Unternehmen zwar zwei erfolgreiche Betriebssysteme, die sich aber als Produktivsystem für Entwickler wenig eignen. Große Entwicklungsabteilungen setzen hier im Zweifel eher auf MacOS oder eine der üblichen Linux-Distributionen. Ein gutes Beispiel hierfür liefert Google selbst, das mit GLinux gar eine eigene Distribution auf Basis von Debian pflegt, statt sein eigenes Betriebssystemprodukt großflächig zu verwenden.
Crostini in Chrome OS könnte hier punkten, vor allem zusammen mit dem auch an sehr großen Bildungseinrichtungen und in Unternehmen erprobten Enterprise- und Administrationsmodus [5] sowie dem sehr strengen Sicherheitskonzept des Betriebssystems. Darüber hinaus schafft der Fokus auf Entwickler und deren Bedürfnisse auch endlich einen echten Markt für höherpreisige und hochwertig verarbeitete Chromebooks, die bisher zum bloßen Surfen und für einfache Büroarbeiten völlig überdimensioniert waren.
Verfügbarkeit und Fazit
Google verteilt die Crostini-Funktion seit der Version 69 des Betriebssystems, die im vergangenen Herbst erstmals erschien. Nutzen lässt sich die Technik aber nicht auf allen Geräten, sondern nur auf jenen, die bestimmte Anforderungen an verfügbaren Arbeitsspeicher sowie CPU-Leistung erfüllen und eine Hardware-Virtualisierung unterstützen.
Crostini beschränkt sich aber nicht nur auf die x86-Architektur: Es läuft auch auf einigen, wenigen ARM64-Geräten. Tatsächlich ist die Hardware-Ausstattung dabei wichtiger als das Alter des Chromebooks. Eine vollständige Liste liefert das Chromium-Projekt in seiner Dokumentation [6]. Allerdings finden sich dort nur die Codenamen der Geräte, die wiederum eine weitere Liste [7] auflöst.
Fazit
Linux-Nutzer überzeugt das Konzept von Crostini vor allem wegen der eleganten Architektur. Das Team von Google nutzt mit den VMs und einem eigenen Hypervisor, den Virtio-Geräten in Jails sowie LXD und Containern so ziemlich jede moderne und derzeit verfügbare Linux-Technik, um Systeme voneinander abzuschotten. Dabei steht aber trotzdem eine Entwicklungsumgebung mit möglichst vielen Freiheiten bereit.
Interessant wird die Nutzung langfristig für den zuvor kurz skizzierten Unternehmenseinsatz und für jene Entwickler, die ihrem Linux-Unterbau wenig Wert beimessen, statt sich mit Verve in endlosen Diskussionen über die beste Distribution zu verstricken. Darüber hinaus könnte Crostini auch Web- und Cloud-Entwickler ansprechen, die tatsächlich mehr oder weniger unabhängig von der genutzten Distribution agieren können. Nicht zuletzt hat das System auch großes Potenzial für die Android-Entwicklung: Statt wie bisher einen mehrere Gigabyte großen Emulator zu verwenden, kann Google auch einfach die Android-Container in die Entwicklungsumgebung von Crostini integrieren.
Damit das System wirklich konkurrenzfähig wird, muss Google aber noch einige wichtige Details verbessern, wie etwa die 3D-Beschleunigung per GPU. Der nun verfügbare Anfang der Arbeiten gefällt auf jeden Fall schon besser als die Anfangsphase des WSL von Microsoft. Das liegt zwar vornehmlich prinzipbedingt an dem Linux-Unterbau von Chrome OS, der aber eben auch einen klaren Vorteil für Google darstellt.
Der Autor
Sebastian Grüner schreibt seit 2011 für Golem.de über Open-Source-Software, deren Technik und den gesellschaftspolitischen Einfluss der Projekte und ihrer Communities. Er studiert neben seiner Arbeit als Redakteur theoretische Linguistik mit Einblicken in die Mathematik, Philosophie und Informatik.
Infos
- Crouton-Projekt: https://github.com/dnschneid/crouton
- Acer-Chromebook Spin 13 im Test: https://www.golem.de/news/chromebook-spin-13-im-alltagstest-tolles-notebook-mit-software-bremse-1902-138898.html
- Minijail: https://lwn.net/Articles/700557/
- Crostini-Dokumentation: https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md#overview
- Enterprise- und Administrationsmodus: https://support.google.com/chrome/a/answer/1375678?hl=en
- Chromium-Projekt (Hardware): https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md#Can-I-run-a-VM-inside-the-VM
- Chromium-Projekt (Hardware-Aufschlüsselung): https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices










Ok jetzt ist der Artikel alt, also relativ, nur trotzdem schon belanglos wie öffentlich rechtlicher Rundfunk. eine direkte Anleitung wäre besser gewesen, grade die Nutzung vom besprochen terminal……
Inwiefern ist der öffentlich rechtliche Rundfunk belanglos? Du schaltest ihn doch garantiert im Laufe des Tages mindestens einmal ein – oder? :-)
Zur eigentlichen Sache: Warum sollte man die Nutzung des Terminals beschreiben? Darin läuft ein Debian 9. Die Anleitung würde also darauf hinauslaufen, Debian zu beschreiben. Das ist aber gar nicht Thema des Artikels (gewesen).