はるか昔、浪人生をしていた頃から「OS」というものに興味を持ち始め、
ずっと「自分で作ってみたいな〜」という漠然な思いはあったものの、
技術も知識もないため放置していました。
ところが先日、知り合いからこの本
の存在を教えてもらってからは、しばらく悶々とする日々を送っていたのですが、
とうとう我慢しきれず買ってしまいました。
と言うことで、いつまでかかるかはわからないのですが
OS自作にチャレンジしてみようと思います。
メモとモチベーション維持のためここで経過を書いていくつもりです。
(が、間隔が数ヶ月空くのはざらになりそうな気もしています)
さて、この本で作成するOSのターゲットは、当然のことなんですがWindowsパソコンです。
さらに、なんと著者の方はOSを自作するためにコンパイラやアセンブラまで自作していて、
その動作対象も当然ながらWindowsパソコンです。
が、私のメインマシンはMac。Windowsパソコン(ノート)も持っていますが、
今後のことも考えるとターゲットはともかく開発自体はMacでやりたい気がします。
そういうことなので、最初から脱線気味なんですが、まず、
開発環境を準備するところから始めます。
ちょっとだけ読み進んだところでは、下記のものが必要になりそうです。
ちなみに、私の開発環境は iMac(G4 - flat panel)+ MacOS X 10.4.x となります。
- エミュレータ
→作成したものの動作確認をするのに必要そう。
- バイナリエディタ
→本文の中で、最初はバイナリエディタでものを作っている様です。
- アセンブラ
→本文の中でIPLの作成等に使用されている様な感じです。
- コンパイラ
→これがないとプログラムが作れません。
作成するOSのターゲットがWindowsパソコンとのことなので、
私のiMacでは当然作ったものは試せません。
どうしようかと思っていましたところ、
幸い本書内で紹介されているQEMUというエミュレータがMacにも移植されていました。
「Q [kju:]」というエミュレータですが、
本書の一番最初のサンプルは問題なく動いたので、これで大丈夫でしょう。
Mac用のバイナリエディタが以外と数が少なくて見つけるのに苦労しました。
最初は「HexEditor」
というソフトを利用していたのですが、これはインラインでの入力ができません。
最近インラインで入力ができる「Hex Fiend」
というソフトを見つけたので、今後利用する機会があるならば、こちらを利用しようと思っています。
アセンブラは本書では「nask」という自作のアセンブラを使用していて、
それは「NASM」というアセンブラに似ているとのことなんですが、
探すのとインストールが面倒なので、既に私のPCに入っている「gas」を利用することにします。
同じバイナリを出力できるかどうかが不安なところもあるんですが、
Universal Binary にも対応しているので、x86 系のコードははけそうですし、
まあ、アセンブラなので大丈夫だろうと言うことでこれで進めることにします。
アセンブラ同様、コンパイラも自作されている様ですが、
元は「gcc」と言うことで、こちらも既にインストール済みの「gcc」を
そのまま利用することにします。
以上、アセンブラとコンパイラは動作確認していないので、多少不安はありますが、
準備完了と言うことで進めていきたいと思います。
(2006/05/02)