30日でできる! OS自作入門を読み終えた
April 17th, 2021
『30日でできる! OS自作入門』を読み終えた。書籍のタイトル通り30日でできるとの触れ込みだがバグの探索などで実際には40日ほどかかった。
感想
バイナリエディタを起動して値を直打ちするところから始まり、最終的にアプリケーションまで作り上げるのはモノを作っている実感があり充実していたように思う。 個人的にはタスクの切り替えやシステムコールの実装をしている瞬間がOSを作っている感じがしてとても楽しく、数百行で実装できるという点も良かった。Makefileとリンカスクリプトについてもあまり知識が無かったので勉強になった。
その一方でCPUなどチップセットの仕様に関する部分はほとんど触れずじまいだったので本当にOSについて理解しようとすると莫大な時間が必要なこともわかった。
苦難
この本の特徴として書籍自体が古いこと、ビルドの際に筆者の独自プログラムが使われていることの2点があり、この対応にかなり苦しめられた(特に3日目)。 ただ、幾人もの先駆者がいるので彼らのブログやGitHubのリポジトリを見て自身のマシン(Ubuntu 18.04.5 LTS)上で動く解決策を探していった。 また、実装してもプログラムが動かない箇所もあり読み飛ばした部分もある。
参考になったのは以下のリンク
- itiB/hariboteOS_30days 完走済みのリポジトリ
- kamaboko123/30daysOS 上と同じく完走済みのリポジトリ
- 『30日でできる!OS自作入門』のメモ OS用とアプリ用のリンカスクリプトで参考になった
- 30日でできる!OS自作入門 まとめ 3日目のブートローダー部分で大変役に立った
また本書はQEMUを使っているが自分はVirtual Boxを利用した。これは、始めはQEMUでコードを動かしていたが、 途中CPUの割り込み許可と禁止を頻繁に行うコードを実行させた際極端に重くなったのが理由になる。
OSの勉強
これを作っている途中で後継本となる『ゼロからのOS自作入門』が発売された。最近低レイヤの勉強がとても楽しいのでこちらも読んでいきたい。