どうも、たくチャレ(@takuchalle)です。

Rustx86-64向けの小さなOSの作り方を紹介しているブログがあります。これを一通り読んで写経しました。 このブログでは起動されて、マルチタスクが動くところまで丁寧に解説してくれます。 内容は英語ですが、割と平易な英語が書かれてると思うので読めると思います。また、有志が日本語訳を行っていますが、まだ全ては訳されていないです。

This blog series creates a small operating system in the Rust programming language. Each post is a s

QEMUを対象に説明してくれて実装するので、実機がなくても簡単に始めることができます。

良かった点

まず挙げられるのが、OS を実装に必要なx86-64の機能について知ることができる点です。

BIOS, CPU 例外、割り込み、ページング、ヒープアロケータなどの機能の説明があり、実際に実装していく過程で理解が深まります。 ここまで理解できればOSが作れるということですね。

次に、様々なRustの機能を具体的に知ることができる点です。

  • no_stdな環境のプログラムの書き方
  • カスタムテストフレームワーク
  • アロケータの実装
  • 非同期ランタイムの実装

標準ライブラリがない状態ですので、printマクロも自前で実装するし、標準のテストフレームワークも使えないので、一つずつ積み上げていく中でRustと少し仲良くなれたかなって気がします。

マルチタスクを実現するのに非同期ランタイムを自前で実装しています。 非同期ランタイムを自身で実装することはほとんどないと思うので貴重な資料でした。ちゃんと理解できたとは言えない状態ですが・・・

イマイチな点

x86_64の一番プリミティブな実装の部分は、x86_64 crateが隠蔽しているところです。

ページングや割り込み周りの部分のほとんどがx86_64 crateに含まれているので、このあたりを自分で実装したいと思っている人には物足りないと思います。 ただ解説は丁寧にされているので個人的には十分でした。

私はx86_64をあまり深ぼる気はないので、次はこのOSRISC-Vに移植しようと思っています。

リポジトリ

私が作業した時のリポジトリはGitHubにあがってます。

Implementation of https://os.phil-opp.com/. Contribute to takuchalle/blog_os development by creating