monoの開発ブログ

KVMのNested SVMでゲストOSでも仮想化支援を利用する

KVMはゲストOSに対して仮想化支援技術を提供する機能を持っており、これによってKVM上のゲストOSでさらにKVMを動かす、といったことができます。普通に使う上では特に必要のない機能ですが、仮想マシンモニタをいろいろ試してみるには便利です。

インストール

現在のところこの機能を利用できるのはホストOSがSVM(AMD-V)に対応している場合のみです。VMX(Intel VT)についてはパッチが上がっているようですが確認していません。

なお、以下はUbuntu 11.04で試した内容です。

KVMはカーネルに組み込まれているのでインストールは必要ありませんが、フロントエンドとなるQEMUは入っていないのでインストールします。

sudo apt-get install qemu

kvm_amdモジュールのオプションを変更します。

sudo modprobe -r kvm_amdsudo modprobe kvm_amd nested=1sudo vi /etc/modprobe.d/kvm.conf


options kvm_amd nested=1

起動

qemu-system-x86_64を起動するときに-enable-nestingオプションを付けるとNested SVMが有効になります。

qemu-system-x86_64 -enable-nesting -L /usr/share/qemu -m 1024 -hda ubuntu.img

ゲストOS上で/proc/cpuinfoを確認し、flagsにsvmが含まれていれば成功です!

grep svm /proc/cpuinfo


flags           : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx lm up nopl pni cx16 popcnt hypervisor lahf_lm svm abm sse4a

参考