KOZOSとは?でも書いたように, KOZOSはFreeBSD上で動作します.
しかし,まあぼくみたいに普段から FreeBSD をメインOSとして利用しているならば それでもいいのだけど,KOZOSを試してみるためにわざわざFreeBSDをインストール しなければならないというのは,やっぱり面倒です.ここでは他OS上で動かす方法に ついてちょっと説明します.
FreeBSD以外のOS上で動かそうとするならば,いくつか選択肢があると思います.
次に Linux ですが,やはり多少の修正が必要になるようです. とくに setjmp()/longjmp() 利用のコードでは,jmp_buf の構造が違うので なんか適当に修正しないとダメでしょう.あと getcontext()/setcontext() を使った ソースについてはちょっとぼくのほうでも試してみたのですが, とりあえず第25回のソースに以下の修正を加えることでコンパイルはできました.
が,実行してみても Segmentation Fault で落ちてしまい, まともに動きませんでした.ちょっと詳しくは調べてないのですが, ということで Linux の動作も現状,確認できていません. ちなみに上で試したディストリビューションは,Fedora Core 8 でした.
※ もしも,Linuxで動いたというかたがいればぜひ連絡ください.
で,どうするかなのですが,エミュレータを使うのがとりあえず手軽で確実だと 思います.QEMUというフリーのPCエミュレータがあって,Windows などのOS上に 仮想PCを作成し,そこに FreeBSD をインストールして動かすことができます. ぼくも使ってみましたが,実行速度さえ気にしないのならば,何の問題もなく 確実に動きます.
QEMUについては,以下を参照してください.
で,本来ならばここでインストール済みのHDDイメージを配布しようかなーなんて 思ってたのですが,ためしにインストールしてみたら,最小構成でもやっぱし それなりのサイズになってしまったのであきらめました. まあ FreeBSD のインストールはそんなに難しくないので, 各自,やってみてくださいな.
参考までに,Windows 上で QEMU で FreeBSD 環境を作成する手順は以下の通り. FreeBSDのインストール方法に関しては,まあ他にも探せばいっぱい出てくると 思うので,てきとうになんか参考にしてほしい.
qemu-img create -f qcow freebsd.qcow 8G
qemu -L . -m 256 -boot d -cdrom //./e: -hda freebsd.qcow -localtime
qemu -L . -m 256 -hda freebsd.qcow -localtime
-cdrom //./e:あと snapshot モードというのがあって,起動時に -snapshot オプションを 指定すると,HDDイメージに書き込まないで動作する.実験用で, 常に同じ状態で立ち上げたい場合には便利.
あとQEMUは,Cirrus Logic GD5446ビデオカードをエミュレートするので, Xのドライバに cirrus を指定することでXも利用できる. 具体的には,/usr/X11R6/lib/X11/xorg.conf でドライバの指定部分を 以下のように書けばよい.
# Driver "i810" # VendorName "Intel Corporation" # BoardName "945G Integrated Graphics Controller" # BusID "PCI:0:2:0" Driver "cirrus"
(2009/02/16追記) ドライバ指定が cirrus ではうまくいかず,vesa だと問題なく動いた. ちょっとよくわからんのだが,X -configure を実行して作成した xorg.conf を そのまま利用する(これだとデフォルトでドライバがvesaになっている)ことで うまく動作した.あと X -configure を実行すると画面がおかしくなってもとに 戻らなかったりするが,xorg.conf はちゃんと作成されているようだ.
(2009/04/10追記) X -configure で画面が真っ暗になってウンともスンとも言わなくなってしまう件だが, rebootと打ってEnterを押したらしばらくしてリブートして復旧した. 単に画面が映らなくなっているだけで,X -configure は正常終了しているようだ.
あとQEMUでは,最低限,以下の操作を覚えておくといいだろう.
使ってみて思ったけど,こーいう実験のためには,仮想PCはいろいろと融通が効いて, とっても便利で良いです. 実は Linux (Fedora Core 8)上での動作実験も,Windows 上のQEMU環境で行いました. おすすめ!