2014年11月3日月曜日

CentOS7(RHEL7) デフォルトで起動するkernelを変更するには

CentOS7(RHEL7)になってブートローダーがGRUB2になりました。

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は直接編集する事ができなくなりました
# grub2-mkconfig -o /boot/grub2/grub.cfg


2./etc/default/grubのGRUB_DEFAULT=savedを活かして、記述を追記する方法

 - 以下の行を追記します
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true <-追記
 - 編集完了後、以下のコマンドでgrub.cfgを編集し直す
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の値を調べてから実施します
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

4 件のコメント:

  1. 2で追記する内容は以下が正しいです。
    GRUB_SAVEDEFAULT=true

    返信削除
  2. ご指摘ありがとうございます。確かに記述間違ってましたので、修正しました。

    返信削除
  3. bacchi.meというブログに転載を許可しましたか?
    文章もちょこちょこ変えられているようですが
    https://bacchi.me/linux/centos7-kernel-setting/

    返信削除
  4. ご連絡ありがとうございます。
    誰も転載は許可していないんですが、”さ○ら”や”は○な”といった大手も人の記事をパクリますからね。モラルをもってやってもらいたいもんです。

    返信削除