octox: Das Ur-Unix als Rust-Klon – und warum es solche Projekte braucht

octox ist ein von Xv6-RiscV inspiriertes Betriebssystem und vollständig in Rust implementiert. Das ist auch ohne kommerziellen Nutzen spannend.​

In Pocket speichern vorlesen Druckansicht 45 Kommentare lesen

(Bild: iX)

Lesezeit: 5 Min.
Von
  • Martin Gerhard Loschwitz
Inhaltsverzeichnis

Der japanische Entwickler Hayato Ohhashi hat sein Betriebssystem octox freigegeben und stellt dessen Quellen auf GitHub zur Verfügung. Das Betriebssystem ist vollständig in Rust verfasst und kommt mit einer basalen Kommandozeile daher. Besonderes Augenmerk hat Ohhashi dabei laut eigener Aussage auf das Thema Sicherheit gelegt. Weil octox zudem ohne Abhängigkeiten von externen Komponenten auskommt, ist es leicht, das Betriebssystem vollständig zu analysieren und zu verstehen.

Natürlich lässt sich ein Projekt wie octox nicht sinnvoll mit den großen Betriebssystemen der Gegenwart vergleichen, etwa dem Linux-Kernel. Ohhashis Kernel braucht sich im direkten Vergleich mit ähnlichen Projekten aber nicht zu verstecken. Denn zusätzlich zu den basalen Systemaufrufen, die für gängige Software implementiert sein müssen, kommt octox mit einer eigenen Shell daher, auf der Kommandos wie cat, head, ls oder cd funktionieren. Auch ein eigenes Dateisystem gehört bei octox dazu, ebenso wie mit mkfs ein Werkzeug, um ein solches anzulegen.

Obendrein wirbt der Entwickler des Werkzeugs damit, dass octox besonders leicht auszuprobieren und zu erweitern ist. So genügt es, die Rust-Toolchain zu installieren, weil der Bauprozess von octox mittels cargo implementiert ist. Hinzu gesellt sich noch qemu-system-riscv, also ein Emulator für RISC-V zum Betrieb entsprechender Binärdateien auf anderen Computer-Architekturen. Nach einigen cargo-Aufrufen lässt sich das frisch aus den Quellen übersetzte und installierte Betriebssystem bereits verwenden und im laufenden Emulator ausprobieren. Zum Lieferumfang von octox gehört zudem eine Standard-Bibliothek namens ulib, die an Rusts std-Bibliothek angelehnt ist und grundlegende Funktionen bereitstellt. Mit ihr sollen Interessierte die Möglichkeit haben, eigene Anwendungen zu implementieren oder etwa die vorliegende Shell von octox zu erweitern.

Wem das als Fingerübung nicht ausreicht, der kann auch den octox-Kernel um neue Systemaufrufe – Syscalls – erweitern. Dazu genügt es, den entsprechenden Eintrag in der Datei "src/kernel/syscall.rs" einzutragen, den Systemaufruf in SysCalls anzulegen und die gewünschte Funktion zu implementieren. Ein entsprechendes Beispiel im Quelltext von octox erläutert den Vorgang im Detail.

Mancher Beobachter in der Open-Source-Szene wundert sich bei Projekten wie octox gern hinsichtlich deren Sinnhaftigkeit. Das passiert besonders häufig, wenn die Bewertung solcher Projekte vor ausschließlich kommerziellen Gesichtspunkten erfolgt – wenn also die Frage im Vordergrund steht, wer unmittelbaren kommerziellen Nutzen aus dem Projekt zieht. Wer an die Sache so herangeht, verkennt allerdings einen zentralen Faktor, der insbesondere die Open-Source-Welt gewissermaßen mit am Leben hält. Denn in der F/LOSS-Community speist sich ein großer Teil der Arbeit an Computern und Software aus akademischem Interesse und dem Wunsch, zu lernen.

Viele Entwickler der Gegenwart arbeiten an Projekten wie octox, um die Grundlagen von Computern und gängigen Betriebssystemen besser zu verstehen. octox ist dafür ein hervorragendes Beispiel, schließlich handelt es sich um einen von Xv6-RiscV inspirierten Kernel, der anders als die gängigen Betriebssysteme jedoch in Rust statt in C oder C++ implementiert ist. Xv6-RiscV seinerseits wiederum ist ein zu akademischen Zwecken gestarteter Klon des Ur-Unix v6 von Dennis Ritchie und Ken Thompson vom MIT – niemand geringerem also als den Leuten, die praktisch als die Erfinder des Unix-Prinzips gelten.

Praktisch ist octox mithin die grundlegende Re-Implementierung eines grundlegenden Computer-Betriebssystems mit aktuellsten Mitteln, eben mit Rust. Den Umweg über verhältnismäßig einfache Betriebssysteme wählen dabei viele angehende Entwickler, weil diese viel leichter zu durchdringen sind als die großen Standardkernel der Gegenwart.

Linux verdeutlicht das schnell. Selbst ohne sämtliche Gerätetreiber kommt der Linux-Kernel heute auf Millionen von Quelltextzeilen allein für Themen wie Speicherverwaltung oder Dateisysteme. Diese nachzuvollziehen würde nicht nur das grundlegende Wissen vieler Menschen überfordern, sondern auch absurd viel Zeit in Anspruch nehmen. Lernt man die Grundlagen von Betriebssystemdesign stattdessen anhand eines recht einfachen Projektes wie octox, erschließen sich viele Zusammenhänge viel schneller. Hayato Ohhashi hat das Prinzip gewissermaßen auf die Spitze getrieben, indem er ein Betriebssystem gleich von Grund auf nach Vorlage neu implementierte. Dass er dabei einiges gelernt haben dürfte, steht wohl außer Zweifel.

Regelmäßig werden zudem aus den Entwicklern vermeintlicher Hobby-Projekte angestellte Programmierer bei den großen Herstellern, die auf Basis des erworbenen Wissens später tatsächlich an Linux oder BSD mitarbeiten. octox ist de facto also Teil einer permanenten, globalen Ausbildungsinitiative im Open-Source-Umfeld. Weil es auf Rust basiert, ist es obendrein ein sehr moderner und aktueller Beitrag. Wer sich mit den grundlegenden Details von Betriebssystemen befassen oder sein Rust-Wissen auffrischen möchte oder Lust hat, Rust von der Pieke auf zu lernen, ist bei Projekten wie octox, dessen Quellcode bei Github zur Verfügung steht, also goldrichtig.

(jvo)