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

grubbyコマンドを使用して、システムの GRUB 2構成を管理します。これには、デフォルトのブートカーネルの選択や、ブート時に使用する追加のカーネルコマンド行ブートパラメータの構成も含まれます。

詳細は、grubby(8)マニュアル・ページを参照してください。

システムで使用可能なカーネルの確認

カーネルには、アップストリーム・バージョン番号、ディストリビューション・ビルドおよびカーネル・ファミリを含めるように名前が付けられます。

追加のコンテキストについては、「Linuxカーネルについて」を参照してください。

システムで使用可能なカーネルを確認するには、いくつかの方法を使用できます。

  1. /bootディレクトリ内のカーネルをリストします。
    ls -1 /boot/vmlinuz*

    このコマンドは、システムで使用可能なカーネルの正確なリストを生成します。

  2. 特定のカーネルでgrubbyコマンドを使用するか、ALLオプションを使用します。
    sudo grubby --info /boot/vmlinuz-kernel-version.kernel_suffix*
    sudo grubby --info ALL

    このコマンドは、システムの/bootディレクトリ内の各カーネルに関連付けられたブート構成に関するより詳細な情報を提供します。詳細は、GRUBタイトル構成に基づいています。

デフォルトのカーネルと実行中のカーネルとの比較

GRUB 2がブートメニューのタイムアウト期間後にブートするために選択するデフォルトカーネルとして構成された実行中のカーネルとカーネルは異なる可能性があります。

デフォルトのカーネル・バージョンと実行中のカーネル・バージョンが同一でない場合、根本的な理由は次のいずれかになります。

  • 新しいカーネルがインストールされていますが、システムはリブートされていません。

  • システムのリブート中に、別のカーネルが操作可能なカーネルとして手動で選択されました。

  • デフォルトのカーネルは手動で更新されましたが、更新後にシステムがリブートされていません。

デフォルトの構成済みカーネルと実行中のカーネルを比較するには、次の手順を実行します。
  1. GRUB 2で構成されているデフォルトのカーネルを確認します。

    ブート時に使用する現在のデフォルトカーネルとして構成されているカーネルを確認するには、次のコマンドを実行します。

    sudo grubby --default-kernel
  2. 実行中のカーネル・バージョンを確認します。

    システムで実行されているカーネルを確認するには、次を実行します。

    uname -r

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

grubbyを使用して、GRUB2ブート・メニューの表示時にタイムアウト期間に達した後にGRUB2がブートするデフォルトのカーネルを設定します。

デフォルトのカーネルをRHCKからUEKに変更したり、UEKからRHCKに変更したり、特定のカーネル・バージョンに切り替えることができます。

grubbyコマンドを使用して GRUB 2でデフォルトのカーネルを設定するには、次の2つのオプションのいずれかに従うことができます。

  1. grubby --set-defaultコマンドを使用して、デフォルトのカーネルを設定します。

    別のデフォルトカーネルに切り替えるには、次のコマンドを実行して、選択したデフォルトカーネルへのフルパスを指定します。

    sudo grubby --set-default /boot/vmlinuz-kernel-version.kernel-suffix.arch

    kernel-versionおよびkernel_suffixをターゲット・カーネルと一致する値に置き換えます。たとえば、次のように実行します。

    sudo grubby --set-default /boot/vmlinuz-6.12.0-100.28.2.el10uek.x86_64

    変更はすぐに有効になり、システムの再起動後も保持されます。

  2. grubby --set-default-indexコマンドを使用して、カーネル・ブート・リスト内の特定のインデックス・ポイントでカーネルと一致するようにデフォルトのカーネルを設定します。grubby --infoコマンドを実行すると、インデックス値が表示されます。

    たとえば、--set-default-index=0オプションを使用すると、次を実行して、デフォルトのカーネルをカーネルブートインデックスにリストされている最初のカーネルに設定できます。

    sudo grubby --set-default-index=0

最新の使用可能なRHCKまたはUEKカーネルへの切替え

命名規則を使用して、/bootディレクトリで使用可能なUEKカーネルおよびRHCKカーネルを識別することで、デフォルトのカーネルを簡単に切り替えて、いずれかのカーネル・タイプの最新バージョンを使用できます。

  • システム上の最新バージョンのUEKに切り替えるには、次を実行します:
    sudo grubby --set-default $(ls /boot/vmlinuz-* | grep 'uek' | sort -V | tail -1)
  • システム上の最新バージョンのRHCKに切り替えるには、次を実行します。
    sudo grubby --set-default $(ls /boot/vmlinuz-* | grep -v 'uek' | sort -V | tail -1)

デフォルトのカーネルをそのカーネル・タイプに切り替えるように設定した後、システムをリブートします。

カーネルコマンド行ブートパラメータの変更

場合によっては、GRUB 2構成を編集して、カーネルコマンド行で特定のカーネルブートパラメータを指定することが必要になることがあります。GRUB 2構成でパラメータを設定すると、ブートのたびに、影響を受けるカーネルにパラメータが使用されます。

特定のカーネル、またはシステムにインストールされているすべてのカーネルの GRUB 2ブート構成を更新するには、次を実行します。

  1. grubby --update-kernelコマンドを使用して、カーネル・エントリを--argsで更新して新しい引数を追加したり、既存の引数値を変更したり、--remove-argsを使用して既存の引数を削除します。

    引用符で囲まれたスペースで区切られたリスト内のオプションごとに、複数の引数を指定できます。同じ操作で引数を追加および削除できます。--argsオプションを使用するときに、引数がすでに存在する場合は、古い値が新しい値に置き換えられます。

    特定のカーネルを更新するには、更新するカーネルへのフルパスを指定して grubby --update-kernelコマンドを実行します。特定のカーネルブート引数を使用するようにすべてのカーネルエントリを更新するには、grubby --update-kernel=ALLを使用します。

    たとえば、すべてのカーネル・エントリを更新して、loglevelおよびLANG引数を変更できます。

    sudo grubby --update-kernel=ALL --args "loglevel=3,LANG=en_GB.UTF-8"

    カーネルパラメータの詳細は、Kernel Boot Parameter Referenceを参照してください。

  2. 変更が有効になっており、更新したカーネルのコマンド行引数が正しいことを確認します。

    たとえば、すべてのカーネルに変更を加えた場合は、grubby --info ALLコマンドを使用して、変更がすべてのカーネルにまたがって実装されていることを確認します。

    sudo grubby --info ALL

システムのブートに最後に使用されたカーネルコマンド行を確認する

システムの起動に最後に使用されたカーネル・ブート・パラメータは、/proc/cmdlineに記録されます。

詳細は、kernel-command-line(7)マニュアル・ページを参照してください。

/proc/cmdlineの内容を確認して、実行中のシステムの起動に使用されたカーネル・コマンドラインを表示します。
cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.15.0-208.159.3.2.el9uek.x86_64 
root=UUID=72dfa724-5feb-49e2-8869-40625bfebb01 ro 
resume=UUID=13078314-ebff-4c44-b18c-3445f6802198 
rd.luks.uuid=luks-a80f8f10-75b6-45de-b63e-64b8b6a3a94b 
rhgb quiet crashkernel=1G-64G:448M,64G-:512M