Ein winziges 32-Bit-X86-PC-Betriebssystem basierend auf einem monolithischen Kernel mit einigen Unix-ähnlichen Funktionen, geschrieben in einer Untergruppe von C ++.
Bitte beachten Sie: Diese Meta-Dokumentation ist noch in Arbeit :-)
Ein winziges Desktop-Betriebssystem mit Unix-ähnlichen Funktionen, das in einer C ++-Subset für TI-Schüler im ersten Jahr von HoogeSchool Utrecht verständlich ist, so dass es in einem Bildungskontext verwendet werden kann.
Nach Möglichkeit werden Leistung und Merkmale geopfert, um die Komplexität zu verringern und die Lesbarkeit zu erhöhen. Dies sollte der Software helfen, für den Einsatz in einem Bildungskontext verständlicher zu sein. Dennoch sollten wichtige Themen von OS-Kursen am HogeSchool Utrecht implementiert werden.
Obwohl es auf echte Hardware einwandfrei booten sollte, wird Rikaios mit einem Emulator oder einer virtuellen Maschine entwickelt - die unterstützte Hardware ist absichtlich eingeschränkt.
Ein obligatorischer Haftungsausschluss: Das Betriebssystem kann Ihr Motherboard schmelzen und Ihre Haustiermaus essen, wenn Sie auf echter Hardware ausgeführt werden, keine Garantien, Yada Yada. Bitte lesen Sie den Haftungsausschluss in der Lizenzdatei, bevor Sie diese auf Ihrem Familiencomputer ausführen.
Siehe das Verzeichnis ./aux. Erwarten Sie jedoch nichts Auffälliges - derzeit sind alles serielle Terminal erfasst!
Das Betriebssystem mit seinem aktuellen Feature-Set wurde in einem Zeitraum von ungefähr 6 Monaten von Februar bis Juli 2019 entwickelt.
Rikaios ist noch kein vollständiger Linux-Ersatz ;-)
Es gibt einige Funktionen, die Arbeit benötigen oder derzeit bearbeitet werden (siehe auch den beitragenden Abschnitt):
grep -ERn 'TODO|FIXME|XXX' src/kernel/src src/kernel/include src/user/Beachten Sie, dass das Ziel von Rikaios darin besteht, klein zu bleiben: Ein Netzwerkstapel- oder USB -Treiber wird beispielsweise für die Implementierung wahrscheinlich nicht in Betracht gezogen.
Sie benötigen diese Software (auf einem Linux-ish-Host), um Rikaios zu erstellen und auszuführen:
Die Versionsnummern sollten neuer sein, insbesondere für Clang, LLVM und LLD. Eine Arch Linux Dockerfile wird (dank @peikos) zur Verfügung gestellt, die kompatible Versionen der oben genannten Abhängigkeiten enthält.
Sie können GCC anstelle von Clang/LLVM verwenden, wenn Sie dies wünschen, vorausgesetzt, Sie haben einen GCC-Cross-Toolchain für i686-felf. In src/kernel/Makefile finden Sie Einzelheiten zum Wechseln von Toolchains.
| Verzeichnis | Beschreibung |
|---|---|
/src/boot | Bootloader (Bootsektor und Stufe2) |
/src/boot/utils | Bootloader -Installationsprogramm |
/src/kernel | Kernelcode |
/src/kernel/include | Kernel -Header, die Userland ausgesetzt sind |
/src/kernel/include/os-std | Betriebssystem -Standardbibliothek (Mathematik, Container usw.) |
/src/user | Userland Software |
/src/user/libsys | Userland C ++ Systembibliothek |
/src/disk | (FAT32) Dateisystem für das Betriebssystem verfügbar |
| Makefile | Beschreibung |
/src/Makefile | Erstellt alles, schafft Stiefeletten und führt Emulatoren aus |
/src/boot/Makefile | Builds Bootloader und Installationsprogramm |
/src/kernel/Makefile | Baut Kernel |
/src/user/Makefile | Baut Userland |
Jedes obige Makefile enthält (falls verfügbar) eine Makefile.local -Datei im selben Verzeichnis. Auf diese Weise können Sie alle ausführbaren ToolChain -Namen und -pfade überschreiben und optional zusätzliche Ziele hinzufügen.
Vergessen Sie nicht, -j 4 (oder höher) zu bestehen, um die Build -Leistung auf Multicore -Systemen zu erhöhen.
Dies erstellt den Kernel und den Bootloader und erstellt eine Startplatte, die mit dem QEMU -Virtualizer / Emulator ausgeführt wird. Eine serielle Verbindung zum Betriebssystem wird im Terminal geöffnet, aus dem Sie den Befehl machen.
Scheibe machen und laufen lassen
Derzeit verfügen die OS-Shell und der TTY-Treiber haben keine ausgefeilten Funktionen zur Leitungsbearbeitungsfunktionen und den Befehlszeilenverlaufsunterstützung. Für den Einfachheit halber können Sie QEMU mit rlwrap einwickeln, um die Einrichtungen zur Bearbeitung von Linien auf der Host-Seite der Dinge zu verwenden (stark empfohlen):
Machen Sie Disk && rlwrap -a
Um in VirtualBox auszuführen, machen Sie Folgendes:
vdi -Ziel:VDI machen
Dann:
disk.vdi als IDE -Festplatte hinzuJetzt sollten Sie in der Lage sein, die VM über VirtualBox zu starten.
Beachten Sie, dass die serielle E/A möglicherweise schwierig sein kann, sich an die Arbeit zu machen. Die aktuelle Betriebssystemversion interagiert standardmäßig nicht viel mit dem Bildschirm und Tastatur/Mäusen.
Sobald Sie das System in Betrieb genommen haben, sollten Sie eine Eingabeaufforderung im Serienterminal sehen (wenn Sie einen Monitor angeschlossen haben, kann auch ein Begrüßungsbildschirm angezeigt werden). Sie können mit dem OS mit dem seriellen Terminal mit dem Betriebssystem interagieren. Versuchen Sie zunächst den help -Befehl.
Auf der Festplatte wird eine Reihe von Versorgungsprogrammen bereitgestellt. Ansicht installierte Programme durch Eingeben von ls bin (vorausgesetzt, Sie befinden sich noch im Verzeichnis /disk0p1 ). Alle ELF -Programme in /disk0p1/bin können als Befehle ausgeführt werden, ohne den vollständigen Pfad zu tippen (betrachten Sie ihn als implizites $PATH -Verzeichnis). In ähnlicher Weise können alle ELF -Dateien im Arbeitsverzeichnis wie forth.elf einfach ausgeführt werden, indem sie ihren Namen eingeben.
Um zu sehen, wie die Versorgungsunternehmen funktionieren oder um Ihre eigenen hinzuzufügen, finden Sie in der Readme -Datei im src/user dieses Repository.
Durch Drücken von ESC auf der Tastatur (im Videofenster, nicht im Serienterminal) wird die Kernel-Shell, ein integriertes Debugging-Dienstprogramm, aktiviert. Dies kann verwendet werden, um verschiedene Statistiken und Informationen zum Ausführen von Prozessen und zum Speicher zu drucken (siehe help , wenn sie in Kshell).
Sie können den Kernel entweder mit QEMU oder Bochs debuggen:
Makefile.local .
Debug machen und debuggen
Makefile.local .
Machen Sie Scheiben und machen Sie Bochs
LD.LLD: Fehler: Bibliothek -lclang_rt.builtins -i386 nicht finden
locate clang_rt.builtins )kernel/Makefile.local erstellen mit Inhalt: LD_BUILTIN_DIR += /the/directory/containing/the/clang/lib Ich verstehe, dass die öffentlich verfügbare Dokumentation derzeit begrenzt ist. Bitte zögern Sie also nicht, ein Problem zu eröffnen oder mir eine E-Mail zu senden.
Bitte öffnen Sie ein Problem mit Github / Gitlab, damit wir sicherstellen können, dass keine Anstrengungen dupliziert werden :-)
Ein Prozess dafür sollte in den kommenden Wochen formalisiert werden - es gibt einige offene Probleme / Funktionen, an denen definitiv bearbeitet werden kann, mit unterschiedlichem Grad von Schwierigkeitsgrad / Größe. Ich werde das bald dokumentieren ™.
Dieses Projekt ist unter der Apache -Lizenz 2.0 lizenziert. Weitere Informationen finden Sie unter.
Dieses Betriebssystem wurde von Grund auf neu geschrieben, mit nur der folgenden Ausnahme: