kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

起動時に

[kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)]
と表示されてうまく起動しないってのがあったので備忘録

環境

CentOS6.3

根本的な原因

initrdファイルが読み込まれないでブート
というか今回はファイルもなんかなかった

なぜそうなったのかという理由

kernelのアップデートが行われたけどそのときにこけてたっぽい
そして再起動したので発症

対策

対策:
1.どのバージョンのカーネルで起動しようとしていたかを調べる

  • >エラーメッセージから 2.6.32-279.14.1.el6.x86_64 だとわかる

2./boot/initrd-2.6.32-279.14.1.el6.x86_64.imgがあるか調べる

  • >なければ

depmod 2.6.32-279.14.1.el6.x86_64
とタイプ
これで initrd用のファイルリストが作成される
次に
cd /boot
mkinitrd initrd-2.6.32-279.14.1.el6.x86_64.img 2.6.32-279.14.1.el6.x86_64
とタイプ
これで initrdファイルが作成される
-rw-r--r--. 1 root root 16521211 2? 13 11:12 2013 initrd-2.6.32-279.14.1.el6.x86_64.img
ファイルサイズがおかしい場合は depmodを正常に行えたか確認 /lib/modules/バージョン/modules.depファイルが有るはず
3.grub.confを確認initrdのセクションを確認

  • >なければ追加 あればファイル名が正しいか確認

initrdのセクションにはinitrd*.imgと initramfs*.imgがありうる

//GRUBの設定例
title CentOS (2.6.32-279.14.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.14.1.el6.x86_64 ro root=/dev/mapper/vg_livecd-lv_root rd_NO_LUKS rd_LVM_LV=vg_livecd/lv_swap rd_NO_MD rd_LVM_LV=vg_livecd/lv_root crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet
initrd /initrd-2.6.32-279.14.1.el6.x86_64.img
title CentOS (2.6.32-279.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_livecd-lv_root rd_NO_LUKS rd_LVM_LV=vg_livecd/lv_swap rd_NO_MD rd_LVM_LV=vg_livecd/lv_root crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.el6.x86_64.img


参考:
initrd って何? http://www.geocities.jp/sugachan1973/doc/funto72.html