LoginSignup
32
35

More than 5 years have passed since last update.

QEMU をつかって仮想マシンを作成する

Posted at

[!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
$ lscpu | grep -Ei "(vt-x|amd-v)"
仮想化:             AMD-V

 /proc/cpuinfo では、VT-x の動作モード VMX、または、AMD-V の Secure virtual machine(svm)を確かめます。

cpuinfo
$ grep -E "(vmx|svm)" /proc/cpuinfo
flags : ... svm ... svm_lock ...

カーネルサポートを確かめる

Linux KVM カーネルモジュールが有効になっていることを確認します。 /proc/config.gz または lsmod から確かめます。

config.gz
$ 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
$ lsmod | grep kvm
kvm_amd                52151  0
kvm                   376394  1 kvm_amd

 また、ユーザは /dev/kvm へアクセスできる権限が必要です。Arch Linux では kvm グループが用意されているので、ハイパーバイザを利用するユーザをこのグループに追加します。

gpasswd
$ sudo gpasswd -a $(whoami) kvm

2. ゲストOSを構築する

仮想ディスクイメージを作る

 qemu-img をつかって、ゲストOS のディスクイメージを作ります。 オプションとして、ディスクイメージのファイル形式、ファイル名、サイズを指定します。 qcow2 は QEMU でつかわれるイメージファイル形式です。

qemu-img
$ 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
$ 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

installing-centos-6-4-as-a-guest-os.png

  • failed to initialize KVM: Device or resource busy とでて先にすすめない場合は、ホスト側で別のハイパーバイザが起動していないか確認してください
  • ゲスト側で Trying to unpack rootfs image as initramfs とでるところで起動がとまってしまう場合は、ゲストOSに必要なメモリが足りていないようです。 QEMUの -m オプションの値を引き上げて試してみてください。

 インストール後はインストールメディアのオプションを外して仮想マシンを起動します。

qemu-system-x86_64
$ qemu-system-x86_64 \
-enable-kvm \
-m 512 \
~/Workspace/CentOS-6.4-x86_64-netinstall.qcow2

booting-guest-os.png

参考

32
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
35