Linux-Kernel nativ auf macOS kompilieren: Eine Reise durch die Compiler-Hölle

2025-07-03
Linux-Kernel nativ auf macOS kompilieren: Eine Reise durch die Compiler-Hölle

Dieser Beitrag beschreibt die Erfahrung des Autors beim Kompilieren eines Linux-Kernels (RISC-V-Architektur) nativ auf macOS. Die Reise war voller Herausforderungen: eine veraltete make-Version, die Inkompatibilität von macOS' ld mit den Erwartungen von Linux, fehlende elf.h- und byteswap.h-Header und Versionskonflikte mit uuid_t und sed. Der Autor hat diese Probleme mit Homebrew gelöst, indem er aktualisierte Toolchains (make, llvm, lld, libelf, gnu-sed) installiert und Patches erstellt hat, um Header-Diskrepanzen und Typdefinitionskonflikte zu beheben. Der Kernel wurde erfolgreich kompiliert, wobei macOS bei vollständigen Builds schneller war als Docker, aber bei inkrementellen Builds langsamer. Der Autor kommt zu dem Schluss, dass das Beheben von Build-Problemen ein kontinuierlicher, iterativer Prozess ist, ähnlich wie Continuous Integration.

Mehr lesen
Entwicklung

Starina: Ein Mikrokernel-Betriebssystem mit Hypervisor-als-Bibliothek-Ansatz

2025-05-20
Starina: Ein Mikrokernel-Betriebssystem mit Hypervisor-als-Bibliothek-Ansatz

Dieser Beitrag stellt einen innovativen Ansatz für die Linux-Kompatibilität im Starina-Betriebssystem vor: die Integration des Virtual Machine Monitors (VMM) als Bibliothek in Anwendungen. Im Gegensatz zu traditionellen eigenständigen VMMs ermöglicht die Starina-API `starina_linux::Command` Entwicklern die Ausführung von Linux-Programmen ähnlich wie `std::process::Command`, wobei die Interaktion mit der VM über ein virtuelles Dateisystem (virtio_fs) erfolgt. Dieses Design vereinfacht die Entwicklung und hat das Potenzial, schnellere Startzeiten als native Linux-Umgebungen zu erreichen. Derzeit wird grundlegende Datei-E/A unterstützt; zukünftige Arbeiten umfassen das Hinzufügen von Netzwerkfunktionen, persistentem Speicher und verbesserter Containerisierung.

Mehr lesen
Entwicklung Mikrokernel

Erstellung eines RISC-V-Hypervisors im Starina-Betriebssystem: Von Hello World zum Booten von Linux

2025-05-17
Erstellung eines RISC-V-Hypervisors im Starina-Betriebssystem: Von Hello World zum Booten von Linux

Dieser Beitrag dokumentiert die Reise des Autors bei der Erstellung eines leichtgewichtigen, auf der RISC-V-H-Erweiterung basierenden Hypervisors im Starina-Betriebssystem. Unter Verwendung der QEMU-Emulation der RISC-V-H-Erweiterung implementierte der Autor schrittweise den Einstieg in den Gastmodus, die Behandlung von Systemaufrufen, ein einfaches Hello-World-Programm und schließlich das Booten des Linux-Kernels. Herausforderungen wie Seitentabellenverwaltung, Einrichtung des Gerätebaums, Timerunterstützung und MMIO wurden bewältigt, wobei detaillierte Schritte und Lösungen bereitgestellt wurden. Der Beitrag endet mit einem erfolgreichen Linux-Boot im Starina-Hypervisor.

Mehr lesen
Entwicklung