Plan9 on QEMU
新年なので初心に戻って(?),インストールネタから.
以前,Xenを試してみたけど,やっぱり簡単なのがよいということで,QEMU上でPlan9を動かすことにする.Xenと言えば,Xenoppixが知られているけど,Ron Minnich氏が昨年末から別アプローチによるプロジェクトを始めた.これはXenを起動するために必要最小限のルートディスクを作って,そこからゲストOSとしてPlan9を起動するというもの.ビデオ回りは動いていないので,Linuxからdrawterm経由でアクセスする.スナップショットが公開されているので,気になる人はどうぞ.参照:minimal linux distro with plan 9 on xen.
閑話休題.ググればQEMUのイメージが見つかるかもしれないけど,難しくはないので,オフィシャルサイトからISOイメージを持ってきてインストールすることにする.
用意するのは,次の二つ.
- もちろんQEMU (今回使ったのは0.8.0)
- インストールCD-ROMイメージ
まず,ハードディスクのイメージファイルを使う.フォーマットとしてQEMU COW形式を使った.1Gのイメージだけど,必要に応じて実ファイルサイズが拡張されるので,作成時は約4KBで,インストール終了時点で約370MBだった.
$ qemu-img create -f qcow plan9.img 1G Formating 'plan9.img', fmt=qcow, size=1048576 kB
ここまでが準備で,いよいよQEMUを使ってインストールを始める.hdaにさっき作ったイメージファイル,cdromにISOイメージを指定して,起動する.最初にマウスとビデオの設定を聞かれるが,ps2,1024x768x24,vesaと答えた.そして,rio(ウィンドウシステム)が起動し,インストーラから何項目か尋ねられるが,デフォルトのままで進めた.ファイルシステムはfossil only.
$ qemu -boot d -hda plan9.img -cdrom plan9.iso
インストールが終わったら,リブートしてちゃんと起動するか確認する.デフォルトのユーザはglenda.
$ qemu -boot c -hda plan9.img
ここまで問題なかったら,ネットワークの設定に進む.仮想インタフェースは,Tuntapデバイスを使う方法にする.あまり情報量がないけど,ネットワーク構成は下図の通り.以下の例ではホストマシン側が無線LANインタフェースなのでath0になっているけど,適時eth0などに読みかえてちょうだい.
HOST (Linux) GUEST (Plan9) +--------------+ +--------------+ |(192.168.10.2)| | | LAN ---+---- ath0 | | | | | | | | tap0 ----+---+---- ether0 | | (172.20.0.1) | | (172.20.0.2) | +--------------+ +--------------+
Plan9側のネットワーク設定は,/rc/bin/termrcと/lib/ndb/localの2ファイル.termrcの方はファイル中にipconfigがコメントアウトされている部分があるので,自分の環境に合わせて修正する.ndb/localの方はファイルの最後に設定を追加する.
/rc/bin/termrc: if(! test -e /net/ipifc/0/ctl) ip/ipconfig -g 172.20.0.1 ether /net/ether0 172.20.0.2 255.255.255.0 >/dev/null >[2=1] /lib/ndb/local: sys=qemu0 ip=172.20.0.2 ipmask=255.255.255.0 dns=192.168.10.1
続いて,Linux側の設定.QEMUの起動時にスクリプトを実行できる.そこで,tap0デバイスのIPアドレスを設定して,さらにホストマシンの外部にアクセスするためにIP forwardingとIP Masqueradeの設定もしておく.
/etc/qemu-ifup: #!/bin/sh sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1 sudo /sbin/sysctl -w net.ipv4.ip_forward=1 sudo /sbin/iptables -t nat -A POSTROUTING -o ath0 -s 172.20.0.0/24 -j MASQUERADE
これで,うまくネットワークも使えるはず.
$ qemu -boot c -hda plan9.img -net nic,vlan=0 -net tap,vlan=0,script=/etc/qemu-ifup
タイムゾーンを設定する場合は,ユーザadmでログインして,
% cp /adm/timezone/Japan /adm/timezone/local
そして,qemuの起動オプションに-localtimeを加えればよい.