仮想化サービス活用によるマルチプラットフォーム検証環境作成ガイド 2ページ

Linux系OSのインストール

 XenServer 5.6では、Linux系OS向けに表2のテンプレートが用意されている。

表2 XenServer 5.6のデフォルトで用意されているLinux系OS向けテンプレート
OS名 対応ビット数
CentOS 4.5〜4.8 32ビット
CentOS 5.0〜5.4 32ビット/64ビット
Debian GNU/Linux 5.0 lenny 32ビット
Oracle Enterprise Linux 5.0〜5.4 32ビット/64ビット
Red Hat Enterprise Linux 4.5〜4.8 32ビット
Red Hat Enterprise Linux 5.0〜5.4 32ビット/64ビット
SUSE Linux Enterprise Server 9 SP4 32ビット
SUSE Linux Enterprise Server 10 SP1/SP2 32ビット/64ビット
SUSE Linux Enterprise Server 10 SP3 64ビット
SUSE Linux Enterprise Server 11 32ビット/64ビット

 これらのテンプレートから仮想マシンを作成すると、「準仮想化」と呼ばれる方式で動作する仮想マシンが作成される。準仮想化を利用する仮想マシンは高速に動作するものの、専用のカーネルやブートローダを利用するため、ディストリビューションによっては実機へのインストールとは異なる手順が必要となる場合もある。そこで、下記ではDebian GNU/LinuxやRed Hat Enterprise Linux、その互換ディストリビューションであるCentOSやOracle Enterprise Linux、Ubuntuなどのインストールにおけるポイントを説明しておこう。

コラム 準仮想化と完全仮想化

 XenServerでは仮想化方法として「完全仮想化」と「準仮想化」の2通りが利用できる。完全仮想化は、仮想マシン上のハードウェアをすべてソフトウェアでエミュレーションするというもので、さまざまなOSを修正無しに実行できるというメリットがある。

 いっぽう、準仮想化では一部のハードウェアはエミュレーションされない。そのため、ゲストOSには変更が加えられた専用のカーネルが必要となる。XenServerの仮想化エンジンにはオープンソースの仮想化システムであるXenが利用されており、多くのディストリビューションにはXen対応カーネルが用意されているのだが、XenServerでの利用にはやや面倒な設定が必要な場合も多い。

 ちなみにXenServerの場合、Windows系OSおよび「Other install media」テンプレートから仮想マシンを作成すると完全仮想化モードで動作する仮想マシンが、Linux系OSのテンプレートから仮想マシンを作成すると準仮想化モードで動作する仮想マシンが作成される。

Debian GNU/Linux 6.0(Squeeze)のインストール

 Debian GNU/Linuxの最新版は6.0(Squeeze)であるが、XenServer 5.6にはDebian GNU/Linux 5.0(Lenny)の32ビット版向けテンプレートしか用意されていない。そのため、Squeezeをインストールするには次のどちらかの方法を取る必要がある。

  • Lenny用のテンプレートを使ってLennyをインストールし、「apt-get dist-upgrade」コマンドを使用してSqueezeにアップグレードする
  • 完全仮想化モードで動作する仮想マシンを作成してSqueezeをインストールし、インストール完了後にXen対応カーネルをインストールして仮想マシンを準仮想化モードに変更する

 前者の方法は簡単ではあるが、32ビット版の環境しかサポートされていない。そのため64ビット版の環境を利用したい場合、後者の方法を利用する必要がある。

Debian GNU/Linux 5.0(Lenny)のインストール

 XenServer 5.6ではあらかじめLenny用のテンプレートが用意されているが、このテンプレートで作成した仮想マシンは準仮想化モードで動作するため、Xen対応カーネルが含まれていないDebian GNU/Linuxの公式インストールCD/DVDからはインストーラを起動できない。そのため、下記ではネットワークブートでインストーラを起動してインストールする方法を紹介する。

 まず、XenCenterの「VM」メニューから「新規VM」を選択して「新規VM」ウィザードを開き、テンプレートの選択画面で「Debian Lenny 5.0(32-bit)」を選択する(図12)。

図12 テンプレートは「Debian Lenny 5.0(32-bit)」を選択する
図12 テンプレートは「Debian Lenny 5.0(32-bit)」を選択する

 インストールメディアの指定画面では「インストール元 URL」を選択し、使用するDebianのミラーサイトURLを入力する。日本国内のミラーサーバーを利用する場合は「http://ftp.jp.debian.org/debian」を指定すれば良い(図13)。

図13 「インストール元URL」を選択し、DebianのミラーサーバーURLを入力する
図13 「インストール元URL」を選択し、DebianのミラーサーバーURLを入力する

 続けて通常の仮想マシン作成の場合と同様に割り当てるCPU数やメモリ、ストレージなどの設定を行って仮想マシンを起動すると、Debianのインストーラが立ち上がる(図14)。インストーラの言語は英語しか選択できないものの、以後のインストール作業ステップ自体は通常のインストール作業と同様となる。

図14 Debianのインストーラが起動する
図14 Debianのインストーラが起動する

 インストールの完了後、次のように「apt-get dist-upgrade」コマンドを実行することでSqueeze相当の環境にアップグレードできる。

# apt-get update
# apt-get dist-upgrade

インストールISOイメージからのDebian GNU/Linuxのインストール

 Xen対応カーネルが含まれていないDebian GNU/LinuxのインストールCD/DVDでも、完全仮想化モードで動作する仮想マシンを利用すればインストーラを起動できる。そこで、64ビット版のDebian GNU/Linuxを利用したい場合、完全仮想化モードで動作する仮想マシンにXen非対応のDebian GNU/Linux環境をインストールし、インストールの完了後にXen対応カーネルに入れ替えて準仮想化モードで動作させる、という手段でインストールを行うことになる。下記ではSqueezeのインストールCDイメージを使用し、この方法でインストールを行う手順を紹介する。

 まず、「Other install media」テンプレートを使用して完全仮想化モードで動作する仮想マシンを作成する(図15)。

