7 Punkte von GN⁺ 2024-09-15 | 1 Kommentare | Auf WhatsApp teilen
  • 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

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

 
GN⁺ 2024-09-15
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

    • Sieht ziemlich cool aus. Bisher war xv6 mein Lieblingsprojekt, weil die Codebasis angenehm klein ist und man sie in ein paar Wochen verstehen kann, weil es sich mit dem standardmäßigen GCC bauen lässt, den der Paketmanager bereitstellt, sodass man keinen eigenen GCC aus den Quellen bauen muss, und weil es auch User Space gibt.
      MOROS scheint diese Kriterien ebenfalls zu erfüllen, daher habe ich es gebookmarkt.
    • Hat http://moros.cc kein TLS? :(
    • Ich habe den RSS-Feed schon länger abonniert, und MOROS wirkt wie ein wirklich cooles Projekt.
      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.

    • Zu den wichtigen Echtzeitbetriebssystemen (RTOS) gehören Tock-OS, Oxid-OS (als Safety-Version von Tock-OS, ungefähr in der Rolle von freertos/safertos) und Hubris von Oxide Computers. Embassy und RTIC sind Frameworks, die häufig für Scheduling und Ressourcenverwaltung auf Bare-Metal-Systemen genutzt werden, aber keine klassischen RTOS.
      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.

    • Mir gefällt, dass es einen Weg gibt, den Bootloading-Teil zu überspringen.
      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.