LinuxやWindowsで動かすには?

2007/12/05

あなたは 人目のお客様です.

KOZOSとは?でも書いたように, KOZOSはFreeBSD上で動作します.

しかし,まあぼくみたいに普段から FreeBSD をメインOSとして利用しているならば それでもいいのだけど,KOZOSを試してみるためにわざわざFreeBSDをインストール しなければならないというのは,やっぱり面倒です.ここでは他OS上で動かす方法に ついてちょっと説明します.

FreeBSD以外のOS上で動かそうとするならば,いくつか選択肢があると思います.

まず cygwin についてですが,見てみたところ setjmp()/longjmp() は利用できる ようですが,getcontext() は使えないみたいです. なので,第12回以降のソースコードは利用できません.

次に Linux ですが,やはり多少の修正が必要になるようです. とくに setjmp()/longjmp() 利用のコードでは,jmp_buf の構造が違うので なんか適当に修正しないとダメでしょう.あと getcontext()/setcontext() を使った ソースについてはちょっとぼくのほうでも試してみたのですが, とりあえず第25回のソースに以下の修正を加えることでコンパイルはできました.

Linuxでコンパイルするための修正

が,実行してみても Segmentation Fault で落ちてしまい, まともに動きませんでした.ちょっと詳しくは調べてないのですが, ということで Linux の動作も現状,確認できていません. ちなみに上で試したディストリビューションは,Fedora Core 8 でした.

※ もしも,Linuxで動いたというかたがいればぜひ連絡ください.

で,どうするかなのですが,エミュレータを使うのがとりあえず手軽で確実だと 思います.QEMUというフリーのPCエミュレータがあって,Windows などのOS上に 仮想PCを作成し,そこに FreeBSD をインストールして動かすことができます. ぼくも使ってみましたが,実行速度さえ気にしないのならば,何の問題もなく 確実に動きます.

QEMUについては,以下を参照してください.

で,本来ならばここでインストール済みのHDDイメージを配布しようかなーなんて 思ってたのですが,ためしにインストールしてみたら,最小構成でもやっぱし それなりのサイズになってしまったのであきらめました. まあ FreeBSD のインストールはそんなに難しくないので, 各自,やってみてくださいな.

参考までに,Windows 上で QEMU で FreeBSD 環境を作成する手順は以下の通り. FreeBSDのインストール方法に関しては,まあ他にも探せばいっぱい出てくると 思うので,てきとうになんか参考にしてほしい.

  1. FreeBSDのインストール用CD-ROMを作成しておく.
  2. Windows にQEMUをインストールする.
  3. 空のHDDイメージを作成する.(DOSプロンプトで実行)
    qemu-img create -f qcow freebsd.qcow 8G
    
  4. CD-ROMからブートし,HDDにインストールする.(DVDも同様の操作で利用可能) (e:のところには,CD-ROMのドライブ名を指定する)
    qemu -L . -m 256 -boot d -cdrom //./e: -hda freebsd.qcow -localtime
    
  5. インストールが終了したら,HDDイメージからブートすることでFreeBSDが 利用可能.
    qemu -L . -m 256 -hda freebsd.qcow -localtime
    
ちなみにCD-ROMを利用したい場合には,以下のオプションをつけて起動する. CD-ROMがE:ドライブならば
-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では,最低限,以下の操作を覚えておくといいだろう.

ネットワークは,普通に使えば DHCP でアドレス取って,telnet, ftp, ssh などを 使って仮想PCから外に繋げることができます (内部で仮想的にDHCPサーバ,DNSサーバ,NATなどが動作しています). ただし仮想PCから外に対して ping は通らないので注意. 僕はこれでハマりました... あと外から中に繋げるには別途設定が必要.あとftpはうまく繋がらなかったら PASSIVEモードでやってみること(もしくはsftpを使う).

使ってみて思ったけど,こーいう実験のためには,仮想PCはいろいろと融通が効いて, とっても便利で良いです. 実は Linux (Fedora Core 8)上での動作実験も,Windows 上のQEMU環境で行いました. おすすめ!


メールは kozos(アットマーク)kozos.jp まで