- Das Repository Blog OS enthält den Quellcode für die Reihe Writing an OS in Rust auf os.phil-opp.com
- Der Code zu jedem Artikel befindet sich in einem eigenen git branch, sodass man den Zwischenstand nach dem Durcharbeiten des jeweiligen Artikels nachvollziehen kann
- Die Artikel der aktuellen zweiten Edition sind in die Kategorien Bare Bones, Interrupts, Memory Management und Multitasking gegliedert; der Code zum neuesten Artikel liegt im Branch
post-12
- Branch-Namen folgen dem Format
post-XX; zum Beispiel enthält post-03 den Code zum Artikel VGA Text Mode und post-07 den Code zu Hardware Interrupts
- Die erste Edition wird nicht mehr gepflegt, kann aber weiterhin als Referenz dienen; der Projektcode ist, mit Ausnahme des Ordners
blog/content, wahlweise unter Apache-2.0 oder MIT lizenziert
Zweck des Blog-OS-Repositorys
- Dieses Repository stellt den Quellcode für die Reihe Writing an OS in Rust bereit
- Fragen können über ein GitHub-Issue oder den Gitter-Chat gestellt werden
Codestruktur pro Artikel
- Der Code zu jedem Artikel befindet sich in einem eigenen git branch
- So lässt sich der Zwischenstand nach dem Durcharbeiten des Artikels nachvollziehen
- Der Code zum neuesten Artikel befindet sich in
post-12
- Die Branches der einzelnen Artikel sind über die Links
(source code) in der folgenden Artikelliste zu finden
- Branch-Namen verwenden das Format
post-XX
post-03: VGA Text Mode
post-07: Hardware Interrupts
- Für die Build-Anleitung sollte die README des jeweiligen Branches herangezogen werden
- Mit
git worktree kann ein bestimmter Branch in ein Unterverzeichnis ausgecheckt werden
git worktree add code post-10
- Der obige Befehl erstellt das Unterverzeichnis
code, das den Code zum 10. Artikel Heap Allocation enthält
Artikelliste der aktuellen Edition
- Ziel ist es, ein Schritt-für-Schritt-Tutorial in Form einzelner Blogartikel bereitzustellen
-
Bare Bones
-
Interrupts
-
Memory Management
-
Multitasking
Erste Edition
- Der aktuelle Blog ist die zweite Edition
- Die erste Edition ist veraltet und wird nicht mehr gepflegt, kann aber weiterhin nützlich sein
- Die erste Edition enthält Artikel in den Kategorien Bare Bones, Memory Management, Exceptions und Additional Resources
Lizenz und Beiträge
- Das Projekt kann, mit Ausnahme des Ordners
blog/content, nach Wahl des Nutzers unter der Apache License 2.0 oder der MIT license genutzt werden
- Für die Lizenz des Ordners
blog/content ist blog/content/README.md heranzuziehen
- Sofern nicht anders angegeben, werden Beiträge, die absichtlich zur Aufnahme eingereicht wurden, gemäß der Definition von Apache-2.0 ohne zusätzliche Bedingungen unter der oben genannten Doppellizenz angewendet
1 Kommentare
Hacker-News-Kommentare
Ich habe vor ein paar Jahren die 2. Auflage komplett durchgearbeitet, und sie war wirklich augenöffnend.
Die Erklärungen zur Betriebssystementwicklung sind gut, aber auch als Material, um nach dem Rust-Buch weiter Rust zu lernen, war es nützlich.
Der Autor versteht Rust-Idiome sehr gut, daher konnte ich auch viel daraus lernen, zu sehen, wie man Dinge im Code ausdrückt, verglichen mit der Art, wie ich es gemacht hätte. Besonders async-await in Rust, wo erklärt wird, wie Futures in Rust implementiert sind, war das Beste, was ich zu diesem Thema gesehen habe.
Ich hoffe, Phil findet wieder Motivation und setzt die Arbeit an der EFI-basierten 3. Auflage fort. Nach den Commits im Git-Branch sieht es so aus, als sei sie ins Stocken geraten, und ich war etwa ein Jahr lang GitHub-Sponsor, aber es war jedes Mal schade zu sehen, dass er in den „This Month In Rust OSDev“-Beiträgen fehlte.
Trotzdem ist die 2. Auflage ein großartiges Material für Wochenend-Entwicklungszeit, und der investierte Aufwand ist deutlich zu spüren.
Nachdem ich dieses Tutorial vor fünf Jahren abgeschlossen hatte, begann ich mit der Arbeit an MOROS. Ich kann es allen sehr empfehlen, die sich für Rust und Betriebssystementwicklung interessieren.
Phil hat wirklich viel Arbeit hineingesteckt, und das merkt man. Das Projekt deckt viele Themen ab, und danach kann man mit dem osdev wiki weitermachen.
MOROS: http://moros.cc, https://github.com/vinc/moros
MOROS scheint diese Kriterien ebenfalls zu erfüllen, daher habe ich es gebookmarkt.
Aus irgendeinem Grund startet es bei mir in QEMU allerdings nicht, daher konnte ich es noch nicht ausprobieren; ich vermute, dass das eher an mir liegt als am Betriebssystem selbst.
Nachdem ich mich intensiv mit Rust und Betriebssystementwicklung beschäftigt hatte, habe ich dieses Material heute entdeckt und war von der Qualität der Inhalte beeindruckt.
Man lernt viel über Geschichte und Design von Betriebssystemen und nimmt gleichzeitig ganz natürlich Rust-Aspekte mit. Phil hat wirklich hervorragende Arbeit geleistet.
Ich bin gerade von der Rustconf zurückgekommen; im Rust-Umfeld scheint es ungefähr fünf größere Betriebssystem-Releases zu geben, viele davon mit besonderem Fokus auf Echtzeit.
Allerdings sind nicht alle Open Source.
Daneben gibt es noch weitere, eher nischenhafte oder nicht öffentliche Projekte.
Bei klassischen Betriebssystemen, also nicht auf Echtzeit ausgerichteten, ist Redox das bekannteste Beispiel; außerdem gibt es viele Forschungs-, Experimental- und Lehrbetriebssysteme, darunter Blog OS aus diesem Guide/Beitrag.
Ich empfehle besonders die erste Auflage dieser Artikel.
Die aktuelle Ausgabe übernimmt mit einem speziellen Crate das gesamte Bootloading, was sich für mich so anfühlt, als würde sie zu viel abnehmen.
Durch diesen Kommentar habe ich tatsächlich Lust bekommen, es einmal auszuprobieren. Ich möchte zum Spaß ein kleines Betriebssystem bauen, aber ich mag den Teil nicht, in dem man eine Art magische Beschwörung durchlaufen muss, nur um einen brauchbaren Maschinenzustand zu erreichen, in dem man überhaupt etwas tun kann.
Das ist natürlich nicht schlecht; verschiedene Leute mögen einfach unterschiedliche Teile daran.
Dieses Material hat mich 2021 dazu gebracht, mit Rust anzufangen, und ich bin wirklich dankbar, dass es solche Ressourcen gibt.
Phils Artikel zur Betriebssystementwicklung sind immer gut zu lesen.
Er soll nächsten Monat auf der GOSIM-Konferenz sprechen.
https://china2024.gosim.org/speakers#philipp-oppermann
Es wäre schön, ihn persönlich treffen und mit ihm sprechen zu können.
https://harvey-os.org/ ist eingestellt worden, und das Team arbeitet jetzt an diesem Projekt: https://github.com/r9os/r9
Ich bin kein professioneller Entwickler, aber wenn ich Formulierungen wie „X auf Y schreiben“ sehe, muss ich an Ryan Reynolds’ „But why?“-Meme denken: https://screenrant.com/ryan-reynolds-but-why-gif-harold-kuma...
Wenn es ums Lernen geht, finde ich, dass man das jederzeit machen kann. Je mehr man programmiert, desto besser wird man.
Außerdem sehen MOROS als Projekt und die Seite dazu cool aus.