Linux IC v2.1 をインストールした Linux のカーネルアップデートを行う (CentOS 5.5) - Linux の使い方
Linux IC v2.1 をインストールした CentOS 5.5 のカーネルアップデートを行う
Microsoft 社の仮想サーバー Hyper-V R2 上で Linux を効率的に運用するためには、専用のドライバーをインストールする必要があります。
以前にも Hyper-V Linux 統合サービス v2.1 をインストールする (CentOS 5.5) でお話ししたように CentOS 5.5 で Linux IC v2.1 をインストールして運用していたのですけど、平成 23 年 1 月 9 日現在、CentOS 5.5 には Hyper-V Linux IC は標準搭載されていないので、Linux カーネルの最新版が提供された場合には、それをインストールした後で Linux IC を再インストールする必要があります。
ただ、一度 Linux IC v2.1 をインストールして利用している環境で、何も考えずにカーネルアップデートを行ってしまうと、再起動時に Linux が Kernel Panic を起こして起動できなくなってしまう感じでした。
そこで今回は、Linux IC v2.1 がインストールされた CentOS 5.5 のカーネルアップデートを行う方法について整理しておきたいと思います。
まず、Linux IC v2.1 が無効になっている間は Hyper-V ネイティブのネットワークアダプタは利用できなくなるので、この Linux へ直接ログインできるようにしておく必要があります。もちろん Hype-V サーバーそのものへ遠隔接続して仮想サーバーを管理できる程度で大丈夫です。
この Linux へ遠隔操作でなければ接続できない場合には、Linux IC v2.1 がなくても動作可能なレガシーネットワークアダプターを予め実装用いて遠隔操作できるようにしておくなどの対処で何とかなるかもしれませんが、手順や何らかの理由で失敗した場合には、直接操作して対応しないと復帰できない可能性がありますので、十分注意が必要です。
ちなみに CentOS 6.0 の場合は Linux IC v2.1 はインストールできないので、Linux IC v3.1 や Linux IC v3.2 をインストールすることになりますけど、こちらの場合はカーネルをアップデートしても、問題なく再起動ができるようでした。
Linux IC v3 のインストールについては CentOS 6.0 を Windows 8 の Hyper-V で使用する の最後の方に記してあるので、参考にしてみてください。
Linux Integration Services v2.1 のインストール
Linux カーネルのアップデート
Linux カーネルをアップデートしたい CentOS にログインしたら、次のようにして Linux カーネルのアップデートを行います。
yum update kernel
これで、Linux カーネルのアップデートが行われました。
ただ、Linux カーネルのアップデートが終了した状態で、ここで再起動を行ってしまうと、多くの場合 CentOS が起動しなくなってしまうと思います。
これは、まだ Linux IC v2.1 が組み込まれていない Linux カーネルで CentOS を起動しようとしてしまうため、Linux IC v2.1 に頼っているハードディスクやネイティブなネットワークアダプター、SCSI 等のデバイスが起動時に認識できないことが原因の様子です。
Linux 再起動前の調整
そこで、再起動に先立って、まずは "/etc/grub.conf" を調整します。
この中の "default" という項目で、何番目 (default の値 + 1 番目) の情報で CentOS を起動させるようになっているかを知ることができるようになっていますので、まずは該当する設定項目を見つけます。
例えば "default=0" となっている場合には、その値に 1 を足して、1 番目に出てくる "title" で定義されたブロックを確認します。
この中の、"kernel" で記されている行を調整します。
変更前は、例えば次のように設定されていたとします。
kernel /vmlinuz-2.6.18-194.32.1.el5 ro root=/dev/VolGroup00/LogVol00 notsc divider=10 hda=noprobe hdb=noprobe
ここの "hda=noprobe" や "hdb=noprobe" というように、ハードディスク名 ("hda", "hdb") に "noprobe" という値が設定されている部分を取り除きます。これがあると、Linux IC v2.1 がインストールされていない状態では、ハードディスクを認識できなくなってしまう様子です。
kernel /vmlinuz-2.6.18-194.32.1.el5 ro root=/dev/VolGroup00/LogVol00 notsc divider=10
このように編集したら、ここでいったん Linux を再起動します。
もしここで "/etc/grub.conf" の編集を忘れてしまった場合には、CentOS 起動時に "Kernel Panic" と表示されて、CentOS が起動できなくなってしまうと思います。
そのような場合は、起動時の GRUB 起動メニューでスペースキーなどを押して、起動メニューを表示します。
そして、予め選択されている起動候補上で "e" を押して編集し、"Kernel" 行の "hda=noprobe" などの全てのハードディスクの認識動作に関する設定項目を削除します。
編集が終わったら [ENTER] キーを押して編集内容を確定し、"b" を押して、その編集した内容での CentOS の起動を行えば、Linux IC v2.1 がない状態でも CentOS が起動できる状態になると思います。
Linux IC v2.1 の再インストール
CentOS 5.5 が起動したら、この段階ではまだ Linux IC v2.1 がインストールされていない状態ですので、ネイティブなネットワークアダプター等の Linux IC v2.1 に依存する機能が動作してくれません。
そこで、次のようにして Linux IC v2.1 の再インストールを行います。
cd /opt/linux_ic_v21_rtm/
make
make install
これで Linux IC v2.1 の再インストールが完了しました。
再起動前に調整した "hda=noprobe" 等といった記載も、Linux IC v2.1 を再インストールした時点で自動的に追加されていると思いますので、特に再調整を行う必要はありません。
これで CentOS を再起動してみて、新しい Linux カーネルで seth0 等の Linux IC v2.1 固有のサービスが正しく動作していることが完了できれば、これで Linux IC v2.1 の再インストールは完了です。
ただ、ここで稀に、インストール完了後に "Kernel Panic" が発生してしまうことがあるようです。その場合は、いったん CentOS を再起動してみて、もし正しく動作して Linux IC v2.1 固有のサービスが起動するようなら、それで問題はないと思います。
もしも復活しない場合には、Linux IC v2.1 をインストールした際に生成された "initrd-2.6.18-194.32.1.el5.img.backup0" などの ".backup0" がファイル名に付加されているイメージファイルを使って起動するように "/etc/grub.conf" ファイルを調整して CentOS を起動させて、もう一度 Linux IC の再インストールから行ってみると上手く行くかもしれません。