Xen 2.0(Vine Linux 3.1編)


XenのアーキテキチャはXen本体(仮想マシンモニタ)上でホストOS(ドメイン0)とゲストOS(ゲストドメイン:ドメインU)のOSを同時実行させる形態です。
ドメイン0のホストOSは仮想マシンモニタを経由して周辺デバイスにアクセスします。
またドメインUのゲストOSはドメイン0経由でネットワーク接続されます。

Xen 2.0のドメインU環境にはVMwareやVirtual PC等のBIOSエミュレータやVGAエミュレータ機能等がありません。
このためドメインU環境でインストールCD-ROM/DVDからゲストOSを直接インストールすることはできません。
尚、SUSE LinuxではYaSTを使用してドメインUにSUSE Linux CD-ROM/DVDからインストールする機能を標準装備しています。
SUSE Linux以外でゲストOSを使用するには以下の3タイプあります。


OSインストールメディアがある場合には、実パーティション利用方式またはパーティションイメージファイル利用方式を使用します。
ここでは実パーティション利用方式及びパーティションイメージファイル利用方式を紹介します。
まず、実パーティション利用方式を紹介します。
※今回は一つのマシンでデュアルブート環境で使用している二つのVine Linux 3.1をXen上で同時実行させる手順について紹介します。
次にQEMUへのOSインストールとパーティションイメージファイル利用方式を紹介します。

[仮想マシンをVNCでGUI操作している様子の画像]

実寸画像



1.実パーティション利用方式での前提条件

前提条件は以下の通りです。



2.ブートローダのGRUB化

Vine Linux 3.1での標準のブートローダはLILOです。
Xenを使用する場合はブートローダの設定ファイルにXen用の情報を指定する都合上GRUBになっている必要があります。
デュアルブート環境が既にGRUBで構築されていればここでの作業はスキップします。

LILOでデュアルブートしている場合は以下の手順でGRUB化します(書き込みMBRは1台目のHDDとします)。





3.Xenのインストール

Xen本体はHDD1のvine31側にインストールします。

4.ドメイン構成ファイルの作成

DomainU上でHDD2(/dev/hdb1)にあるVine Linux 3.1を動作させるためのドメイン構成ファイル(仮想マシン環境設定ファイル)を作成します。
そのファイルは/etc/xen/xmvine31uとします。
※メイン構成ファイルは/etc/xenにインストールされるサンプルファイルをカスタマイズして作成します。
xmvine31uの内容は以下の通りです。

# Kernel image file.
kernel = "/boot/vmlinuz-2.4.30-xenU"

# Optional ramdisk.
#ramdisk = "/boot/initrd.gz"


# Initial memory allocation (in megabytes) for the new domain.
memory = 220

# A name for your domain. All domains must have different names.
name = "vine31u"

# Which CPU to start domain on? 
#cpu = -1   # leave to Xen to pick

#----------------------------------------------------------------------------
# Define network interfaces.

# Number of network interfaces. Default is 1.
nics=1

# Optionally define mac and/or bridge for the network interfaces.
# Random MACs are assigned if not given.
vif = [ 'mac=aa:00:00:00:00:11, bridge=xen-br0' ]

#----------------------------------------------------------------------------
# Define the disk devices you want the domain to have access to, and
# what you want them accessible as.
# Each disk entry is of the form phy:UNAME,DEV,MODE
# where UNAME is the device, DEV is the device name the domain will see,
# and MODE is r for read-only, w for read-write.

disk = [ 'phy:hdb1,hdb1,w', 'phy:hdb2,hdb2,w' ]

#----------------------------------------------------------------------------
# Set the kernel command line for the new domain.
# You only need to define the IP parameters and hostname if the domain's
# IP config doesn't, e.g. in ifcfg-eth0 or via DHCP.
# You can use 'extra' to set the runlevel and custom environment
# variables used by custom rc scripts (e.g. VMID=, usr= ).

# Set root device.
#root = "/dev/hda1 ro"
root = "/dev/hdb1 ro"

# Root device for nfs.
#root = "/dev/nfs"
# The nfs server.
#nfs_server = '169.254.1.0'  
# Root directory on the nfs server.
#nfs_root   = '/full/path/to/root/directory'

# Sets runlevel 4.
#extra = "4"

[補足]
(1)DomainUでkernel 2.6モードで動作させたい場合は「kernel = "/boot/vmlinuz-2.4.30-xenU"」を「kernel = "/boot/vmlinuz-2.6.11.12-xenU"」に変更します。
尚、その場合はDomainU側に/lib/modules/2.6.11.12-xenUが必要となります。
(2)xen-br0はXen固有のブリッジです。
Domain0側もそのブリッジを使用してネットワークアクセスするので「ifconfig xen-br0 down」を実行してしまうとDomain0側のネットワーク自体も使用できなくなります。
(3)'phy:hdb1,hdb1,w'や'phy:hdb2,hdb2,w'は物理ディスクパーティションを使用する場合の指定方法です。
尚、disk = [ 'phy:hdb1,hdb1,w', 'phy:hdb2,hdb2,w' ]の部分は単にdisk = [ 'phy:hdb,hdb,w' ]と記述しても構いません。
(上記の例はroot = "/dev/hdb1 ro"との対応を明確にするためにhdb1とhdb2を分離指定したものです)


5.DomainUへのGUIログイン環境の構築(VNCの導入と設定)

DomainUではVGAはエミュレートされません。
DomainUにVNC接続してGUIモードでログインできる環境をここで構築します。



6.Xenの実行



7.パーティションイメージファイル利用方式【単一パーティション構成のディスクイメージ利用例】

ここではQEMU(Windows版 0.7.2)にVine Linux 3.1をインストールし、その仮想ディスクイメージからパーティションイメージファイルを作成してドメインUで使用する方法を紹介します。
尚、ここでの仮想ディスクイメージは単一パーティション構成とします。



8.ディスクイメージ直接利用方式【複数パーティション構成のディスクイメージ利用例】

QEMU環境でOSインストールしたディスクイメージファイルを直接利用するのは最も手軽な方法です。

ここではQEMU環境でVine Linux 3.1を2個インストールしたディスクイメージファイルを利用し、その2個のOSをDomainUとして同時実行する方法を紹介します。


9.その他