ほぼ雑記的メモ
FreeBSDでqemuを使うためのメモ。基本的にはここのwikiを参考にしています。
1) パッケージのインストール
# pkg install qemu
2) /boot/loader.confに以下の4行を追加する
if_bridge_load="YES" bridgestp_load="YES" if_tap_load="YES" aio_load="YES"
再起動しておしまい。再起動が嫌ならkldloadでモジュールを読み込ませるとよいかと。
3)適当な起動可能なゲストのCDのimageを用意して起動させて動くのを確認する
以下の例ではFreeBSD-9.0のimageを使用しています。
# qemu-system-x86_64 \ -hda vm00.img -m 1024 -monitor telnet::4444,server,nowait -vnc :0 \ -cdrom Images/FreeBSD-9.0-RELEASE-amd64-disc1.iso
確認は適当なvncclientで
% vncviewer localhost
とかやればOKです。
動かすだけならこれでもいいのですが、これだけですとHostがDHCPサーバ&ルータになり、ゲストと外界が遮断されている状態なので、もうひと捻りします。具体的には bridgeとtapデバイスを使って、ホスト側からのパケットをゲスト側にも持ってくるという作戦。
4) /etc/sysctl.confに以下の2行を追加
net.link.tap.up_on_open=1
これは tapデバイスがopenされたとき自動的にupするというものの設定らしいです。設定しなくてもqemu起動する度に ifconfig tap0 upとかしてやればいいのですが、煩雑なので設定しておいたほうがよいでしょう。
5) /etc/rc.confに以下の3行を追加 (re0は使用しているNICの名前に適宜読み替えてください)
cloned_interfaces="bridge0 tap0" autobridge_interfaces="bridge0" autobridge_bridge0="re0 tap*" ifconfig_bridge0="up"
cloned_interfacesにbridge0と書いただけでは bridge0がupされた状態でやってこないので、ifconfig_bridge0="up"を書いています。もっとスマートな手法があるかもしれませんが。ここまで設定したら念のため再起動します。これも再起動が嫌だというひとは4の設定も含めてsysctrlやifconfigで自力で設定するという手法もあります。
6) 適当な起動可能なゲストのCDのimageを用意して起動させて動くのを確認
qemu-system-x86_64 -net nic -net tap,name=tap0,script=no \ -hda vm00.img -m 1024 -monitor telnet::4444,server,nowait -vnc :0 \ -cdrom Images/FreeBSD-9.0-RELEASE-amd64-disc1.iso
VNCで起動を確認し、LiveCDやshellに移行し dhclient ed0等するとDHCPサーバからアドレスが振られるのがわかるかと思います。
Powered by Red Leaf ( Rev. c78c769f2 ), © Issei Numata, 2007-2021