Googles Fuchsia OS soll Linux-Binaries ausführen

Fuchsia
Fuchsia Logo | Quelle: Google | Public Domain

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.

3.7 3 votes
Article Rating

Verwandte Themen

3.7 3 votes
Article Rating
Abonnieren
Benachrichtige mich bei
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments