RustでOSを書く
(github.com/phil-opp)- このリポジトリには、os.phil-opp.com で提供されている Writing an OS in Rust シリーズのソースコードが含まれています
- 質問があれば Issue を作成するか、Gitter でチャットできます
コードの場所
- 各記事のコードは個別の git ブランチにあります
- 各記事後の中間状態を確認できます
- 最新記事のコードは こちら で確認できます
- 記事一覧で
(source code)リンクをたどると、各記事のブランチを見つけられます - ブランチは
post-XX形式で命名されています(XXは記事番号) - 例: VGA Text Mode 記事は
post-03、Hardware Interrupts 記事はpost-07です - ビルド手順は該当ブランチの Readme を参照してください
- git worktree を使ってサブディレクトリにブランチをチェックアウトできます
git worktree add code post-10 - 上のコマンドは
codeというサブディレクトリを作成し、10 番目の記事("Heap Allocation")のコードを含めます
記事
- このプロジェクトの目標は、個別のブログ記事で段階的なチュートリアルを提供することです
- 現在、次のような記事があります
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)
第1版の記事
- 現在のブログ版は第2版であり、第1版はもはやメンテナンスされていません
- 第1版の記事も依然として有用な場合があります
- 記事一覧は次のとおりです
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)
ライセンス
- このプロジェクトは
blog/contentフォルダを除き、以下のいずれかのライセンスです- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
blog/contentフォルダのライセンスはblog/content/README.mdを参照してください
コントリビューション
- 明示的に別途記載がない限り、意図的に提出されたすべてのコントリビューションは、Apache-2.0 ライセンスで定義されているとおり、上記のデュアルライセンスに含まれます
GN⁺のまとめ
- このプロジェクトは、Rust で OS を書く方法を段階的に説明するチュートリアルを提供します
- 各記事は独立したテーマを扱い、コード例とともに説明されています
- OS 開発に関心のある人にとって非常に有用な資料です
- Rust の安全性と性能を活かして OS を開発する方法を学べます
- 類似機能を持つ別のプロジェクトとして
Redox OSがあります
1件のコメント
Hacker Newsのコメント
数年前に第2版を完了して、多くのことを学んだ
5年前にチュートリアルを完了した後、MOROSの作業を始めた
RustでOSを書く代わりに、DML/DDLを実行できるデータプラットフォームを作るべきだ
RustとOS開発について深く掘り下げた後、この資料を見つけた
この資料のおかげで、2021年にRustを始めることになった
PhilのOS開発に関する記事はいつも素晴らしい読み物だ
Harvey OSチームは現在R9OSプロジェクトに取り組んでいる
元の版の投稿を特に勧めたい
Rustconfから戻ったところだが、リアルタイムOSに重点を置いた主要なOSリリースが5つほどある
もう一つの良い資料は、Rustを使ってRISC-V OSを作るものだ