カメノドットコム
Debian大好きでメインで節操ない感じ。
GMOもわりと好き。
RSS feedly

GRUBでブート時のカーネルを固定する

GMOクラウドのVPS の旧プランは「GNU GRUB version 0.97」つまり「GRUB-Legacy」となっておりまして。
新プランはわからないんですが、大幅改定があったようなので「GRUB2」だったらいいなと思ってます。
でも値上がりしたからプラン変更なんかしてやらない。サービス終了まで使ってやる(笑)

---- [PR] ----
現在契約中 : GMOクラウドのVPS : お名前.com
今後契約するかも : お名前.com VPS
--------------

GRUB2でのカーネルの指定方法

番号やタイトルで決め打ちする方法もあるようですが、もっと簡単な方法があります。

前回選択したカーネルを使用する

これいいですよね。古いのだとうまくいかなくて。
設定も簡単です。

# -> /etc/default/grub
#GRUB_DEFAULT=0
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

設定ファイルをチョロリッと書き換えまして。
新しい設定をGRUB2に反映するだけです。

$ sudo update-grub

「これでOKだよ♥」という記述が多くあり、羨ましい限りです。
カメノさんもぶっ壊した時にGRUB2を入れたので、これで大丈夫でした。
update-grub のあと、数回再起動をかけて確認する必要はありますが。

GRUB-Legacyでのカーネルの指定方法

いっそのこと GRUB2 に取っ換えてやろうかと思わないでもないんですが、この GRUB-Legacy は KVM のブートローダらしい。
「hd(0,0)」じゃなくて「fd(0,0)」なの。この表記が既に Legacy なわけですが、中から外のフロッピーは触れないのです。仮想ディスクだろうけど。
色々と調べてみましたところがですね。

決め打ちするのが一番楽で一番確実

今のVPSサーバのカーネルが下記のようになっておりまして。
せっかく技術サポートにOS再インストールしてもらったので、下手こいたら嫌だなーと。

    GNU GRUB version 0.97
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Debian GNU/Linux, kernek 2.6.32-5-amd64                        ┃
┃ Debian GNU/Linux, kernek 2.6.32-5-amd64 (single-user mode)     ┃
┃ Debian GNU/Linux, kernek 4.9.0-6-amd64                         ┃
┃ Debian GNU/Linux, kernek 4.9.0-6-amd64 (single-user mode)      ┃
┃ Debian GNU/Linux, kernek 3.16.0-5-amd64                        ┃
┃ Debian GNU/Linux, kernek 3.16.0-5-amd64 (single-user mode)     ┃
┃ Debian GNU/Linux, kernek 3.2.0-5-amd64                         ┃
┃ Debian GNU/Linux, kernek 3.2.0-5-amd64 (single-user mode)      ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

常に「Debian GNU/Linux, kernek 2.6.32-5-amd64」がハイライトされてこれで起動しやがるんですよ。
決め打ちしない方法もあるようですが、設定ファイルを結構弄らないとダメでめんどくさい。それでも失敗の可能性はあるし。
ということで!
カーネル起動番号、決め打ちで逝ってみます!

GRUB-Legacyの設定ファイルを編集

ややこしいことにですな。
「/etc/default/grub」もあるんですが、これを変更しても何の影響もありません。
一体どこのどいつを編集してやればいいんだと彷徨うことしばし。
「/boot/grub/grub.cfg」か「/boot/grub/grub.conf」で変更するっぽい。両方覗いてみたところ。
「grub.cfg」には力強く『DO NOT EDIT THIS FILE』と先頭に書かれているので、これは違う。
「grub.conf」はというと。これですな。設定項目があるし、Do Not Edit とか書いてないし。

ブートするカーネルの番号は、1, 2, 3 ……ではなく、0, 1, 2 ……とマイナス1しないといけない。
今回は「Debian GNU/Linux, kernek 4.9.0-6-amd64」で起動するように固定したいので、3番目だから番号は2になる。ややこしい。
いつまでも怖がってたら進まないので、思い切ってレッツラゴー。

# コメントアウトする
#default 0
# 追記する
default 2

ブート時のカーネルを確認したいので、VPS付属コンソールで再起動する。

# update-grub
# shutdown -r now

再起動したらどうなるのかしら。ドキドキ。

    GNU GRUB version 0.97
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Debian GNU/Linux, kernek 2.6.32-5-amd64                        ┃
┃ Debian GNU/Linux, kernek 2.6.32-5-amd64 (single-user mode)     ┃
┃ Debian GNU/Linux, kernek 4.9.0-6-amd64                         ┃
┃ Debian GNU/Linux, kernek 4.9.0-6-amd64 (single-user mode)      ┃
┃ Debian GNU/Linux, kernek 3.16.0-5-amd64                        ┃
┃ Debian GNU/Linux, kernek 3.16.0-5-amd64 (single-user mode)     ┃
┃ Debian GNU/Linux, kernek 3.2.0-5-amd64                         ┃
┃ Debian GNU/Linux, kernek 3.2.0-5-amd64 (single-user mode)      ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

やりました! できました! いやっふぅー!!
Stretchにふさわしいカーネルがハイライトされて起動しましたよ。
あ〜あんなに怖がって損した。
……お家Debianで何回かGRUB壊して復旧したことはあるけど。昔過ぎてもう忘れたし。

「GRUB-Legacy」でも意外と簡単に設定できることがわかりました。大収穫。
どうしよう〜オロオロ〜としてる方、勇気をだしてえいやっと逝ってみてください。
GRUBは復旧できるから大丈夫ですよ。手順は面倒ですけど。
「initrd.img-カーネルバージョン-アーキテクチャ」の場所だけは確認しておいたほうがいいですが。
何度もGRUBの設定をとちったことがあるかメノさんが言ってあげます。

Liloで失敗した時ほど大変じゃない。比べれば簡単だ。

比較対象が古すぎてアレですが、場合によっては GRUB2 ではなく GRUB-Legacy な環境を変えられないこともあると思います。
そんな時に参考になりましたら、とても嬉しいです。

Sponsored Link