QEMU on Fedora8 でブリッジ接続
Fedora8 で、qemuとvirt-managerを使ってWindows仮想マシンを作成。
- CPU:Athron X2 BE-2350
- MEM:4GB
- OS :FedoraCore8 (Fedora7からUpgrade) / 2.6.24.5-85.fc8
QEMUの仮想マシンは、仮想マシンマネージャ(virt-manager)経由で作成した。
その際、仮想マシンの作成自体は問題なく行えるのだが、NICをブリッジ接続させるのが少々難しい。
ブリッジ接続ではなく、仮想ネットワーク接続(仮想LAN+NAT)であれば仮想マシンマネージャで簡単にできそうだが、ブリッジ接続は(brctlコマンドなどを使って)色々と手間がかかりそうだ。
そこで思いついたのが
「xenのブリッジ接続用スクリプトを利用して、qemuの仮想マシンをブリッジ接続する」
という方法。で、さっそくチャレンジ。
まず、以下のものをインストールする。
- Xen
- Virt-Manager
- QEMU
- 必須ではないと思うがKVM
Xenはインストールするものの、そのサービス自体は使用しない。
使用するのは「/etc/xen/scripts/network-bridge」あたりだけなので、Kernelは(xen-kernelではない)通常のKernelで起動すること。
んでもって、/etc/init.d/xen-bridge を以下のような内容で作成。
#!/bin/bash # # xen-bridge Script to start and stop the Xen-Bridge. # # chkconfig: 2345 98 01 # description: Starts and stops the Xen control daemon. ### BEGIN INIT INFO # Provides: xen-bridge # Required-Start: $network # Should-Start: # Required-Stop: # Should-Stop: # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Default-Enabled: yes # Short-Description: Start/stop xen-bridge # Description: Starts and stops the Xen-bridge. ### END INIT INFO start() { echo "Starting xen-bridge script" /etc/xen/scripts/network-bridge start } stop() { echo "Stopping xen-bridge script" /etc/xen/scripts/network-bridge stop } RETVAL=0 case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit $RETVAL
んでもって「chkconfig --add xen-bridge」とかして自動起動するようにしておく。
おそらく「network」サービスより後に起動する必要があるので、起動は98、終了は01とした(networkはそれぞれ10と90)。
設定が終わったら、Fedoraを再起動。設定が誤っている場合は、ssh等でリモート接続できなくなるので注意。
なお、xendやxendomainのサービスは停止しておいても構わない。
で、再起動が完了したとする。そこで ifconfig -a 等を実行すると「eth0」と「peth0」が作成されていることが確認できる。
通常、1つめのNIC「eth0」は、論理的なIFも物理的なIFも意味合い的に含む(と思っている)が、xen-bridgeが起動すると論理IFは「eth0」、物理IFは「peth0」と分離されるらしい(eth0がpeth0にブリッジ接続しているイメージ。多分・・・)。
この状態であれば、Virt-Managerによりqemuの仮想マシンを作成する際に、NICとして「eth0」を接続して、peth0へブリッジ接続することができる。具体的には、仮想マシン作成ウィザードの「ホストネットワークに接続」の項で、共有物理装置として「peth0」を選択することができるようになる。