kernel panic 対処法

ブート, ブートストラップについて

PCの電源を入れると、
「`BIOS/UEFI` → `ブートローダー` → `カーネル` → `init/systemd`」 の順に起動していく。
電源を入れてからシステムが起動するまでの処理の流れを、
`ブート(boot)`または`ブートストラップ(bootstrap)`という。
 
ブートローダーは HDDの「`MBR(Maste Boot Record)`」に保存されている。
MBR は HDD の「先頭セクタ」とも呼ばれ、BIOS はこれを一番最初に読み込みにいく。
先頭セクタは「512バイト」と決まっており、
その中身には 「カーネルの保存位置」が記録されている。
 
ブートローダーがカーネルの保存位置を参照して、
起動デバイスからカーネルをRAMにロードしていく。
 
カーネルがメモリの初期化, システムクロックの設定などをおこない、
仮のルートファイルシステム(initramfs:初期RAMディスク)をマウントする。
 
ルートファイルシステムが使えるようになると、
カーネルが最初のプロセスである`init`または`systemd`を実行し、
必要なサービスを順次起動していき、ログインプロンプトを表示し、起動処理を終える。
(普段、呪文のように/etc/init.d/httpd restart としてた理由がなんとなく分かる)
 
下記の方法で`GRUB`を修正して`Kernel Panic`を回避できるのは、
PCは`カーネル`よりもMBRに入った`ブートローダー`を先に起動する仕組みになっているため、
たとえどれだけカーネルが破壊されていても、`GRUB`を先に立ち上げて操作ができるため。
 
 

Kernel Panic の回避方法

# 起動デバイスを確認
disk -l | less

# /dev/vda1 を /mnt にマウント
mount /dev/vda1 /mnt

# grubの「default=0」 を 「default=1」に変更 
cat /mnt/etc/grub.conf
vi /mnt/etc/grub.conf

 
 
とても参考にしたサイト
CentOS 6.3 – Kernel Panic

コメント

タイトルとURLをコピーしました