VirtualBoxという仮想化ソフトを使えば別のOSを動かせると聞いたのでMacBookAirで試してみた。 Ubuntuのisoイメージ(ubuntu-ja-12.10-desktop-i386.iso)をダウンロードして食わせてみると、そこそこの速度で動く。すごいね。
これを使えば「自作OS入門」を試せるんじゃないか?ということでアセンブラのソース:
; hello-os |
をnasmでアセンブルし、そしてフロッピーディスクのイメージとしてサイズが合うように、後ろを0x00で埋める:
nasm -o helloos.img helloos.asm && ruby -e 'print "\0" * (0x168000-0x200)' >> helloos.img |
できたファイルをVirtualBoxに食わせてやる。VirtualBoxでゲストOSを新規に追加、そのときタイプを”Other”、バージョンを”Other/Unknown”にする
「設定」>「ストレージ」で、「フロッピーコントローラ」を追加して、ディスクイメージとして先ほど作ったhelloos.imgを指定する
そして「起動」を選ぶと、めでたく実行された
Mac上で動くQというqemuがあって、そちらでも動かすことができた
これらのエミュレータを使って、C言語で自作OSを…と思ったが、C (gcc) からコンパイル結果のバイナリを取り出す方法が、Xcodeを入れた時に入るgccがAppleの作った?llvmのもので、リンカのld が -Tオプションでリンカスクリプトを受け付けなくて、うまい取り出し方法がわからなかった…orz
じゃあってことでVirtualBox上で動かしたUbuntuにqemuを入れて、それで自作OSを動かそうとすると、立ち上がるんだけど何度もリセットがかかってウィンドウが閉じたり開いたり、そしてウィンドウ内のフォントの大きさが切り替わってまともに動かない…なにこれどうしたらいいの。