Fuchsia ist immer noch eine große Unbekannte, wenn es um das zukünftige Einsatzszenario der seit Jahren zunächst intern, dann offen für die Community entwickelten Betriebssystems geht. Lediglich nebulöse Aussagen wie »die langfristige Erforschung neuer Konzepte rund um Betriebssysteme« waren zu erfahren, dementiert wurde dagegen ein Ersatz für Android.
Linux-Binaries direkt ausführen
Jetzt wurde in Gerrit, Googles kollaborativem Code Review für Git, ein Dokument veröffentlicht, dass einen Mechanismus zum Ausführen von unmodifizierten Linux-Programmen auf Fuchsia vorschlägt. Bisher müssen solche Anwendungen zunächst neu gebaut werden. Die Programme sollen nach diesem Vorschlag in einem Userspace-Prozess ausgeführt werden, dessen Systemschnittstelle mit der Linux-ABI kompatibel ist.
Starnix
Anstatt den Linux-Kernel für die Implementierung dieser Schnittstelle zu nutzen, soll die Schnittstelle in einer Fuchsia-Userspace-Anwendung namens starnix
laufen. Größtenteils wird starnix
als Kompatibilitätsschicht dienen, die Anfragen vom Linux-Client-Programm an das entsprechende Fuchsia-Subsystem leitet. Viele dieser Subsysteme müssen dazu überarbeitet werden, um die gesamte gewünschte Funktionalität zu unterstützen.
POSIX Lite
Das Neu-Kompilieren von Linux-Anwendungen wurde bisher durch eine als Client-Bibliothek implementierte POSIX-Kompatibilitätsschicht namens POSIX Lite erleichtert. Während dieses System bisher gut funktioniert, stößt es an Grenzen, wenn das Spektrum an Anwendungen, die auf Fuchsia laufen sollen, erweitert wird. Dabei denken die Entwickler beispielsweise an Software, wie bestimmte Android-Anwendungen, die native Code-Module beinhalten, die für Linux kompiliert wurden. Um diese Software auf Fuchsia ausführen zu können, müssen die Binärdateien ausgeführt werden können, ohne sie zu modifizieren.
Eine einfache Möglichkeit, Linux-Anwendungen als Binärdateien in Fuchsia auszuführen wäre in einer virtuellen Maschine mit Linux als Gast-Kernel in der virtuellen Maschine. Dieser Ansatz macht es jedoch schwierig, die Gastprogramme mit dem Rest des Fuchsia-Systems zu integrieren, da sie in einem anderen Betriebssystem laufen als der Rest des Systems.
Linux-Runtime
Anstatt also Linux-Binärdateien in einer VM auszuführen, erzeugt starnix
eine Linux-Runtime nativ in Fuchsia. Nachdem ein Linux-Binary geladen wurde, registriert sich starnix als Handler für alle Systemaufrufe des Clients. Wann immer der Client einen Syscall absetzt, übergibt Fuchsias Zircon-Kernel die Kontrolle an starnix, das den Syscall dekodiert und abarbeitet. Dabei soll starnix
in Rust implementiert werden, um eine Eskalation von Privilegien vom Client-Prozess zu starnix
zu vermeiden.
Frühes Stadium
Bisher verharrt die Umsetzung des Vorschlags noch auf dem Niveau der Ausführung von hello_world.c
, die detaillierte Planung zeigt jedoch, dass Google mit Fuchsia ein grundlegendes Betriebssystem entwickelt, das zunächst vermutlich ein Basissystem für alles sein könnte, was mit Chrome OS zu tun hat, aber auch künftige Entwicklungen von Google bereits einbezieht.