ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

RHEL8クローンでカーネルを固定する

RHELではsubscription-managerの機能で、リリースを固定できます。 カーネルやリリースバージョンを厳密に指定されているようなソフトウェアを動かすときもこれなら安心ですね。

]# subscription-manager release --set=8.6

ソフトウェアによって、RHELのサポート期間が長いバージョン(通常は偶数バージョン。公式の情報 を確認)しかサポートしていないことがあるんですよ。そんな時助かります。

しかし、先日どうしてもRHEL8のクローンOSを使う必要がありました。 RHEL8のクローンOSは通常Stable版しかサポートされません(2022/12/20現在、8系なら8.7、9系なら9.1)。当然カーネルのベースバージョンも更新されます。そうするとうまく動かないソフトウェアがあるんですよね。

こんな時はgrubbyを使って、対応しようと思います。

]# dnf install grubby

リポジトリーに存在するkernelのパッケージを探して

]# dnf list kernel --showduplicates | sort -r

対象のバージョンのカーネルをインストールするときは、パッケージ名-バージョンのような感じで指定します。

]# dnf install kernel-4.18.0-372.32.1.el8_6

次のように実行すると、インストール済みのカーネルの一覧が出てきます。

]# grubby --info=ALL

その中から目的のカーネルをデフォルトに設定します。

]# grubby --set-default /boot/vmlinuz-4.18.0-372.32.1.el8_6.x86_64
]# grubby --default-kernel       #念のため確認

次の設定ファイルのUPDATEDEFAULT=no設定をしておくと、新しいカーネルがインストールされてもデフォルトカーネルが書き換えられません。

]# cat /etc/sysconfig/kernel

# UPDATEDEFAULT specifies if kernel-install should make
# new kernels the default
#UPDATEDEFAULT=yes
UPDATEDEFAULT=no

# DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel-core

詳しくはこのドキュメント参照ですね。

access.redhat.com

ちなみにリリース番号までみるようなソフトウェアはこれだけではダメです。でもだいたい、カーネルさえ対応するバージョンにしておけば大抵動きます。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。