「はじめてのXen」をSUSE10.1とXen3.0.2で実践するには

工学社刊「はじめてのXen」の実践にはSUSE Linux9.3とそれに同梱のXen2.0を用いています。その後SUSE10.0はXen3.0のみをサポートするようになり、しばらく不安定な時期が続きました。しかし、SUSE10.1の同梱Xen3.0.2は再び安心して使えるようになりました。とはいえ、多少異なる点があります。

注:どうしてもダメならSLES10

次のバージョンopenSUSE10.2や、アップデートしたSUSE10.1では、またもや一時的にXenが不安定になってしまうことがあります。最もダメになりやすいのは「仮想ネットワーク」です。Xenで起動したSUSEや追加ドメインがどうしてもインターネットにつながらない...そういう場合、最も頼れるバージョンは「SUSE Linux Enterprise 10 Server(SLES10)」です。試用版を用いることになりますが、「安定したXen」が動くので、試用期間内でとにかく「Xenとはどういうものか」を体験することができます。
SLES10で「はじめてのXen」の主要な部分を実践する方法を別ページに掲載しました。もし、これでダメなら、残念ながらお使いのハードウェアは今のところXenには適さないと考えたほうがよさそうです。

 清水 美樹


Xenのインストール、起動は(本書pp.33-43)

これは全く変わりません。YaSTのソフトウェア管理で「XEN仮想化」を選ぶことにより、SUSEそのものと同時にインストールもできますし追加インストールもできます。起動メニューにも自動でXenがリストアップされますので、それを選んで起動できます。


ttylinuxによる仮想マシンテスト(pp.48-55)

あいにくSUSE10.1のXen3.0.2ではできませんでした。筆者はXen3.0用のユーザガイドからその項目が消えてしまっていることからも考えてXen3.0.2ではできないのだなと思いこんでしまいましたが、実は最近openSolarisのXenでできてしまうことがわかりました。詳細は(詳細になるかな...)こちら
スミマセン。いずれにせよ、後述の「SUSEのrescueディスクの利用」がうんとカンタンになりましたから、そちらから始めるのがよいかと....


SUSEのrescueディスクを利用した仮想マシンテスト(pp.56-66)

同様に,いえより簡単にできます。

  1. インストールDVDあるいはCDの1枚めの「boot/i386」フォルダから「rescue」というファイルを、/home/xenuser/xenworkのような適当な作業場所にコピーする。
  2. /usr/share/doc/packages/xenというフォルダから,mk-xen-rescue-img.shというファイルを,同じ場所にコピーする。
  3. この作業場所で、root 権限で以下のコマンドを実行する。

    #sh mk-xen-rescue-img.sh rescue xen-rescue

  4. 以下のコマンドで仮想マシンを起動する。

    # xm create -c /etc/xen/vm/xen-rescue vmid=1
なお,追加ドメインに割り当ててやる分ドメイン0のメモリを減らすコマンドは「xm balloon」から「xm mem-set」に変わりました。

SUSEの追加ドメイン構築

SUSE10.1のYaSTには「仮想マシンマネージャ」という項目がありますが、あいにくこれはまだエラーが多く実用的ではありません。ただしNovell 製品の「SUSE Linux Enterprise10 Server」では「仮想マシンマネージャ」のいろいろな機能が使えるようになっています。またオープンソース版も次期バージョンopenSUSE10.2では同様の向上が見られます。とはいえ、「はじめてのXen」の内容にはない機能ですから、ここでは割愛します。

SUSE10.1のルートファイルシステム構築法は全く同様です。(pp.66-77)ただし,Xen3.0以降は,YaSTモジュールのうち「Installation into Directory for XEN」はなくなり,かわりに「ディレクトリへのインストール」を起動して使います。全く同じ機能のモジュールです。

仮想マシンの起動設定ファイル(本書でのpp.78-79 xmsuseにあたる)はXen3.0で一部書き方が変わりました。以下が最低限必要な記述です。

