Willkommen im ... äh ... Brightsystem?
Es ist ein x86_64 -Betriebssystem, das vollständig von Grund auf neu geschrieben wurde (keine Abhängigkeiten), die von Ihnen wirklich hergestellt wurde.
Dieses Projekt wurde ohne Unterstützung von Github Codestealer, OpenAIs ChatgpThief oder anderen ähnlichen Vorhersage-Algorithmen in Content-Striping geschrieben.
TLDR: Mid-Wrewrite und teilweise Katastrophe! Spaß!
_old hat einen funktionalen Kernel, der die großen Bibliotheken von Phil-Opp und einigen anderen verwendet. Der Code ist nicht super gut dokumentiert, aber nicht zu kompliziert, daher sollte er ziemlich lesbar sein. Es wurde für ein fantastisches OS -Entwicklungsforum in meiner Highschool gemacht.
Alles andere ist meine wip abhängig ohne Schreiben. Derzeit verfügt es nur um einen BIOS-Bootloader, der den 64-Bit-Modus eingeben kann. Der nächste Schritt besteht darin, einen ELF -Parser, dann einen Elfenloader zu implementieren und dann den Kernel (der einfach eine Elfendatei ist) zu laden.
Die neue Version von BS ist sehr gut dokumentiert, einschließlich Ressourcen für weitere Forschung. Ein Teil meines Ziels ist es, diesen hervorragenden Demo -Code für zukünftige Programmierer zu erstellen, aus denen man sich verweisen und daraus lernen kann.
Jeder Ordner hat einen Readme und ist hoffentlich selbsterklärend, aber hier ist ein hartes Inhaltsverzeichnis für dieses Repo:
boot : Alle Kisten im BS -Bootloader.kernel : BS 'Kernel (derzeit leer, bis der Elfenlader geschrieben ist).lib : Helferbibliotheken von BS verwendet. Dies enthält Werkzeuge, Frier (der WIP -Elf -Lader) und eine gemeinsame Bibliothek (die bald in mehrere Kisten aufgeteilt wird). Diese Kisten haben ihre eigenen Bibliotheken, weil sie von mehreren Kisten in BS verwendet werden (z. B. lädt der Bootloader einen Elf, aber das endgültige Betriebssystem kann ebenfalls in der Lage sein).qemu : Eine Kiste, die BS zu einer endgültigen Festplatte aufbaut und in QEMU startet. Führen Sie für die alte, funktionalere Version von BS mit Abhängigkeiten cargo r im Ordner _old .
Die neue Version verwendet mein benutzerdefiniertes Build -System Bargo. Sie müssen also zuerst installieren (Angst nicht - Bargo hat nur 1 Abhängigkeit, einen abhängigen Toml -Parser und sollte in Sekunden kompiliert werden). Bargo ist eine Art Wrapper um Fracht, sodass Sie sie fast genauso verwenden können - bargo b zum Bau, bargo r zum Laufen, -r für den Release -Modus usw.
Wenn Sie sich fragen, warum BS Bargo anstelle von Fracht verwendet, liegt es daran, dass Fracht nicht alle Funktionen hat, die ich benötige. Ich benötige Post-Build-Skripte und die Möglichkeit, build-std für mehrere Ziele zu verwenden, da der Bootloader ein anderes Ziel hat als der Kernel und das Betriebssystem. Ich habe stundenlang versucht, konnte mich aber nicht für eine vernünftige Möglichkeit einfallen lassen, dies in Vanillefracht zu implementieren.
Beide Versionen werden in QEMU ausgeführt. Stellen Sie also sicher, dass dies zuerst installiert ist. Wenn Sie es manuell bauen und ausführen möchten, wird der Befehl unter dem Haus im Wesentlichen darauf hinausgehen: cargo b; qemu-system-x86_64 -drive format=raw,file=target/bs.bin,index=0 . Für die alte Version möchten Sie die Datei _old/disk.bin anstelle von target/bs.bin laden.