126 Punkte von GN⁺ 2025-01-09 | 14 Kommentare | Auf WhatsApp teilen
  • Dieses Buch erklärt, wie man ein kleines Betriebssystem von Grund auf Schritt für Schritt aufbaut
  • Die Begriffe Betriebssystem (OS) oder Kernel-Entwicklung können einschüchternd wirken, aber die Grundfunktionen eines OS (insbesondere des Kernels) sind überraschend einfach
  • Auch Linux begann ursprünglich mit 8.413 Zeilen Code, und obwohl der heutige Linux-Kernel sehr groß ist, startete er als kleine Codebasis wie ein Hobbyprojekt

Einstieg

  • Wir werden grundlegende Kontextwechsel, Paging, User Mode, eine Kommandozeilen-Shell, Disk-Device-Treiber sowie Datei-Lese-/Schreibvorgänge in C implementieren
  • All das ist mit 1.000 Zeilen Code möglich
  • Der schwierigste Teil beim Bau eines eigenen OS ist das Debugging
  • Bevor man printf-Debugging implementiert hat, kann man es nicht nutzen, und man muss verschiedene Debugging-Techniken und Fähigkeiten lernen, die in der Anwendungsentwicklung nicht nötig waren
  • Besonders wenn man „von Grund auf“ beginnt, trifft man auf schwierige Teile wie den Boot-Prozess und Paging
  • Aber keine Sorge! Wir werden auch lernen, wie OS-Debugging funktioniert
  • Je schwieriger das Debugging ist, desto größer ist die Zufriedenheit, wenn es gelingt
  • Tauchen wir ein in die faszinierende Welt der OS-Entwicklung!

Weitere Informationen

  • Die Implementierungsbeispiele können auf GitHub heruntergeladen werden.
  • Dieses Buch steht unter der Lizenz CC BY 4.0, die Implementierungsbeispiele und der Quellcode unter der MIT-Lizenz
  • Man sollte mit C und einer UNIX-ähnlichen Umgebung vertraut sein; wenn du gcc hello.c && ./a.out ausführen kannst, bist du startklar
  • Dieses Buch wurde ursprünglich als Anhang zum auf Japanisch verfassten Buch „Design und Implementierung eines Mikrokernels“ geschrieben
  • Viel Spaß beim OS-Hacking!

Inhaltsverzeichnis des Buchs

  1. Intro
  2. Getting Started
  3. RISC-V 101
  4. Overview
  5. Boot
  6. Hello World!
  7. C Standard Library
  8. Kernel Panic
  9. Exception
  10. Memory Allocation
  11. Process
  12. Page Table
  13. Application
  14. User Mode
  15. System Call
  16. Disk I/O
  17. File System
  18. Outro

14 Kommentare

 
princox 2025-01-15

Ein Betriebssystem kannte ich bisher immer nur aus Büchern, daher ist es toll, es einmal im tatsächlichen Code zu sehen.

Vielen Dank fürs Teilen dieses großartigen Materials.

 
yuhyun 2025-01-13

Vielen Dank für das großartige Material!!!!!!!!

 
reagea0 2025-01-10
  • Dieses Buch wurde ursprünglich als Anhang zu dem auf Japanisch verfassten Buch „Entwurf und Implementierung eines Mikrokernels“ geschrieben.

Darum beneide ich sie wirklich sehr. In Japan scheinen sehr viele Fachbücher sehr gut herauszukommen. Das liegt wohl an der Bevölkerungszahl, oder?

 
gurugio 2025-01-11

Wenn man sich die übersetzten Bücher ansieht, scheint es keine zu geben, die technisch wirklich sehr tief gehen; stattdessen erscheinen wohl einfach Bücher aus den unterschiedlichsten Bereichen. Vermutlich liegt das daran, dass der Markt größer ist.

 
romakus 2025-01-10

Vielen Dank für das gute Material.

 
skrevolve 2025-01-09

Versuchen Sie, es einmal selbst zu bauen, oder kommen Sie zumindest auf ein Verständnisniveau, bei dem Sie später sehen können, wie Linux-Systeme funktionieren — das ist nützlich, wenn Sie mit Linux arbeiten.

 
gurugio 2025-01-09

Bis in die frühen 2000er war es sogar recht populär, dass Einzelne solche kleinen Kernel selbst gebaut haben; ich habe das damals auch ausprobiert und konnte dadurch einige Jahre an der Entwicklung des Linux-Kernels arbeiten. Auch hierzulande sind viele Bücher über die Entwicklung von Betriebssystemen erschienen, also kann man, wenn man gut sucht, Bücher finden, die das noch ausführlicher erklären.
Wenn man nicht vorhat, in ein entsprechendes Fachgebiet zu wechseln, sondern es nur aus Interesse macht, ist das keine schlechte Sache, aber ich persönlich würde heutzutage eher zu Studien rund um AI oder k8s raten. Noch heute tauchen auf Seiten wie KLDP gelegentlich Beiträge auf, in denen jemand schreibt, dass er Kernel-Entwickler werden möchte, und in den Kommentaren heißt es dann durchweg nur, man solle ins Ausland gehen.

 
bbulbum 2025-01-10

Wahrscheinlich liegt es daran, dass es hierzulande keine Unternehmen gibt, die auf Kernel-Ebene investieren..? Haha

 
gurugio 2025-01-11

Ich weiß nicht genau, ob sie es nicht tun, weil es nicht nötig ist, oder ob sie es nicht können, aber es gibt so etwas jedenfalls nicht.

 
coma333 2025-01-09

Vielen Dank für das tolle Material.

 
tsboard 2025-01-09

Solche Bücher sind wohl genau das, was man in Wuxia-Romanen als geheime Kampfkunst-Handbücher bezeichnen würde, haha.

 
bbulbum 2025-01-09

Das ist wirklich sehr interessant. Ich wollte irgendwann einmal Systemprogrammierung lernen, und als erster Einstieg scheint mir das die Erwartung zu wecken, die Funktionsweise eines Betriebssystems aus programmiertechnischer Sicht verstehen zu können!

 
GN⁺ 2025-01-09
Hacker-News-Kommentare
  • Der Autor hat ein Buch geschrieben, damit man an einem Wochenende selbst ein Betriebssystem bauen kann, und man kann statt C auch eine bevorzugte Programmiersprache wie Rust oder Zig verwenden

    • Es wurde auf die wesentlichen Teile reduziert, ohne UNIX zu ähneln, und es macht Spaß, über die Unterschiede zu Linux oder Windows nachzudenken
    • Ein Betriebssystem zu entwerfen ist so, als würde man seine eigene Welt erschaffen
    • Einige Abschnitte könnten sich maschinell übersetzt anfühlen, und es wird darum gebeten, bei Gelegenheit einen PR zu schicken
    • Die Inhalte sind in Markdown geschrieben
  • Basierend auf Erfahrungen mit "Hobby"-Betriebssystemprogrammierung ist es ratsam, die Einrichtung für GDB-Debugging so früh wie möglich hinzuzufügen

    • QEMU hat einen eingebauten GDB-Server, und man muss den GDB-Client für die Zielarchitektur (riscv) über das Netzwerk mit dem QEMU-GDB-Server verbinden
  • Ich finde es großartig, ein kleines Betriebssystem für RISC-V zu bauen

    • Ich persönlich habe einen Kernel für x86-64 in Nim geschrieben und entwickle derzeit ein JetBrains-Plugin
  • Für Rust-Fans dürfte der Guide von phil-opp eine unterhaltsame Übung sein

    • Beim ersten Versuch habe ich nur etwa 5 % verstanden, aber 2–3 Jahre später habe ich es noch einmal versucht und das Thema Punkt für Punkt durchgearbeitet
  • Ich habe angefangen, RISC-V zu lernen, und der Emulator aus dem Buch, das ich gerade lese, ist einfacher als QEMU und hat eine merkwürdige Lizenz

    • Es sieht wie ein akademisches Projekt aus, und ich frage mich, ob es tatsächlich verwendet wird
  • Ein Vergleich mit xv6-riscv wäre interessant

    • Es gibt eine HTML-Version des xv6-Buchs
  • Diskussionen auf Low-Level-Ebene sind immer interessant

    • Auf der "RISC-V-101-Seite" wurde ein kleiner Tippfehler entdeckt: Statt "ISA" steht dort fälschlich "CPU"
  • Der schwierigste Teil beim Bau eines Betriebssystems ist das Debugging

    • Je älter ich werde, desto mehr denke ich, dass sich Probleme, die kein komplexes Spezialwissen erfordern, durch wiederholtes Ausprobieren lösen lassen
  • Es werden zwei Projekte erwähnt

    • nuta/microkernel-book
    • mit-pdos/xv6-riscv
  • Gutes Material, ich habe es mir zum Lesen am Wochenende gespeichert

 
mhcoma 2025-01-14

Den Kernel in Nim ...
Klingt interessant.