kernel = "/boot/vmlinuz-xen"
ramdisk = "/boot/initrd-xen"
memory = 256
name = "<好きなドメイン名>"
vif = [ '' ]	#ここが特に大事
disk = [ 'file:<イメージファイルへの絶対パス>,hda1,w' ]  	
root = "/dev/hda1 ro" 					 
extra = "5"

このうち特に「vif = [ '' ]」が変更点です。これはXenから仮想Macアドレスをもらうために必要な記述です。自分で適当なアドレスを書いても構いませんが,まずは空白にしておいてXenにまかせるのが無難です。


SUSE上でFedora 5を動かす

Fedora Core 4では,Xenのサポートが非常に不安定だったために,Xen2.0で用意されていたバイナリのdomU用カーネルと,FedoraのinitrdファイルをSUSEのbootフォルダに置いて動作させていました(p.113)。しかし,Xen3.0からはバイナリのdomU用カーネルが提供されなくなりました。代わりといってはなんですが,Fedora Core 5以降のXenのサポートが充実し,安定したdomUカーネルとdomU用initrdが得られるようになりました。そこで,以下のようにするとよいでしょう。

  1. /dev/hda3にインストールしたFedora Core 5を起動する。
  2. このFedora上で,「yum install xen kernel-xen0 kernel-xenU」コマンドを打ち,Xenとカーネル一式をインストールする(本書ではkernel-xen0は使わないのですが,せっかくですからインストールしておいて損はないでしょう)


    アップデートが怖い場合 Fedoraに限らずオープンソースのLinuxディストリビューションの多くは常にバージョンアップしており、それまで動いていたXenがアップデートしたばっかりにコケてしまったということはよくあります。FedoraのXenをネットワークインストールするのであれば、システム全体をネットワークアップデートする必要があります。それが怖い場合、もしくは面倒な場合、以下のようにしてインストールメディアに収まっているXenを追加インストールできます。

    • Fedora5のインストールメディアから、以下のパッケージをハードディスクの適当なフォルダにコピーする。(バージョン名は筆者が有しているインストールメディアの一例です)
       sysfsutils-1.3.0-1.2.1.i386.rpm
       bridge-utils-1.0.6-1.2.i386.rpm
       xen-3.0.1-4.i386.rpm
       kernel-xen0-2.6.15-1.2054_FC5.i686.rpm
       kernel-xenU-2.6.15-1.2054_FC5.i686.rpm
      
    • 端末から上記の順番に、「rpm -ivh (RPMファイル名)」コマンドでインストールする。

  3. Fedoraを終了してSUSEを起動し,Fedoraの/bootフォルダから以下のファイルをSUSEの/bootフォルダにコピーする。

    vminuz-....._FC5xenU
    initrd-....._FC5xenU.img 
    System.map-....._FC5xenU
    config-....._FC5xenU  
    
    なお,「.....」の部分はその時点でのバージョン番号です。

  4. 「xmfedora」を以下のように書く。
    kernel = "/boot/vmlinuz-....._FC5xenU"
    ramdisk = "/boot/initrd-....._FC5xenU.img"
    memory = 256
    name = "Fedora"
    vif = [ '' ]
    disk = [ 'phy:hda3,hda3,w' ]	
    root = "/dev/hda3 ro"			
    extra = "5"
    
また,Debianについてはまだ検証していませんが,こちらも最近Xenをaptでインストールできるようになったので,同様の方法が良いのではないかと思われます。

Xen用カーネルをビルドする

ただし,Fedoraなど異種のOSにインストールしたXen用カーネルがSUSEのXenで利用できない場合もあります。バージョンが違えばその危険はかなり大きいですし,そのOSに最適化するため独自のビルドを行っている可能性が高いからです。こうした場合,最後の手段として,XenのソースコードをSUSEでビルドしてそのdomU用カーネルを使ってみるテもあります。

このdomUカーネルをFeroraの起動カーネルに設定します。initrdがありませんが,本書と同様,通常のFedoraのinitrdファイルで代用してもとにかく起動はします。initrdをXen用にビルドする方法はまだ研究していませんが懸案事項です。解決の暁にはここで報告します。