Gentoo Linux + Xen 4.0に乗り換える(2): dom0をGentooベースでインストールする


 前回書いたとおり、GentooベースでXen 4.0をインストールする手順を書いていく。前にも書いたが、Xen 4.0をインストールするならFedoraなどのXen friendlyなディストリビューションを選択した方がいいと思う。それでも敢えてGentooを選択する理由は、

  • そこにGentooがあるから。
  • CPUに最適化したdom0を作ることができる。
  • 本当の意味で必要最低限のdom0を作ることができる。
  • 割と最新のものを試すことができる。

あたりが挙げられるだろうか。

 さて、そんなXenだが、ACCEPT_KEYWORDS=~amd64前提でカーネルのインストールくらいまではGentoo Linux AMD64 ハンドブックに従ってインストールしていけばよい。パーティションの割り方は色々ノウハウなどもあるかとは思うが、私の場合は /boot に256MB (ext3)、ブートパーティションに30GB (ext4)、スワップに4GB、残りをLVM2用にしてみた。dom0の場合、/home以下に重要なファイルが大量に保存されることは考えにくいし、ログなどで必要になればLVMから切り出せばいい話だと思う。

 さて、カーネルのインストールでは最新のカーネルではなく、

emerge xen-sources

でXenカーネルをインストールする。domUはpvopsをonにしておけばメインラインのカーネルで問題ないが、dom0に関しては、2.6.37時点ではXenカーネルを利用する必要がある。メインラインのカーネルでもdom0として起動はするが、domUが立ち上がらない。これで2日くらいはまってしまった。2.6.38でdom0に必要なほぼすべての機能が実装されるらしいので、これを待ちたい。

 Xenカーネルでは、現時点ではネットワークはブリッジインターフェイスのみを使うことを前提に、一般的なオプション以外にXen関連として

  • Processor type and features→Enable Xen compatible kernel
  • Bus options→PCI support→Xen PCI Frontend
  • Networking options→802.1d ethernet Bridging
  • Device Drivers
    • Block devices→Loopback device supportを M
    • Multiple devices driver support (RAID and LVM) LVMを使うので
  • XEN以下は適宜。

を指定した。

 ただし、上記はあくまでXen関連なので、たとえばDevice Drivers→SCSI device support→SCSI low-level drivers→3ware 9xxx SATA-RAID supportといったような、個別のハードウェアに必要なオプションは別途指定する。dom0ですべてのdomUのハードウェア回りの処理を行うので、dom0カーネルではハードウェアすべてを認識するようにドライバ回りを設定する必要がある。
 逆に言えば、lm_sensorsなど、ハードウェアを叩く処理についてはdom0で問題なく扱えるということになる。Xen 4.0ではPCI-Passthroughが実装されているのでdom0からでもハードウェアを叩けるが、これはハードウェアをかなり選ぶので、今回は考えないことにする。

 カーネルコンパイルが終わったら、/boot以下にカーネルをインストールした上で

emerge xen

でXen一式をインストールする。

 次にgrubの設定に移る。今回はGentoo Linux AMD64 ハンドブック通りにgrub2ではなくgrubでインストールを行う。grubのインストールそのものは ハンドブック通りだが、起動するカーネル名でXenを指定し、先ほどコンパイルしたXenカーネルはモジュールとして指定する。

title Xen dom0
root (hd0,0)
kernel /xen-4.0.gz dom0_mem=2048M cpufreq=xen
module /vmlinuz-2.6.34-xen-r4 root=/dev/sda3 \
acpi_enforce_resources=lax nomodeset rootfstype=ext4

 今回、dom0のメモリを2GBにしているが、この辺は用途などに応じて調整すればよい。また、cpufreq=xenを指定しておけば、CPUの省電力機能を利用できる。ただし、Phenom導入以前の旧Athlonでは使えないっぽいので気をつける必要はある。

 最後に、カーネルモジュールの設定に移る。Xenは仮想ディスクのマウントにループバックデバイスを使うため、カーネルデフォルトの8だとdom0数個でループバックデバイスを使い果たしてしまう。そのため、ループバックデバイスをモジュールとしてXenカーネルをコンパイルしておき、オプションでループバックデバイスの数を増やしておく。これはGentooの場合、/etc/modules.autoload.d/kernel-2.6

loop max_loop=32

と、ループバックデバイスの数を指定してやればok。

 ここまで来れば、あとはネットワークの設定、cronやsyslogのインストール、ルートパスワードの設定をハンドブック通りに進めていけばよい。

 再起動後、無事にログインコンソールが出ればdom0が起動していることになる。次以降でGentooベースでdomUをインストールする方法を紹介したい。