3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(Linux,Hyper-V)LinuxISv2.1をいれたLinuxでカーネルアップデートするとカーネルパニック

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を再ビルドと配置をしてくれるようです。

最初からこれをやっていればよかった。。。。