labunix's blog

labunixのラボUnix

WheezyにQEMU-KVMを導入

■CPUフラグの確認

$ grep flags /proc/cpuinfo | sed s/" "/"\n"/g | grep "vmx\|svm"
vmx
vmx

■KVM-QEMUの導入

$ echo "qemu-kvm bridge-utils virtinst virt-manager virt-viewer libvirt-bin python-libvirt libvirt-doc" | \
  for list in `xargs`;do \
    echo "[ $list ]"; \
    apt-cache show "$list" | grep ^Description | head -1; \
  done
[ qemu-kvm ]
Description-ja: x86 ハードウェアの完全仮想化
[ bridge-utils ]
Description-ja: Linux イーサネットブリッジの設定ユーティリティ
[ virtinst ]
Description-ja: 仮想マシンを作成、複製するためのプログラム
[ virt-manager ]
Description-ja: 仮想マシン管理用デスクトップアプリケーション
[ virt-viewer ]
Description-en: Displaying the graphical console of a virtual machine
[ libvirt-bin ]
Description-ja: libvirt ライブラリ用のプログラム
[ python-libvirt ]
Description-ja: libvirt の Python バインディング
[ libvirt-doc ]
Description-ja: libvirt ライブラリ用のドキュメント

$ echo "qemu-kvm bridge-utils virtinst virt-manager virt-viewer libvirt-bin python-libvirt libvirt-doc" | \
  sudo apt-get install -y `xargs`

■確認
 kvm_amd.koはAMD系のCPUの場合

$ sudo virsh list
 Id    Name                           State
----------------------------------------------------

■KVMのカーネルモジュール

 KVM仮想化基盤のカーネルモジュール       kvm.ko
 プロセッサ特有のカーネルモジュール      kvm-intel.ko、kvm-amd.ko

$ sudo find /lib -type f -name "kvm*.ko"
/lib/modules/3.2.0-4-amd64/kernel/arch/x86/kvm/kvm.ko
/lib/modules/3.2.0-4-amd64/kernel/arch/x86/kvm/kvm-amd.ko
/lib/modules/3.2.0-4-amd64/kernel/arch/x86/kvm/kvm-intel.ko

■qemu-kvmのスタートアップスクリプト内でcpuのフラグを判定して、
 モジュールをロードしている。

$ lsmod | grep kvm
kvm_intel             121968  0
kvm                   287749  1 kvm_intel

$ sudo /etc/init.d/qemu-kvm restart
[ ok ] Succesfully unloaded kvm module kvm_intel.
[ ok ] Loading kvm module kvm_intel.

$ grep cpuinfo /etc/init.d/qemu-kvm 
    if grep -q '^flags.*\<vmx\>' /proc/cpuinfo
    elif grep -q '^flags.*\<svm\>' /proc/cpuinfo


$ ls /etc/kvm/
kvm-ifdown  kvm-ifup  target-x86_64.conf

■ブリッジの設定

$  sudo grep -A 100 "auto eth1" /etc/network/interfaces
auto eth1
allow-hotplug eth1
iface eth1 inet static
	address 192.168.152.32
	network	192.168.152.0
	netmask 255.255.255.0
	broadcast 192.168.152.255
	route add -net 192.168.152.0/24 gw 192.168.152.2 eth1



auto br0
allow-hotplug br0
iface br0 inet static
	address 192.168.152.32
	network	192.168.152.0
	netmask 255.255.255.0
	broadcast 192.168.152.255
	route add -net 192.168.152.0/24 gw 192.168.152.2 br1
	bridge_ports eth1

$ sudo ifup br0
$ env LANG=C /sbin/ifconfig br0 | grep "inet addr"
          inet addr:192.168.152.32  Bcast:192.168.152.255  Mask:255.255.255.0


■イメージの作成

$ KVMDIR=/var/local/kvm; \
  test -d "${KVMDIR}" || sudo mkdir "${KVMDIR}"; \
  sudo qemu-img create -f raw "${KVMDIR}/qdeb2.img" 40G

■インストール

 TTY経由でのインストールとなっているが、
 おとなしくX上のコンソールから行うこと。
 ※仮想マシンビューアが起動する。

$ sudo virt-install \
  --name qdeb2 \
  --ram 512 \
  -f  /var/local/kvm/qdeb2.img \
  -s 8 \
  --vcpu=1 \
  --os-type linux \
  --os-variant=debianwheezy \
  --network bridge=br0 \
  --location='http://ftp.riken.jp/Linux/debian/debian/dists/wheezy/main/installer-amd64/' \
  --extra-args='console=/dev/pts/0'

■後は普通のdebian。

■確認

$ sudo virsh list
 Id    Name                           State
----------------------------------------------------
 1     qdeb3                          running

■テンプレートの取得

$ sudo virsh dumpxml qdeb3 > qdeb3.xml