Windows Server 2008 R2 上の HyperV 2.0 で、redhat系ディストリビューションのCentOS5.5を動かしています。
CentOSには、Linux統合コンポーネントである Linux Integration Services(Linux IS)v2.1 (旧:LinuxIC)をいれています。
この状態で yum で全パッケージをアップデートしました。
で、再起動すると下記のようにカーネルパニックを起こしました。
...
no fstab.sys, mounting internal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
switchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!
どうやらswitchrootのところでファイルシステムがマウントできないようです。
ただ、ブート時に古いカーネルを指定すると起動します。
で、ググッたところ、
Kernel/VM Advent Calendar 54日目: LinuxICをCentOSに入れると
Hyper-V上のCentOSをyumでカーネルアップデート | SawanoBlog-Bench-に参考になる情報が。。
ブート時のカーネル選択で新しいカーネルを選択し、下記を行います。
e (選択したカーネルの編集)
↓
kernrl 行をカーソルで選び e (編集)
↓
hda=noprobe hdb=noprobe を削除
↓
Enter(決定)→b(ブート)
これで、LinuxISが読み込まれずに起動されます。
LinuxISが読み込まれないのでネットワークも使えませんし、ディスクアクセスも遅いです。
MS Hyper-V 2.0にLinux(CentOS)とLinux Integration Services 2.1を入れてみた で書いたように、LinuxISをコンパイルし、インストールします。
これで再起動すると新しいカーネルでも問題なく動くようになります。
Hyper-V上のCentOSでカーネルアップデートをすると。。。で書いたようにLinuxIC RC0のときはカーネルアップデートするとネットワークドライバ等が読み込まれはしないものの一応起動はしてましたが、LinuxIS2.1では起動すらしないんですね。
LinuxISはkernel-develなどの内容と共にビルドされるようなので、カーネルが変わったらビルドしなおす必要があるようです。
必要なら、yum でカーネルはアップデートさせないように除外することもできるかもしれません。
(除外方法は、
(Linux)yumで特定のパッケージはアップデート対象にさせない方法を参照)
と、ここまで書いてたら、
山市良のえぬなんとかわーるど: Linux IS v2.1 とカーネル アップデートに関するサポート技術情報+αを言う記事を見つけました。
上記記事によると、DellのDKMS(Dynamic Kernel Module Support)というパッケージを使うと、カーネルバージョン更新時に自動的にLinuxISを再ビルドと配置をしてくれるようです。
最初からこれをやっていればよかった。。。。