「ゼロからのOS自作入門」で自作OSにハマる

f:id:karaage:20210401001145j:plain:w640

周りの人がみんなOS作っていたので「ゼロからのOS自作入門」を買いました

 書籍「ゼロからのOS自作入門」は、存在は知っていて気になっていたのですが「今更自分がOSを作ってもなぁ」という気持ちもありスルーする予定でした。

 ところが、発売と同時にTwitterのタイムライン上に続々と現れるOS自作勢。だんだん我慢できなくなってきて、最終的に「自作OS」「モンハン」のどちらかを選ぶというところまで来て、めでたく(?)自作OS入門とあいなりました(Nintendo Switchを家族に取られがちという事情もありました)。

ゼロからのOS自作入門

ゼロからのOS自作入門

  • 作者:内田公太
  • 発売日: 2021/03/22
  • メディア: Kindle版

 「ちょっとやってみるかな」くらいの気持ちで、本を読みながらOS自作を始めたのですが、これが面白くて思いのほかどハマりしてしまいました。どのくらいハマったかというと、自作OSを開発して動かすためのいい感じの実機がなかったので、X86互換(Intel CPU)のPCを買ってしまったくらいハマっています(笑)

f:id:karaage:20210331171746j:plain:w640
 SEEEDさんのODYSSEY X86J4105

 ちなみにPCは中古を探せばもっと安いものはあると思いますが、入手性がある程度良くて、Linux(Ubuntu)の動作実績があるものという観点で選んでいます。あといい感じのケースがついてるのがポイントです(笑)

 書籍を読んで実践している内容は、初心者に向けた環境構築の仕方も含めて、以下のZennの記事にまとめています。

 購入したPCにネイティブのLinux(Ubuntu)を入れて開発する方法と、Mac(Intel)のDocker上で開発する方法に関して記載しています。本の通り進めているだけなので、今のところはOS自作というより、自作OSを動かすといった方が正しいですが、それでもエキサイティングです。

「ゼロからのOS自作入門」の良かったところ

 書籍の良かったところを3つほど紹介したいと思います。

  • 低レイヤー開発の知識・ノウハウが得られる
  • プログラミングへの理解が深まる
  • 誰でも作れて純粋に楽しい!

低レイヤー開発の知識・ノウハウが得られる

 エミュレータ(QEMU)を使って動作確認する方法、Dockerを使った開発環境構築などを身につけられたのは良かったです。正確には、Dockerを使った方法は書籍には書いていなくて、書籍の内容をDockerで実践している人のネット情報を参考にしていますが、どちらにせよこの本が存在したから得られた情報ですね。

 QEMUに関しては、以前少しだけ使ったことあったのですが、詳しい使い方やどう活用すれば良いか分からないままでした。なので本書は、エミュレータを使った開発入門としてもとても良かったです。知っている人にとっては常識なのかもしれませんが、こういったエミュレータ使った開発方法のノウハウは、なかなか1人で身につけるのは難しい内容ではないかなと思います。Dockerでの環境構築は、VS CodeのRemote Container(devcontainer)がめっちゃ便利なのを知れたのが良かったです。これらの知識は、自作OS以外にも色々応用の効きそうだなと感じました。

プログラミングへの理解が深まる

 超恥ずかしながら、今だにあんまりポインタが理解できていません(使いこなせる自信がないです)。そのポインタを使ったコードを、アセンブラにコンパイルして中身をみることで、低レイヤーで実際に何が起こっているのか、アセンブラのコードと付き合わせながらを理解していくことができます。

 自分のようなポインタ分からんマンでも、かなり理解深まりました。ポインタに限らず、OSのようなハードウェアに近い低レイヤーの知識を得ることは、プログラミング全般に対する理解を深めることに繋がると思います。

誰でも作れて純粋に楽しい!

 何より純粋に楽しいですね。これが一番です。OSを作るのがこんなに楽しいとは思いませんでした。どれだけ楽しいかは、私がPCを買ってしまったことからも分かるのではないかと思います(個人差あります)。

 そして、書籍の内容を実践してみて気づいたのは、私が興味あるのはOSに加えて、いわゆるベアメタルと呼ばれる低レイヤーのプログラミングだったという発見もありました。ベアメタルのプログラミングに関しては、以下のサイトが無料で本(PDF)を公開しているので、そちらも読みすすめています。

 こちらの本、多分これ単体で読んでも、意味もどう動かせば良いのかもさっぱり分からなかったと思うのですが「ゼロからのOS自作入門」を読んだおかげで、ムスカ大佐のように「読める、読めるぞ!」といった状態になっています。環境構築も楽々(というか、ほとんど同じ)です。ありがとう「ゼロからのOS自作入門」。

まとめ

 「ゼロからのOS自作入門」を読んでOS自作・ベアメタルのプログラミングを楽しんでいます、という話でした。

 書籍は、とても丁寧に書かれているので、ある程度知識ある人なら簡単に実践できると思います。初心者の方やMac(Intel Macに限る)を使っていて「なかなか環境構築できない」という方は、私が作成した副読本的記事を読めば、比較的簡単に動かすことができるのではないかと思います。

 この本は、これで完結するという本ではなくて、これをきっかけに「これも面白そう!こんな情報もある!」と興味がどんどん広がっていく本だと感じました。実際私も興味がどんどん広がっています。OS自作は、「明日すぐ使える」といった知識ではありません。ただ、長い視点で深くコンピュータサイエンスを理解したい方や純粋にOSに興味があって作ってみたい方にはとても良い書籍だと思います。オススメです。

ゼロからのOS自作入門

ゼロからのOS自作入門

  • 作者:内田公太
  • 発売日: 2021/03/22
  • メディア: Kindle版

 繰り返しになりますが、以下の記事もよければ書籍と合わせてお楽しみください。

関連記事