2010/09/29

Linux IS v2.1 とカーネル アップデートに関するサポート技術情報+α

2010 年 8 月 31 日に次の投稿をポストしました。Red Hat Enterprise Linux 5.5 (RHEL) の評価環境を構築する機会があったので、確認しておきました。

Linux IS v2.1 とカーネル アップデートに関するサポート技術情報


Linux Integration Services (Linux IS) v2.1 がインストールされた Linux ゲストは、カーネルが更新されると、左画面 (RHEL 5.5 の例) のようにルート (/) ファイルシステムをマウントできずに、起動できなくなってしまいます。この問題を回避する方法が、以下のサポート技術情報で説明されています。

Linux Integration Services no longer function after a kernel upgrade
http://support.microsoft.com/kb/2387594/en-us


回避方法とは、Dell が提供する DKMS (Dynamic Kernel Module Support, http://linux.dell.com/dkms/) というパッケージを利用したものです。DKMS は、カーネルのバージョンが更新されると、自動的に必要なモジュールをビルドして配置してくれるというものらしいです。

RHEL 5.5 (Linux IS v2.1 はインストール済み) の場合は、次のような手順になります。サポート技術情報の手順のとおりで問題なくいくと思います (サポート技術情報の modinfo の出力は間違っているかも)。


(1) root アカウントでログインし、適当なディレクトリに DKMS の RPM パッケージをダウンロードして、RPM パッケージをインストールします。

# wget http://linux.dell.com/dkms/permalink/dkms-2.1.1.2-1.noarch.rpm
# rpm -ivh dkms-2.1.1.2-1.noarch.rpm


(2) LinuxIC v2.1.isoを仮想マシンにマウントし、ISO イメージの中身を /usr/src/linuxic-2.1 にコピーします。Linux IS の略称が正しいからと言って、linuxic-2.1 以外のディレクトリ名は使わないように。書いてる通りにやりましょう。

# cp -R /media/CDROM/* /usr/src/linuxic-2.1
# umount /media/CDROM


(3) LinuxIC v2.1.isoを仮想マシンから切断 (取り出し) します。

(4) /usr/src/linuxic-2.1/scripts ディレクトリにある dkms.conf を /usr/src/linuxic-2.1 にコピーします。 dkms.conf が、LinuxIS v2.1.iso の中にあたっということは、最初から DKMS の使用が考慮されていたんですね。

# cd /usr/src/linuxic-2.1/scripts
# cp dkms.conf ../


(5) /etc/modprobe.conf に以下の太字の 4 行を追加して、上書き保存します。

# vi /etc/modprobe.conf
alias scsi_hostadapter ata_piix
alias scsi_hostadapter1 vmbus
alias scsi_hostadapter2 blkvsc
alias scsi_hostadapter3 storvsc
alias scsi_hostadapter4 netvsc



(6) DKMS を通して、Linux IS v2.1 を再度インストールし、ゲストを再起動します。

# dkms add -m linuxic -v 2.1
# dkms build -m linuxic -v 2.1
# dkms install --force -m linuxic -v 2.1
# reboot


(7) modinfo vmbus を実行して、vmbus.ko のファイル パスが変更されていることを確認してください。サポート技術情報 (Last Review: August 30, 2010 - Revision: 3.0) の出力は間違っていると思います。

# modinfo vmbus (DKMS 導入前)
filename:       /lib/modules/2.6.18-194.el5/kernel/drivers/vmbus/vmbus.ko
# modinfo vmbus (DKMS 導入後)
filename:       /lib/modules/2.6.18-194.el5/extra/vmbus.ko


(8) オンライン アップデートを実行して、カーネルを更新します。今回は、2.6.18-194.el5 から 2.6.18-194.11.4.el5 への更新で確認しました。更新後、ゲストを再起動して、起動することを祈ります。起動したら、カーネルの更新と、Linux IS v2.1 の動作を確認します。

# uname -a (新しいカーネルの確認)
Linux hostname 2.6.18-194.11.4.el5 ...
# modinfo vmbus (カーネル更新後、ファイル パスが weak-update に変更されてます)

filename:       /lib/modules/2.6.18-194.11.4.el5/weak-updates/vmbus.ko
# lsmod | grep vsc (vmbusとその他のモジュールが動いていることを確認)
netvsc ...
storvsc ...
blkvsc ...
vmbus ... netvsc, storvsc, blkvsc
scsi_mod ... scsi_dh,sg,storvsc,blkvsc,libata,sd_mod

inputvsc がインストールできない !?

Citrix Project Satori のマウス統合コンポーネント inputvsc をインストールしている場合は、カーネル更新後に inputvsc がロードされないこと (マウスが連携しないこと) に気づくでしょう。 inputvsc 用には dkms.conf は提供されていないので、Linux IS v2.1 の方法に含めることはできません (自分で書けばできるのかもしれませんが...)。そのため、カーネルが更新されたら再インストールしなければ動かないのですが、setup.pl inputvsc を実行しても vmbus が見つからないという理由でインストールしてくれません。理由は、vmbus の場所が変更 (/lib/modules/

何とか inputvsc をインストールしたいという人のために、この問題の回避方法を考えてみました。

(1) inputvsc のインストール スクリプト setup.pl の Sub CheckModule の部分を次のように修正します。

修正前:
sub CheckModule {
 my ($module) = @_;
 my $modulepath = "/lib/modules/" . $kernel_rel . "/kernel/drivers/vmbus/" . $module;



修正後:

sub CheckModule {
 my ($module) = @_;
 my $modulepath = "/lib/modules/" . $kernel_rel . "/weak-updates/" . $module;



(2) DKMS を使用しない場合に vmbus.ko がインストールされるディレクトリを作成します。

# mkdir /lib/modules/`uname -r`/kernel/drivers/vmbus


(3) Module.symversファイルを (2) のvmbus ディレクトリにコピーします。

# cp /usr/src/linuxic-2.1/src/Module.symvers /lib/modules/`uname -r`/kernel/drivers/vmbus

(4) inputvsc を再インストールします (inputvsc のファイルが /opt/inputvsc にある場合)。今度は、インストールに成功するはずです。

# cd /opt/inputvsc
# ./setup.pl inputvsc
...
*** The input driver has been installed successfully. ***  [  OK 

0 件のコメント: