grubbyを使用したカーネルの管理

grubbyツールを使用すると、Oracle LinuxインスタンスのGRUB構成を定義するgrub.cfgファイルからの情報の読取りおよび永続的な変更を行うことができます。grubbyコマンドを使用すると、カーネル構成の表示、デフォルトのブート・カーネルの指定、追加のカーネル・コマンドライン・ブート・パラメータの構成、およびカーネル・ブート(GRUB)メニューの変更を行うことができます。詳細は、grubby(8)マニュアル・ページを参照してください。

インストール済カーネルおよびデフォルト・カーネルのリスト

grubbyコマンドを使用して、Oracle Linuxインスタンスにインストールされているすべてのカーネル、カーネルに関する構成情報、デフォルトであるカーネルおよびアクティブなカーネルを表示します。

  1. コマンドラインから、管理権限を使用してSSHを使用してインスタンスに接続します
  2. 次のいずれかのオプションを使用して、インストールされているカーネルをリストします。インストールされているカーネルのリストは、Oracle Linuxのバージョンによって異なる場合があります。
    • grubbyおよび--info=ALLコマンド・オプションを使用してカーネルをリストし、インストールされた各カーネルに関連付けられたブート構成を確認します。
      sudo grubby --info=ALL
      index=0 <--Each boot entry is assigned an index, which is a number that indicates its position in the GRUB menu
      kernel="/boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64" <--Full path to the kernel image
      args="ro $tuned_params LANG=en_US.UTF-8 console=tty0 console=ttyS0,115200 rd.luks=0 <--Command-line arguments passed to the kernel when it boots
           rd.md=0 rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10 rd.net.timeout.carrier=5
           rd.iscsi.param=node.session.timeo.replacement_timeout=6000 net.ifnames=1
           nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 libiscsi.debug_libiscsi_eh=1
           loglevel=4 crash_kexec_post_notifiers crashkernel=1G-64G:448M,64G-:512M
           netroot=iscsi rd.iscsi.firmware=1"
      root="/dev/mapper/ocivolume-root" <--Root partition device
      initrd="/boot/initramfs-6.12.0-102.36.5.2.el10uek.x86_64.img $tuned_initrd" <--Path to the initial RAM disk (initrd) image
      title="Oracle Linux Server (6.12.0-102.36.5.2.el10uek.x86_64 with Unbreakable Enterprise Kernel) 10.0" <--Title displayed in the GRUB menu at startup
      id="3d18a447860027858b15c8276ccc1ab3-6.12.0-102.36.5.2.el10uek.x86_64" <--Unique identifier for the boot entry
      
      index=1
      kernel="/boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64"
      ...
      title="Oracle Linux Server (6.12.0-55.27.1.0.1.el10_0.x86_64) 10.0"
      ...
      
      index=2
      kernel="/boot/vmlinuz-0-rescue-3d18a447860027858b15c8276ccc1ab3"
      ...
      title="Oracle Linux Server (0-rescue-3d18a447860027858b15c8276ccc1ab3 with Unbreakable Enterprise Kernel) 10.0"
      ...

      sudo grubby --info=ALLの出力は、起動時にカーネル・ブート・メニューに表示される内容を予測します。たとえば、前の出力でインデックス番号とタイトルを使用すると、カーネルブートメニューに次のように表示されます。

      Oracle Linux Server (6.12.0-102.36.5.2.el10uek.x86_64 with Unbreakable Enterprise Kernel) 10.0
      Oracle Linux Server (6.12.0-55.27.1.0.1.el10_0.x86_64) 10.0
      Oracle Linux Server (0-rescue-3d18a447860027858b15c8276ccc1ab3 with Unbreakable Enterprise Kernel) 10.0
    • /bootディレクトリにインストールされているカーネルをリストします。
      sudo ls -l /boot/vmlinuz*
      -rwxr-xr-x. 1 root root 17048272 Aug 19 20:35 /boot/vmlinuz-0-rescue-3d18a447860027858b15c8276ccc1ab3
      -rwxr-xr-x. 1 root root 17048272 Aug 13 00:00 /boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64
      -rwxr-xr-x. 1 root root 15852240 Aug 14 00:00 /boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64
  3. ブート時に使用するデフォルトのカーネルとして構成されているカーネルと、そのタイトルと位置をカーネルブートメニューに表示します。デフォルトのカーネルは、Oracle Linuxのバージョンによって異なります。
    • デフォルトのカーネルを表示します。
      sudo grubby --default-kernel
      /boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64
      
    • デフォルトのカーネルのタイトルを表示します。
      sudo grubby --default-title

      出力は、Oracle Linuxインスタンスの起動時にカーネル・ブート・メニューに表示される値と一致します。

      Oracle Linux Server (6.12.0-102.36.5.2.el10uek.x86_64 with Unbreakable Enterprise Kernel) 10.0
    • カーネルブートリスト内のデフォルトのカーネルのインデックス位置を表示します。
      sudo grubby --default-index
      0
  4. インスタンスで実行されているカーネルを確認します。
    uname -r
    6.12.0-102.36.5.2.el10uek.x86_64

    次の理由により、デフォルトのカーネルと実行中のカーネルが同一でない場合があります。

    • 新しいカーネルをインストールしましたが、システムをリブートしていません。
    • システムのリブート中に、別のカーネルをアクティブカーネルとして手動で選択しました。
    • デフォルトのカーネルを手動で更新しましたが、まだシステムをリブートしていません。

デフォルトのカーネルを変更

