Xenのインストールをしたので整理をしておきます。インストール自体はFedora Core 5, SUSE Linux、Debian が簡単にできるようですが、一番なじみがあるFedora Core 5を使いました。
目次
マシンスペック
CPU Intel Pentium D Processor 820 (Intel EM64T)
MEM 1GB x 2 (SAMSUNG x 1, ELPIDA x 1) DDR2 667 Asahi Co.Ltd.
M/B GIGABYTE GA-8I945G (Intel 945G chip, Intel Graphics GMA950)
HDD 160GB HDT722516DLAT80 ATA Ultra 133(Parallel) 7200rpm
これに、USB接続のDVDドライブを接続してUSB起動でインストールをしています。また、使わない機能はすべてBIOSで無効としています。
ディスクイメージ
# fdisk /dev/hda Command (m for help): p Disk /dev/hda: 164.6 GB, 164696555520 bytes 255 heads, 63 sectors/track, 20023 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 65 522081 82 Linux swap / Solaris /dev/hda2 66 78 104422+ 83 Linux /dev/hda3 79 13132 104856255 83 Linux /dev/hda4 13133 20023 55351957+ 5 Extended /dev/hda5 13133 14176 8385898+ 83 Linux /dev/hda6 14177 15220 8385898+ 83 Linux /dev/hda7 15221 15707 3911796 83 Linux /dev/hda8 15708 16681 7823623+ 83 Linux /dev/hda9 16682 20023 26844583+ 83 Linux
ここでは、ホストOS用に下記の2つを使っています。
/dev/hda3 ... Xen Host / /dev/hda2 ... Xen Host /boot
仮想マシン用のOSイメージ取得用に下記の4つを用意しておきます。debootstrapやrpmstrapを使えばもっと簡単かもしれませんが、Xenでうまく起動できない場合のときのことも考えて、実マシンでも動作するようにしています。どれもきちんと動作しますが、Xenでうまく動作するのはFC5だけです。CentOSは若干問題があるもののとりあえずは動いています。SuSEはかなり問題がありますが、最低限は動いています。KNOPPIXはブートできていません。一応、実マシンでは動作したということで報告しておきます。
/dev/hda5 ... Xen Guest CentOS 4.1用 / /dev/hda6 ... Xen Guest Fedora Cora 5用 / /dev/hda7 ... Xen Guest KNOPPIX 4.3用 / /dev/hda8 ... Xen Guest SuSE 10.0用 /
OSイメージの保存用、作業用領域として下記の1つを用意しておきます。
/dev/hda9 ... OSイメージ保存用
スワップ領域はインストール時では共有し、実際の運用時ではホストOS(もしくは起動中のOS)しか使いません。共有がいやな場合はSWAP領域を複数用意し、各OSの /etc/fstab で参照する領域を設定すればいいでしょう。
/dev/hda1
ホストOSのインストール
最新のチップセットに対応していて、Xenもyumで簡単にインストールできるFedora Core 5 を使うことにしました。ホストOSについては、ブートローダのGRUBをMBRへインストールするようにします。
- ブートローダのインストールはMBRへする
- ファイアウォールの設定は無効にする
- SELinuxの設定は無効にする
- ネットワークはstaticなIPアドレスが決まっているのなら、それを設定しておいた方が簡単
インストールが終わったら、Xenのインストールと、OSのアップデートをしておきます。
yum -y install xen kernel-xen0 kernel-xenU yum -y update
デフォルトではXenは起動しませんから、「/boot/grub/grub.conf」を編集して「title Fedora Core (2.6.17-1.2157_FC5xen0)」が起動するように設定します。通常は「default=0」とすればいいはずです。準備ができたら、再起動をしてXenが有効になったか確認をしましょう。xmコマンドを使えば確認ができます。
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1678 2 r----- 675.9
OSイメージの用意
ハードディスクへOSをインストールします。面倒ですが、仮想マシン用のOSイメージを入手するために、必要な分だけOSをインストールします。仮想マシン用OSインストールにあたって注意する点は下記の通りです。インストールを完全にするためには、ホストOSのGRUBを編集して、各領域が起動するように起動メニューを用意するのがいいでしょう(例を最後に掲載しておきます)。
- 仮想マシン用OSのインストール先パーティションはひとつだけ選択し、「/」へマウントする
- パーティションは必ずカスタマイズを選択して他のパーティションを上書きしないように注意
- パーティションラベルがよくわからない場合は使わない方が安全
- ブートローダのインストールはしない(必要な場合はインストール先パーティションへインストール)
- ファイアウォールの設定は無効にする
- SELinuxの設定は無効にする
- ネットワークはstaticなIPアドレスが決まっているのなら、それを設定しておいた方が簡単
ホストOSのファイルとして仮想マシンイメージを作成
まず、仮想マシン用にディレクトリを用意します。ここでは、CentOS4用の作業だけを例として示しておきます。必要な仮想マシン分だけ同様にしてください。
mkdir /vm mkdir /vm/cent4 mkdir /mnt/cent4 mkdir /mnt/hda5_cent4
次に、仮想マシン用スワップイメージの作成をします。
dd if=/dev/zero of=/vm/cent4/hda1.swap count=1024 bs=1M mkswap -f /vm/cent4/hda1.swap
次に、仮想マシンOSイメージの作成をします。8Gの領域を用意して、ext3でフォーマットしてからloopマウントをしています。ファイルは単純にあらかじめインストールしておいたものをコピーしています。カーネルはホストOSのXenU版を使うので、それに必要なモジュールもコピーしています。TLSライブラリを使わないようにした方がいいとあるので、一応無効化しています。ただし、これはOSによって対応が異なるようです。例えば、Fedora Core 5 の仮想マシンならXenが統合されているので、こういった対処は必要ありません。
dd if=/dev/zero of=/vm/cent4/hda2.img bs=1M count=8192 mkfs -t ext3 -L "/" /vm/cent4/hda2.img mount -o loop /vm/cent4/hda2.img /mnt/cent4 mount /dev/hda5 /mnt/hda5_cent4 cp -ar /mnt/hda5_cent4/* /mnt/cent4 umount /mnt/hda5_cent4 cp -ar /lib/modules/2.6.17-1.2157_FC5xenU /mnt/cent4/lib/modules/ mv /mnt/cent4/lib/tls/ /mnt/cent4/lib/tls.disabled
仮想マシンは実マシンでインストールされた状態のものをもってきているので、仮想マシンの「/etc/fstab」を編集する必要があります。
vi /mnt/cent4/etc/fstab
たとえば、次のようにします。「/」をマウントするデバイスに「/dev/hda2」を指定しておきます。
/dev/hda2 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 /dev/hda1 swap swap defaults 0 0
SELinuxは無効にしておいた方がいいようです。「/mnt/cent4/etc/selinux/config」 を編集して、「SELINUX=disabled」とします。
vi /mnt/cent4/etc/selinux/config
作業が終了したら、「/mnt/cent4」をアンマウントします。
umount /mnt/cent4
Xen設定ファイルの作成
例えば、次のような感じでXen設定ファイルを用意します。
# cat /etc/xen/xmcent4 kernel = "/boot/vmlinuz-2.6.17-1.2157_FC5xenU" ramdisk = "/boot/initrd-2.6.17-1.2157_FC5xenU.img" memory = 512 name = "CentOS4" vif = [ '' ] disk = [ 'file:/vm/cent4/hda2.img,hda2,w', 'file:/vm/cent4/hda1.swap,hda1,w' ] root = "/dev/hda2 ro" extra = "4"
Xenの起動
いくつかコマンドを覚えておくといいでしょう。「xm list」で起動中の仮想マシンを一覧表示する事ができます。最初は次のようにDomain-0の仮想マシン、つまりホストOSしか稼働していません。
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1678 2 r----- 675.9
起動するには、createコマンドを使います。
cd /etc/xen xm create -c xmcent4
起動時にkudzuのウィザードが表示されますが、何もしないで無視しておきましょう。ログインしたら、kudzuは無効にしておきます。
chkconfig --level 345 kudzu off
今回使用したマザーボードの場合、Xen上のCentOS4.1では、そのままではネットワークの設定がうまくいきません。modprobeコマンドでxennetを組み込んだ後、serviceコマンドでnetworkの再起動をすると使えるようになりました。
# modprobe xennet # service network restart
毎回この作業をするのは大変なので「/etc/modprobe.conf」を編集してeth0にxennetを使うように指定します。
# cat /etc/modprobe.conf alias eth0 xennet
停止は、仮想マシンコンソールから行うには「shutdown -ht0 now」とします。ホストOSのコンソールから行うには、次のようにします。
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 987 2 r----- 681.2 CentOS4 4 1024 1 -b---- 8.3 # xm shutdown CentOS4
ちなみに、「xm create」で「-c」オプションを使わないと仮想マシンコンソールが表示されません。ホストOSのコンソールから仮想マシンコンソールへ接続するには仮想マシンのIDを引数にして「xm console」コマンドを使います。
# xm create xmcent4 # xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 987 2 r----- 681.2 CentOS4 4 1024 1 -b---- 8.3 # xm console 4
GRUB
ホストOSの「/boot/grub/grub.conf」 の例です。
#boot=/dev/hda default=0 timeout=5 splashimage=(hd0,1)/grub/splash.xpm.gz hiddenmenu title Fedora Core (2.6.17-1.2157_FC5xen0) root (hd0,1) kernel /xen.gz-2.6.17-1.2157_FC5 module /vmlinuz-2.6.17-1.2157_FC5xen0 ro root=LABEL=/ rhgb quiet 3 module /initrd-2.6.17-1.2157_FC5xen0.img title Fedora Core (2.6.17-1.2157_FC5xenU) root (hd0,1) kernel /vmlinuz-2.6.17-1.2157_FC5xenU ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.17-1.2157_FC5xenU.img title Fedora Core (2.6.17-1.2157_FC5smp) root (hd0,1) kernel /vmlinuz-2.6.17-1.2157_FC5smp ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.17-1.2157_FC5smp.img title KNOPPIX4 Debian GNU/Linux, kernel 2.6.12 Default (/dev/hda7) kernel (hd0,6)/boot/vmlinuz root=/dev/hda7 vga=791 ro ramdisk_size=100000 lang=ja apm=power-off nomce initrd (hd0,6)/boot/initrd.img title SUSE Linux 10.1 root (hd0,7) kernel /boot/vmlinuz root=/dev/hda8 vga=0x31a resume=/dev/hda1 splash=silent showopts initrd /boot/initrd title Fedora Core for XenU (2.6.17-1.2157_FC5smp) root (hd0,5) kernel /boot/vmlinuz-2.6.17-1.2157_FC5smp ro root=LABEL=/12 rhgb quiet initrd /boot/initrd-2.6.17-1.2157_FC5smp.img title CentOS for XenU (2.6.9-11.ELsmp) root (hd0,4) kernel /boot/vmlinuz-2.6.9-34.0.2.ELsmp ro root=LABEL=/1 rhgb quiet initrd /boot/initrd-2.6.9-34.0.2.ELsmp.img