MacOS X上でLP49を動かしてみる
LP49をMacOS X(Snow Leopard)のQemuおよびVirtualbox上で動かしてみた。
Qemu
まずは、Qemuのインストールから。0.10系と0.11系の違いはよくわからないが、とりあえず0.10.6を使うことにする。今回はソースからビルドした。ちなみにMacOS X用にはフロントエンドを追加したQってのがあるようだが、0.9.1ベースと古いので試さなかった。また、iQemu.appってのも見つけた。余談になるが、Plan 9はVirtualboxでは動かない(というかものすごい遅いだけかもしれないのだが。。。)がQemuは問題なかった。
$ ./configure --disable-aio --disable-kvm --disable-kqemu --disable-sdl --target-list=i386-softmmu
$ make
$ sudo make install
LP49
LP49のページからISOイメージが入手できるので、早速動かしてみよう*1。
起動したら、qshから"d vga"と実行してみよう。マンデルブロの描画が始まる。
続いてLP49のビルドをMBA上で試みるが、アセンブラがらみの問題ですぐには動きそうにない。そこで、Virtualbox上のubuntu 9.04でLP49をビルドするように作戦変更。前準備としてzipとgenisoimageをapt-getしておくこと。
基本的にはREADMEの通りにsrc直下でmakeを実行すればよいのだが、gcc4のあるバージョンからスタック保護機能が入った影響で素ではコンパイルできないので、CFLAGSに-fno-stack-protector追加してやる*2。src/Maketool以外にもlibdraw/Makefile、cmd/exportfs/Makefileあたりも直したかな。
$ cd src
$ make
$ make install
$ cd ..
$ ./mkcd
これでlp49-boot.cdが生成される。
一応、Virtualbox 3.0.12でも起動するか確認してみたが、qsh起動後にイーサネットデバイスをbindするところで落ちてしまった。PCnet-FAST III (Am79C973)の代わりにPCnet-PCI II (Am79C970A)に設定すれば起動するが、動作速度はQemuより明らかに遅い。あと、BIOSのエスケープシーケンスの仕様が違うのか何なのかよくわからないけど、フォントの色がQemuと違っていたりする。まぁ、Qemu使おう。
L4Ka::Pistachio
L4にはいろいろな実装があるが*3、LP49ではUniversity of KarlsruheのL4Ka::Pistachioが使われている。LP49の配布物にコンパイル済みのバイナリが入っているが、自前でコンパイルしてみる。Mercurialのリポジトリが公開されている。環境は上と同じくubuntu 9.04。
必要なのはL4カーネル本体とブートストラッパ(kickstart)、ルートページャ(sigma0)の三つ。起動シーケンスはGrubからkickstartが実行されて、kickstartがカーネルとsigma0をロード、起動する、という具合である。
ではまずカーネルのビルドから。menuconfigではとりあえず設定を変える必要はない。必ずxを打鍵してコンフィグファイルを出力して終了すること(ここでちょっとハマった)。
$ cd kernel
$ mkdir build
$ make BUILDDIR=/絶対パス指定/build
$ cd build
$ make menuconfig
$ make
makeに成功すればx86-kernelというファイルができる。
続いてkickstartとsigma0のビルド。
$ cd user
$ mkdir build
$ cd build
$ ../configure
$ make
で、util/kickstart/kickstartとserv/sigma0/sigma0ができているはず。
以上の三つのファイルをLP49のrootfs/l4以下にコピーして、gzipしておく。カーネルはLP49にならってl4ka-yymmにリネームした。あとはmenu.lstを変更して、mkcdでCDイメージを作成すれば完了。