- Ein 64-Bit-Betriebssystem im DOS-Stil, entwickelt in Rust; etwas x86-Assembly wird ebenfalls zum Laden des Kernels verwendet
- Implementiert VGA-Textmodus (80x25), das FAT12-Dateisystem und einen IPv4-Netzwerk-Stack über SLIP (ICMP/UDP/TCP/HTTP)
- Läuft und wird entwickelt in einer auf QEMU basierenden virtuellen Maschine; unterstützt teilweise auch echte Diskettenmedien
- Enthält einfache Basis-Utilities wie einen Texteditor, TAB-Datei-/Verzeichnis-Autovervollständigung und das Snake-Spiel
Architektur und Bootloader
- Ziel-CPU ist x86_64; Unterstützung für die ARM-Architektur (aarch) ist künftig geplant
- Frühere Versionen luden und starteten den Kernel mit einem selbst geschriebenen Bootloader direkt in den Speicher
- Im 64-Bit-Kernel wird der GRUB2-Bootloader genutzt, um den Eintritt in den Long Mode und den Wechsel in den Protected Mode zu handhaben
- Der stage2-Bootloader übernimmt unter anderem das Einrichten von GDT, IDT und Paging sowie die Zuweisung des Multiboot2-Zeigers
- Der Kernel besteht aus einem Shell-Befehlsprozessor und verschiedenen benutzerdefinierten Komponenten
Emulation und Images in QEMU
- Entwicklung und Tests erfolgen in einer virtuellen Maschinenumgebung mit QEMU
- Erzeugung von ISO-Images: mit grub2-mkrescue und xorriso
- Unterstützung für das Erstellen und Einhängen von FAT12-Disketten-Images, nutzbar auf echter Hardware oder mit dem QEMU-Flag
-fda fat.img
Initialisierungsablauf
- Beim Einstieg in den Kernel werden Long Mode, Multiboot2-Tags, das FAT12-Dateisystem und der VGA-Status geprüft
- Nach Ausgabe eines ASCII-Art-Logos wird die Steuerung an die Shell-Schleife übergeben
Dateisystem
- FAT12-Dateisystem-Unterstützung: Lesen/Schreiben/Suchen/Löschen von Dateien sowie Erstellen/Löschen von Verzeichnissen
- Unterstützt das Erstellen und Überschreiben von Textdateien sowie Unterverzeichnisse
- Enthält ein fsck-Tool zur Prüfung der Dateisystemkonsistenz
- FAT32-Unterstützung ist ebenfalls für die Zukunft geplant
Netzwerk-Stack
- Senden und Empfangen von IPv4-Paketen auf Basis des SLIP-Protokolls
- Unterstützung für die Verarbeitung von Ethernet-Frames (Tests noch nicht abgeschlossen)
- Unterstützt ICMP Echo (Request/Reply), UDP und TCP (SYN/SYNACK-Zustandsmaschine)
- Einfacher HTTP-Server: liefert statische HTML-Seiten aus
Snake-Spiel
- Snake-Spiel integriert; eine künftige Multiplayer-Version (P2P TCP) ist ebenfalls geplant
- Spieldaten (Level, Punktestand) können als Textdateien gespeichert und geladen werden
- Spielende mit ESC; High Score wird abhängig vom Punktestand gespeichert
Projektwert und Einsatzpunkte
- Als Beispiel für ein in Rust geschriebenes Betriebssystem vermittelt es anschaulich die Vorteile von Sicherheit und Produktivität bei der Entwicklung systemnaher Software
- Mit SLIP/ICMP-Tests, einfacher Bereitstellung und Unterstützung für echte Hardware eignet es sich gut für OS-Experimente und das Lernen benutzerdefinierter Implementierungen
- Bietet die Möglichkeit, eine DOS-ähnliche Systemstruktur aus Rust und x86-Assembly direkt kennenzulernen
1 Kommentare
Hacker-News-Kommentare