Ubuntu 10.04でKVMを使う

Ubuntu 10.04で仮装化機能KVMを使います。ゲストOSとしてDebian 6.0をインストールします。
LinkIconKVMをインストールする
LinkIconKVM仮想マシンを作成する
LinkIconブリッジ型ネットワークを設定する

milk_btn_pagetop.png

 

KVMをインストールする

ホスト環境

ホスト環境として、Ubuntu 10.04 LTSを使用します。Ubuntu 10.04 LTSはUSB接続した外部HDDからブートします。使用PCはPanasonic CF-S8です。

LinkIconUbuntuと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

milk_btn_pagetop.png

 

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
 起動デバイスをハードディスクにします。

milk_btn_pagetop.png

 

ブリッジ型ネットワークを設定する

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 を付けます。

milk_btn_pagetop.png

2011.02.13