電脳世界のケーキ屋さん

考えの甘い甘党エンジニアがいろいろ書くブログ

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については別途 /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コマンドに付与しているリンクであるようです.

おわりに

また詳しくは追記か別記事で