2019年9月1日日曜日

「30日でできる! OS自作入門」をどう読むか?


名著と名高い「30日でできる! OS自作入門」を読み始めました。

なんだよ、「Blender2.6マスターブック」の次はこの本についてだらだら書いていくのかよ、とお思いかもしれませんがそうではありません。「OS自作入門」の内容については既に色んな方が書かれているので、僕がつたない知識で解説なんておこがましいです。

じゃぁ何だよ。

この本、残念なことにちょっと古いです。2006年初版です。Windows Vistaがリリースされた年です。世間的にはXPがバリバリ主流の頃です。9x系だってまだ現役だったはずです。

そのため、いかに名著といえどもサンプルコードがそのままだと動かないので、そこのところをどうしたかということを書いておこうと思います。少しググればすぐにヒットしますから、この本を読むような層には不要かもしれませんが、30日どころか、初日で躓いて読むのをやめることになってしまうのはもったいないです。


♪♪♪


まず「30日でできる! OS自作入門」自体ですが、紙の本の他にKindle版もあります。ちょっとお得に買えます。古い本なので、古本も豊富です。古本だと著者さんに印税が入らないですけど、その辺りはお財布と相談してお好きなものをチョイスしてください。

付属のCD-ROMは絶対必要です。でもありがたいことに、この本のサポートサイトでISOイメージが公開されているので、CD-ROMが欠品していても大丈夫です。

サンプルコードを動かすマシンは素直にWindows機を用意しましょう。Macでもいけるという話もありますが、ムダな苦労はしないのに越したことはないです。

僕は最初古いWindows7機を引っ張り出してきて使いましたが、ディスプレイが小さくて辛かったので、途中からMacのBoot Camp上のWindows10で進めることにしました。

アセンブラやC言語を書くためのエディタは、お好きなものを使ってください。僕はいつものVSCode+Vimプラグインです。



1日目のhelloos.imgを編集するためには16進のエディタが必要ですが、xeditというフリーソフトを使いました。適当に選んだのでこれがベストかどうかはわかりませんが、とりあえずちゃんと動いたのでよしとします。


♪♪♪


ディレクトリ構成はドキュメント(Documents)フォルダの中に以下のように作成しました。
C:Document
├─Days30
│  ├─CD
│  └─tolset
│      ├─helloos0
│      │  ├─!cons_nt.bat
│      │  ├─helloos.img
│      │  ├─install.bat
│      │  └─run.bat
│      ├─old
│      │  └─※省略
│      ├─z_new_o
│      ├─z_new_w
│      ├─z_osabin
│      └─z_tools
│          ├─guigui00
│          ├─haribote
│          ├─osa_qemu
│          ├─qemu
│          ├─qemu_9x
│          ├─win32
│          ├─※省略
│          ├─imgtol.com  ←これ!
│          ├─※省略
│          └─wce.exe
CDフォルダには、付属のCD-ROMの中身をすべてコピーしておきます。このなかから、随時プロジェクト(例えばCD¥projects¥01day¥helloos0)をtolsetフォルダの直下にコピーして、編集して使用します。

フォルダをコピーしたら、まず!cons_9x.batは削除します。!cons_nt.batしか使いません。

次は用意できるものによって変わってきます。MacのBoot Campの場合は、フロッピーでブートできませんから(できないよね?)、エミュレータを使うしかありません。そのまま!cons_nt.batで開いたコマンドプロンプトでrun.batを実行します。

Windows機が用意できた方でも、フロッピディスクードライブが用意できなかった場合は、やっぱりMacのBoot Campと同様にエミュレータを使うしかありません。

フロッピーディスクドライブが用意できた方は、ここに書かれているように、imgtol.comを上書きしてから、install.batを修正してディスクを作成して、フロッピーで起動することができます。

そのまま続けていくとtolsetの下がいっぱいになってごちゃごちゃになりますから、次の章に行くときにoldフォルダに放り込んでいきます。必要なときには随時oldからtolsetに戻して動かせばOKです。


♪♪♪


この本ではフロッピーディスクの解説がされていますし、せっかくなのでできれば三日目くらいまではフロッピーディスクを使いたいところです。身近なオジサンに聞いて回ればUSBのフロッピードライブを持っている人がいるかもしれません。ひょっとすると、使っていないフロッピードライブ内蔵のPCが借りられるかもしれませんよ。


2019.10.31追記
「30日で〜」の著者が監修をしている、「作って理解するOS x86系コンピュータを動かす理論と実装」林 高勲(著), 川合 秀実(監修)という本が出てました。「30日で〜」の後継に当たる本なのでしょうか。
悔しいので、僕は「30日で〜」を読んでいくことにします(涙)。