grubbyコマンドを使用して、GRUB 2構成にデフォルトのブート・カーネルを設定します。

  1. コマンドラインから、管理権限を使用してSSHを使用してインスタンスに接続します
  2. デフォルトのカーネルを表示します。
    sudo grubby --default-kernel

    例:

    /boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64
  3. grubby --set-defaultコマンドを使用して、カーネルへのフルパスを必ず指定するようにデフォルトのカーネルを変更します。カーネルパスは、Step 2 of Listing Installed Kernels and Default Kernelのいずれかのオプションを使用して取得できます。

    例:

    sudo grubby --set-default /boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64

    変更はすぐに有効になり、システムのリブート後も保持されます。

  4. デフォルトのカーネル変更を確認します。
    sudo grubby --default-kernel

    例:

    /boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64
  5. (オプション) grubby --set-default-indexコマンドを使用して、新しいデフォルト・カーネルをカーネル・ブート・メニューの最初の位置に設定します。
    sudo grubby --set-default-index=0
    新しいデフォルトカーネルは、カーネルブートメニューの最初に表示されます。次に例を示します。
    Oracle Linux Server (6.12.0-55.27.1.0.1.el10_0.x86_64) 10.0
    Oracle Linux Server (6.12.0-102.36.5.2.el10uek.x86_64 with Unbreakable Enterprise Kernel) 10.0
    Oracle Linux Server (0-rescue-3d18a447860027858b15c8276ccc1ab3 with Unbreakable Enterprise Kernel) 10.0
  6. インスタンスを再起動して、新しいデフォルト・カーネルで起動します。

カーネル・ブート・パラメータの変更

grubby --update-kernelコマンドを使用して、新しい引数の追加、既存の引数の値の変更、または特定のカーネルまたはすべてのカーネルの引数の削除を行います。引用符で囲まれたリスト内のオプションごとに、各引数をスペースで区切って複数の引数を指定できます。同じ操作で引数を追加および削除できます。--argsオプションを使用する場合、引数がすでに存在する場合は、新しい値が古い値を置き換えます。

  1. コマンドラインから、管理権限を使用してSSHを使用してインスタンスに接続します
  2. grubby --update-kernelコマンドを使用して、特定のカーネル・ブート引数を変更または追加します。たとえば、カーネル・パラメータを更新して、次のLANG引数を変更します。
    • すべてのカーネル
      sudo grubby --update-kernel=ALL --args LANG=en_GB.UTF-8
    • 1つのカーネル
       sudo grubby --update-kernel /boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64 --args LANG=en_GB.UTF-8
      
  3. 変更が有効になったことを確認します。
    sudo grubby --info=ALL
    • すべてのカーネル
      index=0
      kernel="/boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64"
      args="ro $tuned_params console=tty0 console=ttyS0,115200 rd.luks=0 rd.md=0 
           rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10 
           rd.net.timeout.carrier=5 rd.iscsi.param=node.session.timeo.replacement_timeout=6000 
           net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 
           libiscsi.debug_libiscsi_eh=1 loglevel=4 crash_kexec_post_notifiers 
           crashkernel=1G-64G:448M,64G-:512M netroot=iscsi rd.iscsi.firmware=1 LANG=en_GB.UTF-8"
      ...
      index=1
      kernel="/boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64"
      args="ro $tuned_params console=tty0 console=ttyS0,115200 rd.luks=0 rd.md=0 
           rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10
           rd.net.timeout.carrier=5 rd.iscsi.param=node.session.timeo.replacement_timeout=6000 
           net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 
           libiscsi.debug_libiscsi_eh=1 loglevel=4 crash_kexec_post_notifiers 
           crashkernel=1G-64G:448M,64G-:512M netroot=iscsi rd.iscsi.firmware=1 LANG=en_GB.UTF-8"
      ...
    • 1つのカーネル
      index=0
      kernel="/boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64"
      args="ro $tuned_params console=tty0 console=ttyS0,115200 rd.luks=0 rd.md=0 
           rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10 
           rd.net.timeout.carrier=5 rd.iscsi.param=node.session.timeo.replacement_timeout=6000 
           net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 
           libiscsi.debug_libiscsi_eh=1 loglevel=4 crash_kexec_post_notifiers 
           crashkernel=1G-64G:448M,64G-:512M netroot=iscsi rd.iscsi.firmware=1 LANG=en_GB.UTF-8"
      ...
      index=1
      kernel="/boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64"
      args="ro $tuned_params LANG=en_US.UTF-8 console=tty0 console=ttyS0,115200 rd.luks=0 rd.md=0 
           rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10 
           rd.net.timeout.carrier=5 rd.iscsi.param=node.session.timeo.replacement_timeout=6000 
           net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 
           libiscsi.debug_libiscsi_eh=1 loglevel=4 crash_kexec_post_notifiers 
           crashkernel=1G-64G:448M,64G-:512M netroot=iscsi rd.iscsi.firmware=1"
      ...
  4. インスタンスを再起動して、新しいカーネル構成でブートします。
ヒント

grubbyを使用せずにカーネル・ブート・パラメータを変更するには、/etc/default/grubファイルを直接編集し、GRUB_CMDLINE_LINUX定義のブート・パラメータ設定を変更します。たとえば、LANG=en_US.UTF-8LANG=en_GB.UTF-8に変更します。
GRUB_CMDLINE_LINUX="crashkernel=auto LANG=en_GB.UTF-8 console=tty0 console=ttyS0
,115200 rd.luks=0 rd.md=0 rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root r
d.net.timeout.carrier=5 netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:ue
fi rd.iscsi.param=node.session.timeo.replacement_timeout=6000 net.ifnames=1 nvme
_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 libiscsi.debug_libi
scsi_eh=1 loglevel=4 ip=dhcp,dhcp6 rd.net.timeout.dhcp=10 crash_kexec_post_notif
iers"
次のシステムリブート時に変更を有効にするには、GRUB 2構成を再構築します。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg