Ein Betriebssystem in Rust schreiben
(github.com/phil-opp)- Dieses Repository enthält den Quellcode der Serie Writing an OS in Rust, die auf os.phil-opp.com bereitgestellt wird
- Bei Fragen kann man ein Issue öffnen oder auf Gitter chatten
Speicherort des Codes
- Der Code zu jedem Beitrag befindet sich in einem separaten git-Branch
- Der Zwischenstand nach jedem Beitrag kann eingesehen werden
- Der Code des neuesten Beitrags ist hier verfügbar
- Über den Link
(source code)in der Beitragsliste findet man den Branch zu jedem Beitrag - Die Branches sind im Format
post-XXbenannt (XXist die Beitragsnummer) - Beispiel: Der Beitrag VGA Text Mode ist
post-03, der Beitrag Hardware Interrupts istpost-07 - Build-Anweisungen stehen in der Readme des jeweiligen Branches
- Mit git worktree kann ein Branch in ein Unterverzeichnis ausgecheckt werden
git worktree add code post-10 - Der obige Befehl erstellt ein Unterverzeichnis namens
codeund enthält den Code des 10. Beitrags ("Heap Allocation")
Beiträge
- Das Ziel dieses Projekts ist es, in einzelnen Blogbeiträgen ein Schritt-für-Schritt-Tutorial bereitzustellen
- Derzeit gibt es die folgenden Beiträge
Bare Bones:
- A Freestanding Rust Binary (source code)
- A Minimal Rust Kernel (source code)
- VGA Text Mode (source code)
- Testing (source code)
Interrupts:
- CPU Exceptions (source code)
- Double Faults (source code)
- Hardware Interrupts (source code)
Memory Management:
- Introduction to Paging (source code)
- Paging Implementation (source code)
- Heap Allocation (source code)
- Allocator Designs (source code)
Multitasking:
- Async/Await (source code)
Beiträge der ersten Edition
- Die aktuelle Blogversion ist die zweite Edition; die erste Edition wird nicht mehr gepflegt
- Die Beiträge der ersten Edition können aber weiterhin nützlich sein
- Die Beitragsliste ist wie folgt
Bare Bones:
- A Minimal x86 Kernel (source code)
- Entering Long Mode (source code)
- Set Up Rust (source code)
- Printing to Screen (source code)
Memory Management:
- Allocating Frames (source code)
- Page Tables (source code)
- Remap the Kernel (source code)
- Kernel Heap (source code)
Exceptions:
- Handling Exceptions (source code)
- Double Faults (source code)
Additional Resources:
- Cross Compile Binutils
- Cross Compile libcore
- Set Up GDB
- Handling Exceptions using Naked Functions
- Catching Exceptions (source code)
- Better Exception Messages (source code)
- Returning from Exceptions (source code)
Lizenz
- Dieses Projekt ist mit Ausnahme des Ordners
blog/contentunter einer der folgenden Lizenzen lizenziert- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
- Für die Lizenz des Ordners
blog/contentsieheblog/content/README.md
Beiträge
- Sofern nicht ausdrücklich anders angegeben, wird jeder absichtlich eingereichte Beitrag gemäß der Definition in der Apache-2.0-Lizenz wie oben unter einer Doppellizenz aufgenommen
Zusammenfassung von GN⁺
- Dieses Projekt bietet ein Tutorial, das Schritt für Schritt erklärt, wie man mit Rust ein Betriebssystem schreibt
- Jeder Beitrag behandelt ein eigenständiges Thema und wird zusammen mit Codebeispielen erläutert
- Es ist eine sehr nützliche Ressource für Menschen, die sich für Betriebssystementwicklung interessieren
- Man kann lernen, wie sich die Sicherheit und Performance von Rust für die Entwicklung eines Betriebssystems nutzen lassen
- Ein anderes Projekt mit ähnlicher Funktionalität ist
Redox OS
1 Kommentare
Hacker-News-Kommentare
Habe vor ein paar Jahren die zweite Edition abgeschlossen und dabei viel gelernt
Habe nach Abschluss des Tutorials vor 5 Jahren mit der Arbeit an MOROS begonnen
Statt ein OS in Rust zu schreiben, sollte man eine Datenplattform bauen, die DML/DDL ausführen kann
Habe dieses Material entdeckt, nachdem ich mich intensiv mit Rust und OS-Entwicklung beschäftigt hatte
Dank dieses Materials habe ich 2021 mit Rust angefangen
Phils Texte über OS-Entwicklung sind immer lesenswert
Das Harvey-OS-Team arbeitet jetzt am R9OS-Projekt
Ich empfehle besonders die Beiträge der ursprünglichen Edition
Bin gerade von der Rustconf zurückgekommen, und es gibt ungefähr fünf größere OS-Releases mit Fokus auf Echtzeitbetriebssysteme
Eine weitere gute Ressource ist, mit Rust ein RISC-V-OS zu bauen