図15 テンプレートとして「Other install media」を選択して仮想マシンを作成する
図15 テンプレートとして「Other install media」を選択して仮想マシンを作成する

 インストールメディアにはDebian GNU/LinuxのインストールCDイメージを選択しておく。仮想マシンを起動するとインストーラが立ち上がるので、通常のインストールの場合と同様にインストール作業を進めていく(図16)。インストールが完了したら、設定ミスなどによりシステムが起動できなくなったときに備え、スナップショットを作成しておくと良いだろう。

図16 インストーラが起動するので、通常通りインストール作業を進める
図16 インストーラが起動するので、通常通りインストール作業を進める

 インストールの完了後、次のようにしてXen対応カーネルをインストールする。

# apt-get update
32ビット版の場合:
# apt-get install linux-image-xen-686
64ビット版の場合:
# apt-get install linux-image-xen-amd64

 また、「/etc/inittab」ファイルを修正し、XenServerの仮想コンソール(hvc0)を利用するように設定しておく。

# vi /etc/inittab    # /etc/inittabを修正
# ファイルの末尾に下記を追加する
co:2345:respawn:/sbin/getty 38400 hvc0

 続いてGRUBの設定を行う。XenServerでは仮想マシンのブートに「pygrub」というツールを利用しているが、pygrubはSqueezeで標準で採用されているGRUB2には対応していない。そのため、「grub-legacy」パッケージをインストールして設定ファイルを作成する必要がある。

 grub-legacyパッケージはapt-getコマンドで次のようにインストールできる。

# apt-get install grub-legacy

 grub-legacyをインストール後、「update-grub」コマンドで設定ファイルの作成と編集を行う。update-grubコマンドを実行すると「/boot/grub/menu.lst」というファイルが作成されるので、このファイルの「# kopt=」で始まる行を編集し、「console=hvc0」というオプションを追加する。

# update-grub default    # 設定ファイルを作成する
# vim /boot/grub/menu.lst    # 作成された設定ファイルを編集する
# 下記の行に太字の部分を追加する
# kopt=UUID=<ルートパーティションのID> ro console=hvc0

 上記の編集が完了したら、再度「update-grub」コマンドを実行して変更を反映させる。

# update-grub default

 以上の設定が完了したら仮想マシンをシャットダウンし、XenServer側で仮想マシンの設定を変更して完全仮想化モードから準仮想化モードに切り替える。この作業はXenCenterのGUIからは行えず、コントロールドメインのコンソールからXenServerの管理コマンドを使用して作業を行う必要がある。

 まず、XenCenterで対象の仮想マシンを選択し、「全般」タブ内の「UUID」を右クリックしてコピーしておく(図17)。

図17 対象の仮想マシンを選択して「全般」タブの「UUID」をコピーする。
図17 対象の仮想マシンを選択して「全般」タブの「UUID」をコピーする。

 XenCenterでXenServerが稼働しているサーバーを選択し、「コンソール」タブを開くことでコントロールドメインのコンソールにアクセスできる。コンソールにログインしたら、次のコマンドを実行して仮想マシンのパラメータを変更する。

# xe vm-param-clear uuid=<仮想マシンのUUID> param-name=HVM-boot-policy
# xe vm-param-set uuid=<仮想マシンのUUID> PV-bootloader=pygrub

 「uuid=」に続く部分には先にコピーしておいた仮想マシンのUUIDを入力する。コンソールを右クリックするとメニューが表示されるので、ここで「貼り付け」を選択して入力できる(図18)。

図18 コンソール上では右クリックでコピー/ペーストが可能だ
図18 コンソール上では右クリックでコピー/ペーストが可能だ

 次に、カーネルがインストールされている仮想ディスクデバイスの「bootable」パラメータを「true」にセットする。まず、「xe vm-disk-list」コマンドを実行して対象の仮想マシンに接続されている仮想ディスク一覧を取得する。

リスト1 「xe vm-disk-list」コマンドで仮想マシンに接続されている仮想ディスク一覧を取得する例

# xe vm-disk-list uuid=<仮想マシンのUUID>
Disk 0 VBD:
uuid ( RO)             : bfdbd220-7f59-e91e-daee-cff714004d36
    vm-name-label ( RO): squeeze
       userdevice ( RW): 1


Disk 0 VDI:
uuid ( RO)             : 1aa44624-804f-4621-ac60-c56cc56fa1bf
       name-label ( RW): squeeze
    sr-name-label ( RO): Local storage
     virtual-size ( RO): 20971520000

 「xe vm-disk-list」コマンドを実行すると、リスト1のような形式で接続されている仮想ディスク情報が表示される。ここで太字で表示されている部分が対象となる仮想ディスクのUUIDとなる。この文字列をコピーし、続いて次のように実行する。

# xe vbd-param-set uuid=<リスト1からコピーしたVBDのUUID> bootable=true

 以上で設定は完了だ。これで対象の仮想マシンを起動すると、仮想マシンのコンソールが表示されるはずだ。もし、仮想マシンのブートに失敗した場合は次のコマンドを入力すれば設定を復元できる。

# xe vm-param-set uuid=<仮想マシンのUUID> HVM-boot-policy="BIOS order"
# xe vm-param-clear uuid=<仮想マシンのUUID> param-name=PV-bootloader