CentOS 5.3 に Linux 統合サービス for Hyper-V をインストールする
SOFTWARE REPORT
Hyper-V 統合サービスのインストール
Microsoft の仮想化技術 Hyper-V Server 2008 R2 上にインストールした CentOS 5.3 に Hyper-V 統合サービスのインストールを行ってみることにしました。CentOS のインストールについては EZ-NET レポート: CentOS 5.3 のインストール の方に記してあります。
今回これを行うに当たり、いろいろと情報を収集していたところ、いくつか気になる情報がありました。
注意点にもなるのですが、まず、Xen 対応カーネルをインストールしなければならない等情報が多くみられましたが、これは Hyper-V 統合サービスの RC (リリース候補番) の頃の情報のようで、現在のリリース版では通常のカーネルで問題ないような感じです。
また、セットアップの際に一度 "./setup.pl x2v /etc/grub.conf" を実行しないといけないような情報もありましたけど、現在入手可能な Hyper-V 統合サービスでは "./setup x2v" を実行することができず、どうやら不要な感じです。
そのような感じで、旧来の RC 版と現行とで、情報が入り混じっているところもあるようですけど、そのようなことも踏まえつつ、実際に Hyper-V 統合ツールのインストールを行ってみることにします。
Linux 用の Hyper-V 統合サービスは、平成 21 年 10 月 14 日現在、Linux Integration Components for Windows Server 2008 Hyper-V R2 からダウンロードできるようになっていました。
なお、"Linux Integration Components for Windows Server 2008 Hyper-V R2" のシステム要件として "Hyper-V Server 2008 R2" の他、"Hyper-V Server 2008" も含まれているので、Hyper-V Server 2008 (R1) 環境でも大丈夫だろうと思いますが、Hyper-V Server 2008 (R1) 用の Linux 統合サービスも Linux Integration Components for Windows Server 2008 Hyper-V で提供されているようなので、そちらのリンクも念のため記載しておきます。
今回は、"Linux Integration Components for Windows Server 2008 Hyper-V R2" から "Linux_IC_v2.EXE" をダウンロードすることにします。
これを Windows 上で実行すると "LinuxIC v2.iso" という CD-ROM イメージファイルが生成されます。これを CentOS がインストールされている仮想 PC へマウントしてあげます。
そして Linux 統合サービスのインストール作業に入る訳ですが、そのためには GCC 等、インストールする上で必要なソフトウェアを用意する必要があるようです。CentOS では "yum" コマンドを使用してパッケージ管理を行っているようなので、これを使用するためには、インターネットに接続できる環境が必要になります。
そこで、仮想 PC に "レガシ ネットワーク アダプター" を追加して、Linux 互換ドライバで LAN を利用できるようにしておく必要がありました。
そして、デスクトップへ root 権限でログインします。
GNOME によって CD-ROM の内容が /media/CDROM/ ディレクトリにマウントされましたが、そのまま準備を続けます。
次のようにして、必要なパッケージをインストールします。なお、既にパッケージがインストールされているかについては "yum list installed | grep gcc" といった感じで確認することができます。
yum install gcc
yum install kernel-devel
また、今回はインストールした "kernel-devel" が kernel のバージョンと異っていたため、次のようにカーネルも "kernel-2.6.18-164.el5.x86_64" にアップデートしておきました。これらのバージョンが異なっていると、統合サービスのインストールに失敗する場合があるので注意が必要です。
yum update kernel
Linux カーネルをアップデートしたので、念のため、ここで Linux を再起動しておくことにします。
ここまで終わったら、CD-ROM の内容を、ローカルディレクトリにコピーします。
これは、CentOS 5.3 では "/etc/mtab" の設定で CD-ROM が "noexec" オプションでマウントされるようになっているので、そのままセットアップスクリプトを実行しようとすると "bash: ./setup.pl: /usr/bin/env: bad interpreter: 許可がありません" というエラーが発生してしまうためです。
それを避けるために、ここでは次のようにして CD-ROM の内容を /usr/src/LinuxICv2/ ディレクトリにコピーしています。
cp -rf /media/CDROM /usr/local/src/LinuxICv2
コピーが終わったら、コピー先ディレクトリに移動して "setup.pl" を実行します。
cd /usr/local/src/LinuxICv2
./setup.pl drivers
インストールが完了するまでの間、次のようなメッセージが表示されます。
Checking if required components are installed...done.
Installing Linux integration components (vmbus, enlightened ide, enlightened scsi and network drivers) for Hyper-V...
Building vmbus driver...done.
Building blkvsc driver...done.
Building storvsc driver...done.
Building netvsc driver...done.
Installing vmbus driver...done.
Installing blkvsc driver...done.
Installing storvsc driver...done.
Installing netvsc driver...done.
Updating module dependencies. This may take a while...done.
Installing various udev rules and scripts...done.
Updating initrd image...
Backing up /boot/initrd-2.6.18-164.el5.img to /boot/initrd-2.6.18-164.el5.img.backup0
Done. Updated /boot/initrd-2.6.18-164.el5.img
Updating grub conf file...
Done.
Installing vmbus startup script...
*** The drivers have been installed successfully.*** [ OK ]
ここまできたら、システムを再起動します。
reboot
これで Linux 統合サービスが有効になりました。
マウスはキャプチャされてしまって [Ctrl] + [Alt] + [←] を押さないとリリースされないようですけど、Hyper-V Server のネイティブ "ネットワーク アダプター" が "seth0" と認識され、使えるようになった辺り、とりあえず正しく機能はしているようです。
ネイティブなネットワークアダプターが有効になれば、インストールのために設定した "レガシ ネットワーク アダプター" は必要ないので、仮想 PC から削除しておくと良いでしょう。
kernel と kernel-devel のバージョンが異なる場合のエラーについて
Linux 統合サービスのインストールに当たって、kernel パッケージと kernel-devel パッケージのバージョンが異なった状態で "./setup drivers" を実行した時に、次のようなメッセージが表示されたことがありました。
Checking if required components are installed...done.
Installing Linux integration components (vmbus, enlightened ide, enlightened scsi and network drivers) for Hyper-V...
Building vmbus driver...*** The drivers have been installed successfully.***
一見すると、これで上手く行っているようにも見えますが、実際にはエラーとなってしまっているようです。
これは "/usr/local/src/LinuxICv2/drvinstall.err" に保存されたエラーログを見ると伺えてくるのですけど、どうやら "/lib/modules/2.6.18-128.el5/build" というディレクトリが存在しないということの様子が伺えました。
実際に調べてみると、"/lib/modules/2.6.18-128.el5/build" というシンボリックリンクは創られているものの、それの指し示す先が "../../../usr/src/kernels/2.6.18-128.el5-x86_64" となっており、これが原因でシンボリックリンクの辿り先を参照することが出来ず、結果、インストールを行うことが出来なかったみたいです。
その回答が "The drivers have been installed successfully." というのがなんとも紛らわしい感じもしますけど、このような場合は yum を使って、kernel と kernel-devel のバージョンが同じになるように、パッケージをアップデートする必要がありました。