17.3. カーネルへの注目すべき変更
64k ページサイズのカーネル
4k ページをサポートする RHEL 9 for ARM カーネルに加えて、Red Hat は 64k ページをサポートするオプションのカーネルパッケージ kernel-64k
を提供するようになりました。
64k ページサイズのカーネルは、ARM プラットフォーム上の大規模なデータセットに便利なオプションです。これにより、メモリーや CPU を大量に消費する一部の操作のパフォーマンスが向上します。
64 ビット ARM アーキテクチャーシステムでは、インストール時にページサイズを選択する必要があります。kernel-64k
パッケージを Kickstart
ファイルのパッケージリストに追加すると、Kickstart のみで kernel-64k
をインストールできます。
kernel-64k
のインストールの詳細は、ARM への Kernel-64k のインストール を参照してください。
TPM 1.2 セキュア暗号プロセッサーは、RHEL 9 ではサポート対象外になる
TPM (Trusted Platform Module) セキュア暗号プロセッサーバージョン 1.2 が削除され、RHEL 9 以降のバージョンではサポートされなくなりました。TPM 2.0 は、TPM 1.2 に代わるもので、TPM 1.2 よりも改善されています。TPM 2.0 は以前のバージョンと互換性がありません。
TPM 1.2 に対応する必要があるアプリケーションについては、RHEL 8 を使用してください。
RHEL 9 では、デフォルトで有効になっている cgroup-v2
コントロールグループバージョン 2 (cgroup-v2
) 機能は、制御グループの管理を簡素化する 1 つの階層モデルを実装します。また、プロセスが、一度に 1 つのコントロールグループのメンバーにのみなれるようにします。systemd
との深い統合により、RHEL システムでリソース制御を設定する際のエンドユーザーエクスペリエンスが改善されます。
新機能の開発は、主に cgroup-v2
向けに行われます。これには、cgroup-v1
に欠けている機能がいくつかあります。同様に、cgroup-v1
には、cgroup-v2
に欠けている従来の機能がいくつか含まれています。また、制御インターフェイスも異なります。したがって、cgroup-v1
に直接依存するサードパーティーソフトウェアは、cgroup-v2
では適切に実行されない可能性があります。
cgroup-v1
を使用するには、以下のパラメーターをカーネルコマンドラインに追加する必要があります。
systemd.unified_cgroup_hierarchy=0 systemd.legacy_systemd_cgroup_controller
systemd.unified_cgroup_hierarchy=0
systemd.legacy_systemd_cgroup_controller
cgroup-v1
と cgroup-v2
の両方がカーネルで完全に有効になっている。カーネルから見た場合、デフォルトのコントロールグループバージョンはありません。また、システムの起動時にマウントするかどうかは、systemd
により決定します。
サードパーティーのカーネルモジュールに影響を与える可能性のあるカーネル変更
5.9 以前のカーネルバージョンを持つ Linux ディストリビューションは、GPL 以外の機能としての GPL 機能のエクスポートに対応していました。これにより、ユーザーは shim
メカニズムを介して、独自の機能を GPL カーネル機能にリンクできます。今回のリリースで、RHEL カーネルにアップストリームの変更が組み込まれました。これにより、RHEL の機能が強化され、shim
の再バフィングにより GPL が適用されるようになりました。
パートナーおよび独立したソフトウェアベンダー (ISV) は、初期バージョンの RHEL 9 でカーネルモジュールをテストして、GPL への準拠を確認する必要があります。
コアスケジューリングは RHEL 9 でサポートされている
コアスケジューリング機能を使用すると、相互に信頼できないタスクが同じ CPU コアを共有するのを防ぐことができます。同様に、ユーザーは CPU コアを共有できるタスクのグループを定義できます。
以下のグループを指定できます。
- SMT (Cross-Symmetric Multithreading) 攻撃を軽減することでセキュリティーを改善するには、以下の手順を行います。
- コア全体を必要とするタスクを分離するには、以下を行います。たとえば、リアルタイム環境のタスク、または SIMD (Multiple Data) 処理や Single Instruction などの特定のプロセッサー機能に依存するタスクなど。
詳細は コアスケジューリング を参照してください。
kernelopts
環境変数は RHEL 9 で削除された
RHEL 8 では、GRUB ブートローダーを使用するシステムのカーネルコマンドラインパラメーターが kernelopts
環境変数で定義されていました。変数は、カーネルブートエントリーごとに /boot/grub2/grubenv
ファイルに保存されました。ただし、kernelopts
を使用してカーネルコマンドラインパラメーターを保存することは堅牢ではありませんでした。そのため、Red Hat は kernelopts
を削除し、カーネルコマンドラインパラメーターは、/boot/loader/entries/<KERNEL_BOOT_ENTRY>.conf
ファイルではなく、ブートローダー仕様 (BLS) スニペットに保存されるようになりました。
Red Hat は、マイナーリリースに対してのみカーネルシンボルを保護します。
Red Hat は、保護されたカーネルシンボルを使用してカーネルモジュールをコンパイルする場合にのみ、カーネルモジュールが Extended Update Support (EUS) リリース内の将来のすべての更新でロードされ続けることを保証します。RHEL 9 のマイナーリリース間では、カーネルアプリケーションバイナリーインターフェイス (ABI) の保証はありません。
POSIX_FADV_NOREUSE
アドバイスのサポートを削除
RHEL 9.5 より前のバージョンでは、カーネルは POSIX_FADV_NOREUSE
のアドバイスを無視していました。RHEL 9.5 から、このアドバイスへの対応が導入されました。ただし、このアドバイスを実装すると、MADV_RANDOM
アドバイスを使用するアプリケーションのパフォーマンスに大きな影響を与えます。その結果、MADV_RANDOM
の RHEL 9 の期待される動作を維持するために、POSIX_FADV_NOREUSE
の実装が元に戻ります。
RHEL 9.6 からは、アプリケーションの動作の変更は次のとおりです。
-
MADV_RANDOM
を使用するアプリケーションは、以前のバージョンの RHEL と同様に正常に動作します。 -
POSIX_FADV_NOREUSE
を使用するアプリケーションは機能の変更の対象ではありませんが、POSIX_FADV_NOREUSE
はカーネルに実装されません。