CentOS7(RHEL7)になってブートローダーがGRUB2になりました。
kernelのセキュリティアップデートなどで新しいkernelをインストール & リブートして、新しいkernelで起動していると思ったら古いままだったいう事はありませんか?
本来、期待するところとしてはGRUBの時のように、ほっといても一番最新のkernelが起動してくる事です。
kernelのセキュリティアップデートなどで新しいkernelをインストール & リブートして、新しいkernelで起動していると思ったら古いままだったいう事はありませんか?
本来、期待するところとしてはGRUBの時のように、ほっといても一番最新のkernelが起動してくる事です。
ところが(どういった理由でその状態になるかは調べてませんが)、下記のようにmenuentryが登録された場合、OS起動時にデフォルトで起動してくるのは、1番上のkernel(1番古いkernel)になります。
# grep ^menuent /boot/grub2/grub.cfg | awk -F\' '{ print $2 }'
CentOS Linux, with Linux 3.10.0-123.el7.x86_64 <-最も古いkernel
CentOS Linux, with Linux 3.10.0-123.6.3.el7.x86_64 <-最新のkernel
CentOS Linux, with Linux 3.10.0-123.4.4.el7.x86_64
CentOS Linux, with Linux 3.10.0-123.4.2.el7.x86_64
CentOS Linux, with Linux 0-rescue-09cc85c5693c44fe999137f3ea268654
#
前置きが長くなりましたが、今回はこの例のようにmenuentryがきれいに並んでくれなかった場合に、デフォルトで起動するkernelを任意に指定する方法について3つピックアップしてみます。
1./etc/default/grubのGRUB_DEFAULTに起動するkernelの番号を渡す方法
‐ /etc/grub2.confなりで先頭がmenuentryから始まる行を確認する
- 起動するkernelを番号で指定する
-> 最初のmenuentryを0(ゼロ)として上から順に扱われる
-> 上記の前置きでgrepしたmenuentryの例では、一番最新のkernelで起動するなら"GRUB_DEFAULT=1"と指定する
- 編集が完了後、以下のコマンドでgrub.cfgを生成し直す
※grub2になって、/boot/grub2/grub.cfgは直接編集する事ができなくなりました
‐ /etc/grub2.confなりで先頭がmenuentryから始まる行を確認する
- 起動するkernelを番号で指定する
-> 最初のmenuentryを0(ゼロ)として上から順に扱われる
-> 上記の前置きでgrepしたmenuentryの例では、一番最新のkernelで起動するなら"GRUB_DEFAULT=1"と指定する
- 編集が完了後、以下のコマンドでgrub.cfgを生成し直す
※grub2になって、/boot/grub2/grub.cfgは直接編集する事ができなくなりました
# grub2-mkconfig -o /boot/grub2/grub.cfg
2./etc/default/grubのGRUB_DEFAULT=savedを活かして、記述を追記する方法
- 以下の行を追記します
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true <-追記
- 編集完了後、以下のコマンドでgrub.cfgを編集し直す
以上で、次回からは選択したkernelで起動するようになります。
# grub2-mkconfig -o /boot/grub2/grub.cfg- OS起動時に起動するkernelを手動で選択する
以上で、次回からは選択したkernelで起動するようになります。
3./etc/default/grubのGRUB_DEFAULT=savedを活かして、grub2-set-defaultコマンドで起動するkernelのmenuentry_id_optionを指定する方法
- grub2-set-defaultコマンドで指定するmenuentry_id_optionの値を調べてから実施します
- grub2-set-defaultコマンドで指定するmenuentry_id_optionの値を調べてから実施します
# grep ^menuentry /boot/grub2/grub.cfg
# grub2-set-default <上記で調べたmenuentry_id_option>
# grub2-mkconfig -o /boot/grub2/grub.cfg
なお、設定した値は、以下のコマンドで確認することができます。
# grub2-editenv list
saved_entry=gnulinux-3.10.0-123.9.2.el7.x86_64-advanced-8bb0c9cd-5584-492e-a498-0723073163b9
※個人的には、新しいkernelをインストールする度に/etc/default/grubを編集する手間のない2番目がお勧めです
(備考)
・/etc/default/grub2で指定可能なオプションは、info grub2 で確認できます
$ info grub2 とするとメニューが出てくるので、
-> 矢印キーでカーソルを"* Configuration::"の箇所にもっていきEnter
-> 次に矢印キーでカーソルを"* Sinple configuration::"の箇所に持っていきEnter
・もしくは以下のURLでも確認できます
http://www.gnu.org/software/grub/manual/html_node/Simple-configuration.html#Simple-configuration
2で追記する内容は以下が正しいです。
返信削除GRUB_SAVEDEFAULT=true
ご指摘ありがとうございます。確かに記述間違ってましたので、修正しました。
返信削除bacchi.meというブログに転載を許可しましたか?
返信削除文章もちょこちょこ変えられているようですが
https://bacchi.me/linux/centos7-kernel-setting/
ご連絡ありがとうございます。
返信削除誰も転載は許可していないんですが、”さ○ら”や”は○な”といった大手も人の記事をパクリますからね。モラルをもってやってもらいたいもんです。