[!NOTE]
この記事は 2013/08/11 に momoto.github.io へ投稿した内容を Qiita へ移行してきたものです
QEMU をつかって仮想マシンを作成する手順の記録です。ホスト側に仮想化機能が備わっていることを確かめたあと、QEMU をつかって ゲストOS を構築します。
1. 仮想化機能を確かめる
ホストとなる GNU/Linux システムで、CPU のハードウェア仮想化支援機能と Linux KVM のサポートを確かめます。
ハードウェアサポートを確かめる
lscpu の仮想化(Virtualization)の行、または /proc/cpuinfoのflags
の行から、ハードウェア仮想化支援機能(Hardware-Assisted Virtualization)を確認します。 この機能は CPU ベンダーごとに実装が異なるので、インテル製品であれば VT-x を、AMD製品であれば AMD-V を確かめます。
$ lscpu | grep -Ei "(vt-x|amd-v)"
仮想化: AMD-V
/proc/cpuinfo
では、VT-x の動作モード VMX、または、AMD-V の Secure virtual machine(svm)を確かめます。
$ grep -E "(vmx|svm)" /proc/cpuinfo
flags : ... svm ... svm_lock ...
カーネルサポートを確かめる
Linux KVM カーネルモジュールが有効になっていることを確認します。 /proc/config.gz
または lsmod
から確かめます。
$ zgrep -E "KVM|VIRTUALIZATION" /proc/config.gz
CONFIG_KVM_GUEST=y
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_IRQ_ROUTING=y
CONFIG_HAVE_KVM_EVENTFD=y
CONFIG_KVM_APIC_ARCHITECTURE=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_HAVE_KVM_MSI=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_MMU_AUDIT=y
CONFIG_KVM_DEVICE_ASSIGNMENT=y
$ lsmod | grep kvm
kvm_amd 52151 0
kvm 376394 1 kvm_amd
また、ユーザは /dev/kvm
へアクセスできる権限が必要です。Arch Linux では kvm グループが用意されているので、ハイパーバイザを利用するユーザをこのグループに追加します。
$ sudo gpasswd -a $(whoami) kvm
2. ゲストOSを構築する
仮想ディスクイメージを作る
qemu-img
をつかって、ゲストOS のディスクイメージを作ります。 オプションとして、ディスクイメージのファイル形式、ファイル名、サイズを指定します。 qcow2
は QEMU でつかわれるイメージファイル形式です。
$ qemu-img create -f qcow2 ~/Workspace/CentOS-6.4-x86_64-netinstall.qcow2 8G
Formatting '/home/guest/Workspace/CentOS-6.4-x86_64-netinstall.qcow2', fmt=qcow2 size=8589934592 encryption=off cluster_size=65536 lazy_refcounts=off
ゲストOSをインストールする
ゲストOSをインストールするために qemu-system-<architecture>
をつかって仮想マシンを起動します。 このときのオプションには、OSインストールの方法にしたがって適当なオプションを付ける必要があります。 インストールメディアを CentOS-6.4-x86_64-netinstall.iso
として、光学ドライブから起動させる場合は -boot order=d
と -cdrom <file>
のオプションを付けます。
$ qemu-system-x86_64 \
-enable-kvm \
-m 512 \
-boot order=d \
-cdrom ~/Downloads/CentOS-6.4-x86_64-netinstall.iso \
~/Workspace/CentOS-6.4-x86_64-netinstall.qcow2
-
failed to initialize KVM: Device or resource busy
とでて先にすすめない場合は、ホスト側で別のハイパーバイザが起動していないか確認してください - ゲスト側で
Trying to unpack rootfs image as initramfs
とでるところで起動がとまってしまう場合は、ゲストOSに必要なメモリが足りていないようです。 QEMUの-m
オプションの値を引き上げて試してみてください。
インストール後はインストールメディアのオプションを外して仮想マシンを起動します。
$ qemu-system-x86_64 \
-enable-kvm \
-m 512 \
~/Workspace/CentOS-6.4-x86_64-netinstall.qcow2