preupgコマンド等でCentOS6から更新したCentOS7にて、yum update等でカーネルを更新するとカーネルパニックが発生するようです。
Table of Contents
1 ルートファイルシステムのマウントが失敗してカーネルパニック
私の環境の場合では、ルートファイルシステムのマウントが失敗してカーネルパニックが発生しました。マシンの構成次第でもっと前段階で発生する場合があるかもしれません(後述のinitramfsに含まれるドライバがない為)。
本問題についてはCentOSのフォーラムに記載されております。
モニターにカーネルパニックのログが収まらない場合は、カーネル起動パラメータにvga=askとかを付けて確認すると良いかもしれません。
2 GRUB1の更新内容が含まれていない
CentOS7からGRUB2を使うようになってるようで、カーネルを更新する際にGRUB1を更新する設定が含まれていないようです。
# diff -uprN /boot/grub/grub.conf.org /boot/grub/grub.conf --- /boot/grub/grub.conf.org 2015-04-27 16:43:50.000000000 +0900 +++ /boot/grub/grub.conf 2015-04-27 16:44:38.000000000 +0900 @@ -14,6 +14,7 @@ hiddenmenu title CentOS Linux (3.10.0-229.1.2.el7.x86_64) 7 (Core) root (hd0,0) kernel /vmlinuz-3.10.0-229.1.2.el7.x86_64 ro root=/dev/mapper/vg_acer-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_acer/lv_root KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_acer/lv_swap LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet crashkernel=auto + initrd /initramfs-3.10.0-229.1.2.el7.x86_64.img title CentOS Linux (3.10.0-123.20.1.el7.x86_64) 7 (Core) root (hd0,0) kernel /vmlinuz-3.10.0-123.20.1.el7.x86_64 ro root=/dev/mapper/vg_acer-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_acer/lv_root KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_acer/lv_swap LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet crashkernel=auto
その結果、読み込まれるべきinitramfsがない状態でカーネルが起動し、ルートファイルシステムをマウントするのに必要なドライバが読み込まれず、カーネルパニックへと繋がります。
3 GRUB1のgrub.confにinitrdのエントリを追加
上記の差分ファイルのように、grub.confにinitrdのエントリを追加します。ただし、今後も同様の対策が必要になるかもしれません。
4 GRUB2のインストール
根本的に解決するにはGRUB2をインストールするのが良いのですが、起動しなくなると面倒なので、LiveDVD等でGRUB1をインストールし直せるようにしておくと良いと思います。
gentooのwikiに記載されているように、以下のコマンドでMBRにGRUB2をインストールして、無事に起動できました。
# grub2-install /dev/sda Installing for i386-pc platform. Installation finished. No error reported. # grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.1.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.1.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-123.20.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-123.20.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-123.13.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-123.13.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-123.6.3.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-123.6.3.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-123.4.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-123.4.2.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-c3a9eb9e9e7c47c60c3a36ba0000002f Found initrd image: /boot/initramfs-0-rescue-c3a9eb9e9e7c47c60c3a36ba0000002f.img done