KVMの準備

結局セットアップだけでこんな時間になっちゃったよ!

カーネル

KVMと名のつくものをオンにして・・・と気がついたらビルトイン指定してた。
あとは面白そうなんでVirtualizationのvirtio絡みもモジュール指定。

emerge

まずはqemu-kvm。デフォルトだとターゲットプラットフォームが凄まじいことになっているのでmake.confでごにょごにょと。

QEMU_SOFTMMU_TARGETS="i386 x86_64"
QEMU_USER_TARGETS="${QEMU_SOFTMMU_TARGETS}"

GUIがないとちょっときついので、とりあえずvirt-managerもいれておく。例によってマスクされてるのでautounmask。

ブリッジしたいんじゃあああ

で、ネットワークの設定がわけわからん。
Windowsのブリッジ設定を思い出しながらGentooWikiと格闘することたぶん1時間強。なんとなくわかったことは、

  • br0というブリッジデバイスを作る
  • そこにeth0を追加してやる しなくても動いてるような→なんとなくハッピー
  • 追記:全然ハッピーじゃなかった*1のでWiki通りに/etc/conf.d/netを設定しましたとさ
  • あとはvirt-managerもといlibvirtさんがなんとかしてくれるらしい

で、KVM使わないときもモジュールとかデーモンとか動かれると起動遅くなりそうだから*2init.dスクリプトにしてみた。Wikiに載ってるやつをシンプルにした程度。

#!/sbin/runscript
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

depend() {
        need net
        use libvirtd
}

start() {
        #ebegin "Loading the kvm module"
        #/sbin/modprobe kvm
        #eend $? "Failed to load the kvm module"
        #ebegin "Loading the kvm_intel module"
        #/sbin/modprobe kvm_intel
        #eend $? "Failed to load the kvm_intel module"
        ebegin "Loading the vhost-net module"
        /sbin/modprobe vhost-net
        eend $? "Failed to load the vhost-net module"
        ebegin "Setting up the bridge device (br0)"
        /sbin/brctl addbr br0
        /sbin/ifconfig br0 up
        eend $? "Failed to create the bridge interface"
        eend 0
}

stop() {
        ebegin "Stopping the bridge device (br0)"
        /sbin/ifconfig br0 down
        /sbin/brctl delbr br0
        eend $? "Failed to stop the bridge interface"
        ebegin "Unloading the vhost-net module"
        /sbin/modprobe -r vhost-net
        eend $? "Failed to unload the vhost-net module"
        #ebegin "Unloading the kvm_intel module"
        #/sbin/modprobe -r kvm_intel
        #eend $? "Failed to unload the kvm_intel module"
        #ebegin "Unloading the kvm module"
        #/sbin/modprobe -r kvm
        #eend $? "Failed to unload the kvm module"
        eend 0
}

restart() {
        stop
        start
}

コメントアウトしてあるのはビルトインにしちゃったから。うん。
だいたい理解できてないけど動いているからいい、みたい。

動け

GNOMEのメニューに仮想マシンマネージャーなんて大層な名前でちゃっかり入っているので起動。rootのパスワード聞かれる。これがPolKitなのかな。
libvirtdが起動していないとなにもできないので注意。
ウィザードにしたがって設定を進めて、仮想ディスクではDiskBusにVirtio、ネットワークは共有デバイス名を設定、ブリッジ名br0、デバイスモデルvirtio*3にする。
実行してみる........わっしょーい!
しかし力尽きた。続きは明日?

*1:d:id:unarist:20110520

*2:VirtualBox絡みもそうしたいな・・・

*3:これを指定したらvhost-netも有効にしてくれた