Ubuntu 10.04でKVMを使う
Ubuntu 10.04で仮装化機能KVMを使います。ゲストOSとしてDebian 6.0をインストールします。
KVMをインストールする
KVM仮想マシンを作成する
ブリッジ型ネットワークを設定する
KVMをインストールする
ホスト環境
ホスト環境として、Ubuntu 10.04 LTSを使用します。Ubuntu 10.04 LTSはUSB接続した外部HDDからブートします。使用PCはPanasonic CF-S8です。
UbuntuとFedoraを外部HDDからデュアルブートする
仮装化支援機構の確認
仮装化機能KVMを使用するには、使用するPCが仮装化支援機構(Intel VT-x / AMD SVM)を備えていることが必要になります。
$ egrep '(vmx|svm)' /proc/cpuinfo
vmx は Intel VT-x を、svm は AMD SVM を表します。
$ egrep '(vmx|svm)' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc
arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2
ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida tpr_shadow vnmi flexpriority
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc
arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2
ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida tpr_shadow vnmi flexpriority
$
KVMカーネルモジュールの確認
KVMカーネルモジュールが組み込まれているかどうかを確認します。
$ modprobe -l -t kvm
$ modprobe -l -t kvm
kernel/arch/x86/kvm/kvm.ko
kernel/arch/x86/kvm/kvm-intel.ko
kernel/arch/x86/kvm/kvm-amd.ko
$
KVMとQEMUのインストール
KVMとQEMUをインストールします。
$ sudo apt-get update
$ sudo apt-get install kvm qemu
KVMモジュールの確認
KVMモジュールが読み込まれていることを確認します。
$ lsmod
$ lsmod | grep kvm
kvm_intel 39352 0
kvm 245405 1 kvm_intel
$
(注)
もし、KVMモジュールが読み込まれていない場合は、次のような操作で読み込みます。
$ sudo modprobe kvm-intel
KVM仮想マシンを作成する
仮装ディスクイメージの作成
仮想ディスクイメージを作成します。
$ mkdir ~/debian
$ cd ~/debian
$ qemu-img create -f qcow2 hddimage.img 8G
仮想ディスクの形式をQEMU標準の qcow2 とします。
(-fオプションは仮想ディスクの形式を指定します。)
仮想ディスクのファイル名を hddimage.img とします。
仮想ディスクの容量は8GBとします。
$ qemu-img create -f qcow2 hddimage.img 8G
Formatting 'hddimage.img', fmt=qcow2 size=8589934592 encryption=off cluster_size=0
$
仮装マシンの起動とゲストOSのインストール
インストールisoイメージのダウンロード
Debianのインストールイメージ debian-6.0.0-i386-businesscard.iso をダウンロードします。
$ cd ~/debian
wget http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-6.0.0-i386-businesscard.iso
仮装マシンの起動とゲストOSのインストール
仮装マシンを起動させ、ゲストOSとしてDebian 6.0をインストールします。
$ sudo kvm -boot d -hda hddimage.img -cdrom debian-6.0.0-i386-businesscard.iso -m 512
-hda hddimage.img
hddimage.imgに仮想マシンイメージを作成します。
-cdrom debian-6.0.0-i386-businesscard.iso
CDROMとしてisoイメージファイル debian-6.0.0-i386-businesscard.iso を指定します。
-boot d
-cdromオプションで指定したメディアからブートします。
-m 512
仮想マシンに512MBのメモリを割り当てます。
ゲストOS Debian 6.0のインストール画面が表示されます。Debian 6.0を通常の操作でインストールします。
(注)
物理DVDドライブからインストールする場合は下記のような操作を行います。
CDROMとしてホストOSの物理DVDドライブ/dev/sr0を指定します。
$ sudo kvm -boot d -hda hddimage.img -cdrom /dev/sr0 -m 512
ゲストOSの起動
インストールしたゲストOS Debian 6.0を起動します。
$ sudo kvm -boot c -hda hddimage.img -m 512
-boot c
起動デバイスをハードディスクにします。
ブリッジ型ネットワークを設定する
KVMホスト環境と仮装環境の間にブリッジ型ネットワークの設定を行います。KVMはデフォルトでNAT型の仮想ネットワークになっています。
必要ツールのインストール
tunctlのインストール
uml-utilities をインストールします。
$ sudo apt-get install uml-utilities
bridge-utilsのインストール
bridge-utilsをインストールします。
$ sudo apt-get install bridge-utils
/etc/network/interfacesの編集
/etc/network/interfacesを編集します。
$ sudo vi /etc/network/interfaces
DHCPでのIPアドレス設定例
KVMホストのIPアドレスをDHCPサーバから取得します。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
up ifconfig eth0 0.0.0.0 up
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 1
固定IPアドレスの設定例
KVMホストのIPアドレスを 192.168.1.2 に設定します。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
up ifconfig eth0 0.0.0.0 up
auto br0
iface br0 inet static
address 192.168.1.2
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_stp off
bridge_maxwait 1
/etc/qemu-ifupの作成
/etc/qemu-ifup を作成します。
$ sudo vi /etc/qemu-ifup
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 3
実行権限を与えます。
$ sudo chmod 755 /etc/qemu-ifup
/etc/qemu-ifdownの作成
/etc/qemu-ifdown を作成します。
$ sudo vi /etc/qemu-ifdown
#!/bin/sh
sudo /usr/sbin/brctl delif br0 $1
sudo /sbin/ifconfig $1 down
実行権限を与えます。
$ sudo chmod 755 /etc/qemu-ifdown
/etc/resolv.confの編集
/etc/resolv.conf に nameserver 192.168.1.1 を設定します。
$ sudo vi /etc/resolv.conf
nameserver 192.168.1.1
再起動
再起動します。
$ sudo reboot
ブリッジ型ネットワーク動作確認
ifconfigで動作確認をします。
$ ifconfig
br0 Link encap:イーサネット ハードウェアアドレス 00:0c:29:06:f3:dc
inetアドレス:192.168.1.2 ブロードキャスト:192.168.1.255 マスク:255.255.255.0
inet6アドレス: fe80::20c:29ff:fe06:f3dc/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:14 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:32 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:1384 (1.3 KB) TXバイト:4117 (4.1 KB)
eth0 Link encap:イーサネット ハードウェアアドレス 00:0c:29:06:f3:dc
inet6アドレス: fe80::20c:29ff:fe06:f3dc/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:4169 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:408 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:609430 (609.4 KB) TXバイト:42916 (42.9 KB)
割り込み:19 ベースアドレス:0x2024
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:3 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:3 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:246 (246.0 B) TXバイト:246 (246.0 B)
ブリッジ接続時のKVM起動方法
・KVMは sudo で起動します。
・KVM起動時にオプション -net nic -net tap を付けます。
2011.02.13