GRUB2 で、前回の選択肢をデフォルトにする
最近のわけーもんは GRUB なんて聞いたこと無いかもしれねーけど、Linux が入ったマシンを起動すると BIOS の後に出てくる画面でカーネルが選択できるようになっていて、あの画面の正体が GRUB。
多くのディストリビューションでは、新しいカーネルをインストールしても、何世代か古いカーネルが消されずに残っていて、仮に最新のカーネルで何か不具合があれば、マシンを再起動して古いカーネルを選択すれば問題無い。
また、GRUB は、Linux だけで無く Windows をブートすることも出来るので、Linux と Windows のデュアルブートマシンの起動時にどちらの OS で起動するのかをユーザーに選ばせるのにも使える
やりたいこと
タイトル通りだけど、例えば以下のような状態になってほしい。
- 初回は普通に起動する
- GRUB2 の画面で、上から3つ目のカーネルを選ぶ
- 次回再起動時の GRUB2 の画面で、上から3つ目のカーネルが選ばれている状態
本来はこうやれば良い
本来であれば、/etc/default/grub
に以下のような記述をすれば良い
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
問題点と解決策
ただ、こちらの環境 CentOS 8 では上手く行かなかった。色々検索したところ、以下の情報がそれっぽい。
1704926 – GRUB_ENABLE_BLSCFG=true breaks GRUB_DEFAULT=saved
一時的な解決策として上げられているのは以下の2つ。
grubby-deprecated
パッケージをインストールするGRUB_ENABLE_BLSCFG=true
の行をコメントアウトしてgrub2-mkconfig
を実行する
Fedora 30, 31 (と恐らくそれ以降)では直っているとのことなので、CentOS 8 でも直ってて良さそうなんだけど・・・
参考情報
- CentOS 7 での GRUB2 の情報: HowTos/Grub2 – CentOS Wiki
- CentOS 8 では、使うコマンドが少し異なることに注意
- Ubuntu での GRUB2 の情報: Grub2 – Community Help Wiki
- GRUB について色々まとまってた: カーネルを一時的に変更できるgrub2-rebootが便利。結局GRUB2のことをいろいろ調べたよ – Qiita