GentooにKVM入れた話
はじめに
そういえばアカウント作ってたんだと思って書いてみました.
下ごしらえ
前提条件として Gentoo はもうインストールされているものとします.
ついでに Intel アーキテクチャで書いてます.
インストール手順についても別記事で書きたい願望.
カーネルコンフィグ
下記リストのコンフィグを有効化してください.
漏れがあれば検証と追記する可能性もあります.
- 802.1d Ethernet Bridging
- ゲストマシンとブリッジ接続するため
- tun/tap device support
- 上に同じ(というよりこれがないと怒られたから)
- Kernel-based Virtual Machine(KVM) support
- KVMを有効化
- KVM for Intel processor support
- 上に同じ
パッケージインストール
必要なUSEフラグはなく, bindist
はない方が良いようです(opensslとかopensshまわりで幸せになれます).
下記リストのパッケージをインストールしてください.
- qemu
- エミュレータ本体
- libvirt
- なんかいろいろよしなにやってくれるもの
- virt-manager
- GUI使ってないけど
virt-install
コマンドを使うため
- GUI使ってないけど
- bridge-utils
- ブリッジ管理用
qemuについては別途 /etc/portage/make.conf
に下記の設定を追記します.
QEMU_SOFTMMU_TARGETS="arm x86_64" QEMU_USER_TARGETS="x86_64"
あと本節冒頭のUSEフラグ必要ないというのは嘘で,
libvirtにはローカルUSEフラグの qemu
を設定します.
echo "app-emulation/libvirt qemu" | sudo tee /etc/portage/package.use/libvirt
OSイメージの準備
適当なところからisoでインストールイメージを取得します.
ディレクトリは専用に作っておいた方が良いようです(一般ユーザのホームディレクトリに置いていたisoを使おうとしたら怒られた).
ブリッジ作成
> brctl addbr br0 > brctl addif br0 eth0
/etc/conf.d/net
に下記を追記.
bridge_br0="eth0" config_br0="192.168.26.199 netmask 255.255.255.0" routes_br0="default via 192.168.26.254" bridge_forward_delay_br0=0 bridge_hello_time_br0=1000
サービスに登録
> ln -sv /etc/init.d/net.lo /etc/init.d/net.br0 > rc-update add net.br0
サービス設定
libvirt
はデーモンとして動作して仮想マシンの管理を行います.
インストールした際にサービスは定義されているので rc-update
で登録すれば動きます.
> rc-update add libvirtd
はじめてのゲストマシンインストール
virt-install
コマンドでサクっとインストールします.
udo virt-install --connect qemu:///system \ --name testvm00 \ --ram 512 \ --disk path=/var/lib/libvirt/images/testvm00.img,size=8 \ --network bridge=pubbr \ --graphics vnc,port=5901,listen=0.0.0.0,keymap=jp106,password=password \ --location /iso/alpine-extended-3.6.2-x86_64.iso
この状態でホストOSのポート5901に向かってVNC接続すると懐しのCentOS7のインストール画面を確認することができます.
はまった話
qemu-kvm がない
他文献では qemu-kvm
コマンドがインストールされ, libvirtなどはこれを使ってKVM/QEMUにアクセスするという話なのですが,
構築した環境では逆立ちしても qemu-kvm
が入りませんでした.
「もしかしてKVM動いてるようで動いてないんじゃ…」なんて心配をしていましたが杞憂でした.
/etc/libvirt/qemu/
の下にある virt-install
が生成したXMLファイルを見ると,
domain=kvm
の文字が確認できました.
どうやら問題なくKVMで動作しているようです.
試しに virt-install
に --virt-type qemu
を指定して動作させたらゲストマシンが一気に重くなったので,
ほぼ間違いないでしょう(もっと厳密に観測する方法を調べる必要がありそうですが…).
この問題について調べていると下記のような記事を見つけることができました.
amd64システム以外でのqemuパッケージにおけるqemu-kvmコマンドの処理について
曰く qemu-kvm
というのは単純に accel=kvm
というオプションを他のqemuコマンドに付与しているリンクであるようです.
おわりに
また詳しくは追記か別記事で