はじめに
カーネルのバージョンアップを行う際にgrubファイルとgrub.cfgファイルに変更を加えることがあります。
本記事では、grubファイルの修正とその後行うgrub-mkconfigコマンドを整理しました。
ちなみに、grubとはGNU GRand Unified Boot loaderの略でOS起動時点にロードするカーネルを選択させてくれるプログラムです。
動作確認環境
Red Hat Enterprise Linux Server release 7.5 (Maipo) |
カーネルバージョン前 | カーネルバージョン後 |
---|---|
3.X.X-XXX.el7.X | 4.X.XXX.el7.X |
カーネルバージョンアップの流れ
事前準備
現在のカーネルのバージョンはunameコマンドで確認できます。
# uname -r 3.X.X-XXX.el7.X
そして、バージョンアップ用カーネルのrpmをインストールする必要があります。
インストールされている場合は以下のようにrpmが確認できます。必要なパッケージはyumコマンドを利用するか必要パッケージをローカルに配置してインストールしてください。
# rpm -qa | grep kernel kernel-3.XX.X-XXX.el7.X kernel-4.XX.X-XXX.el7.X
カーネルバージョンアップ
バージョンアップしたカーネルはインストールするだけでは利用できません。
ブート時に新しいカーネルを選択する必要があります。
もちろん、タイムアウト前にメニュー画面で選択してもよいのですが、実際はマシンが遠隔にあることからSSHログインでマシンを操作する場合もあるかと思います。
そのようなケースでは、grubファイルを修正してそれらを実現します。
該当ファイルは以下にあり、実体はテキストです。
# file /etc/default/grub /etc/default/grub: ASCII text
中身を確認すると以下のようになっています。
# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, relase .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crshkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet" GRUB_DISABLE_RECOVERY="true"
新しいカーネルを起動するための修正箇所はGRUB_DEFAULT=savedです。
savedは以前起動したOS(カーネル)を指定するというオプションであり、
現在は3.Xで動作しているので、ここを新しい4.Xとするため0を指定します。
GRUB_DEFAULT=0
このファイルを修正した後、起動時に読まれるスクリプトファイルを管理するgrub.cfgファイルに反映するべく、grub-mkconfigコマンドを使用します。
grub-mkconfig [-o | --output=[FILE]
# grub-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file... ... done
この作業で更新されたgrub.cfgと更新前のgrub.cfg_bkを比較しました。
< set default="0" > set default="${saved_entry}"
grubファイルで修正した箇所がスクリプトにも反映されます。
< menuentry 'Red Hat Enterprise Linux Server (4.X...) 7.5 (Maipo)'...#menuentry_id_option 'gnulinux-4.X...' > menuentry 'Red Hat Enterprise Linux Server (4.X...) 7.5 (Maipo)'...#menuentry_id_option 'gnulinux-3.X...'
オプションとして表示される3.Xが4.Xになりました。4.Xを起動するという設定に明示的にしたためです。
この状態で
# reboot
を行うと再ログイン後は
# uname -a 4.X.X-XXX.el7.X
とカーネルが切り替わっていることが確認できます。
終わりに
カーネルの更新を行う際、grub関連ファイルを変更することがあるので備忘録として記事にしました。
参考になれば幸いです。