無限遠まで突撃中

ネット日記書きの徒然。

自作OSに役立った本や資料を紹介する

この記事は 自作OS Advent Calendar 2020 - Adventar の4日目の記事です。

自分が今まで読んできた本や資料の中で、自作OSに役に立ったなと思ったものを紹介します。

書籍編

30日でできる!OS自作入門

30日でできる! OS自作入門

30日でできる! OS自作入門

紹介するまでもない有名な本です。 この本で自分は自作OSを始めました。 試行錯誤の過程を踏みながら、最後には立派なOSが出来上がります。

12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

こちらはH8マイコン上で動く自作OSを作ります。 x86_64でスレッドのコンテキストスイッチを実装する際に参考になりました。

Xinuオペレーティングシステムデザイン 改訂2版

現実の製品でも使われているXinuと呼ばれるオペレーティングシステムを、ソースコードレベルで解説したものです。 排他制御の実装が記載されている貴重な本です、自分もこの本を参考にセマフォを実装しました。 またコーディングルールなども簡単に解説されていて、統一感のあるきれいなソースコードだなと思いました。 アーキテクチャx86とArmに対応しているので、複数アーキテクチャに対応したい際にも参考になりそうです。 特におすすめです。

リンカ・ローダ実践開発テクニック

ELFについて詳しく書かれた本です。 ブートローダやプログラムローダ、リンカスクリプトを書く際に大変参考になります。

低レベルプログラミング

低レベルプログラミング

低レベルプログラミング

x86_64アーキテクチャ上で自作OSをするなら読むといい本です。 低レイヤを広く取り扱っている(OSだけでなくバイナリ形式なども)ので、ざっと眺めておくと低レイヤでの地雷を回避できる確率が上がります。

Linuxのブートプロセスをみる

Linuxgrubからブートする様子をソースコードを追って見ていく本です。 x86_64で64bitモードまで上げる際の呪文などが乗っているので、初期化処理を書く際に役立つでしょう。 Linuxの勉強にもなります。

web編

Intel SDM

software.intel.com

何回も読むことになるマニュアルです。 これを読めばCPUの仕様はだいたい乗ってます。

osdev.org

wiki.osdev.org

自作OSを作る際の情報が英語でまとまっています。 大変参考になるサイトですが、たまに動かないサンプルコードが混じっているので注意。

osdev-jpのwiki

github.com

こちらは日本語で自作OSを作る上での情報がまとまっています。 なおosdev-jpはslackやメーリスなどもあります。

resea.org

resea.org

nutaさんという方が作っているマイクロカーネルのページです。 reseaは本当にきれいに設計されており、ドキュメントがしっかりまとまっているので大変参考になります。

オペレーティングシステムⅡのページ

www.coins.tsukuba.ac.jp

筑波大学オペレーティングシステム2という授業のページです。 Linuxカーネルをコードリーディングしています。 実際にデータ構造を設計したりする際に参考になるかと思います。

QEMUソースコード

github.com

なにかデバイスの挙動がわからないときに使えるかもしれないQEMUソースコードです。 自分はAHCIを調査する際に(先輩に助けてもらいながら)読みました。 ただあまり細かい部分やマイナーなデバイスは雑なエミュレーションをしている可能性があるのでそこは注意してください。

他にもまだまだありますが

とりあえずパッと思いつくのを上げてみました。 これもいいよ!というものがあったらコメントなどで教えてください。