起動時にkernel panicが発生する場合の対処法
USBメモリから起動した場合にディスクコントローラなどのドライバの関係でkernel panicを引き起こして起動しない場合があります。
その場合は次の手順でinitrdを再構築することで起動可能になります。
・LiveCDなどで立ち上げUSBメモリを認識出来る状態にします。
今回はCentOSを例に説明します。
まずインストールCDから起動します。お持ちでない方はこの辺などから入手可能です。
http://rsync.atworks.co.jp/centos/5/isos/i386/CentOS-5.6-i386-bin-1of7.iso
CentOSインストーラディスクで起動時にboot:と出ているところで「linux rescue」と押すとレスキューモードで起動出来ます。
表示言語を選択します。
キーボードを選択します。
ネットワーク設定を有効にするためにYesを選択します。
Yesでeth0の設定をします。
Enable IPv4 supportを選択します。
DHCPを選択します。
Continueを押して完了します。
パーテーションを検出すると/mnt/sysimageに既存パーテーションがマウントされた旨の表示されます。
・再構築作業
・ USBメモリの内容が/mnt/sysimageにマウントされます。
sh-3.2# df Filesystem Size Used Avail Use% Mounted on /dev 1.6G 0 1.6G 0% /dev /tmp/loop0 108M 108M 0 100% /mnt/runtime /dev/sda2 7.1G 2.8G 4.0G 42% /mnt/sysimage /dev/sda1 251M 27M 212M 12% /mnt/sysimage/boot /dev 1.6G 0 1.6G 0% /mnt/sysimage/dev
dfコマンドで次のパーテーションのマウントが確認出来ます。
/dev/sda2 7.1G 2.8G 4.0G 42% /mnt/sysimage
/dev/sda1 251M 27M 212M 12% /mnt/sysimage/boot
マウントされてない場合はmountコマンドで手動マウントします。
・ マウント場所を変更します。
chroot /mnt/sysimageいままで/mnt/sysimageにマウントされていた起動ディスクが/に変更されます。。
・ /bootに移動します。
cd /boot
・ バージョンナンバーを調べます
ls -lhtr vmlinuz*で表示されるvmlinuz-2.6.18-238.9.1.el5PAEこの部分の数字をメモします。el5はE十五ではなくEL五です。 vmlinuzが複数出てきたら一番下の行のものを選択します。
・同じバージョンナンバーの既存のinitrdのファイル名称を変更します。 例の場合.oldと名前を変えました。
mv initrd-2.6.18-238.9.1.el5PAE.img initrd-2.6.18-238.9.1.el5PAE.img.old
・initrdを再構築します。mkinitrdコマンドに続けて、前項で名前を変えた元のinitrdファイル名と、先ほど調べたバージョンナンバーを指定します。
mkinitrd initrd-2.6.18-238.9.1.el5PAE.img 2.6.18-238.9.1.el5PAE
・再起動します。光学ドライブから起動しないようにして下さい。
reboot