新規カーネル起動失敗に備えたgrubの使い方
Linuxカーネルをいじっていると、そのカーネルが起動しないことがよくあります。その原因は、カーネルの修正ミスはもちろん、initrdの作成ミスなど、いろいろ多岐に渡ります。なので、「今回はこのカーネルで立ち上げるけど、起動に失敗することもあるので、失敗したときはいままで使っていた実績のあるカーネルで起動してね。」、みたいなことをブートローダにお願いしたくなります。
もちろんコンソールの前に仁王立ちし、ブートローダが起動したタイミングを逃さずパラメータを入力するという方法はありますが、スマートじゃないですよね。また、
リモートで作業を行うこともあるし、カーネルを入れ替える時間(リブートしているとき)をトイレタイムやコーヒータイムとして使いたいときもあります。
ブートローダとしてliloがデフォルトであった時代は、こういうときには lilo -R をよく使ったものです。/etc/lilo.confを修正し、lilo -R を実行すると、そのコンフィギュレーションは1回だけ有効な設定となるので、新規に作成したカーネルが起動しなくても、次にはいままで起動していたカーネルが起動されます。
grubでも同じようなことがことができないかなと常日頃思っていたのですが、ようやくそのやり方を知ったので(遅い?)、ここに紹介しておきます。
#もっとよい方法があるのでしたら、是非私に教えて下さい。
1. /etc/grub.confにエントリを追加します。ただし、default行は変更しません。
2. 次にgrubコマンドを以下のように実行します。
# grub
grub> savedefault --default=1 --once
grub> quit
savedefaultコマンドのdefaultオプションで指定するパラメータは、/etc/grub.conf上の新しいカーネルのエントリ番号を指定して下さい。これで新しいカーネルが起動に失敗したとしても、次にリブートするときは実績のあるカーネルがきちんと起動されます。




コメント