4.9. カーネル

RHEL 9.0 のカーネルバージョン

Red Hat Enterprise Linux 9.0 には、カーネルバージョン 5.14.0-70 が同梱されています。

(BZ#2077836)

Red Hat は、デフォルトで、特権ユーザーに対してのみ、すべての RHEL バージョンで eBPF を有効にします。

Extended Berkeley Packet Filter (eBPF) は、ユーザーが Linux カーネル内でカスタムコードを実行できるようにする複雑なテクノロジーです。その性質上、eBPF コードはベリファイアやその他のセキュリティーメカニズムを通過する必要があります。Common Vulnerabilities and Exposures (CVE) インスタンスがあり、このコードのバグが不正な操作に悪用される可能性がありました。このリスクを軽減するため、Red Hat は、特権ユーザーの場合にのみ、すべての RHEL バージョンで eBPF を有効にしています。kernel.command-line パラメーター unprivileged_bpf_disabled=0 を使用して、非特権ユーザーに対して eBPF を有効にすることができます。

ただし、

  • unprivileged_bpf_disabled=0 を適用すると、カーネルが Red Hat サポートの資格を失い、システムがセキュリティーリスクにさらされます。
  • Red Hat は、CAP_BPF 機能を持つプロセスを、その機能が CAP_SYS_ADMIN と同等であるかのように扱うことを推奨します。
  • unprivileged_bpf_disabled=0 を設定しても、非特権ユーザーが多くの BPF プログラムを実行するには不十分です。これは、ほとんどの BPF プログラムタイプのロードには追加の機能 (通常は CAP_SYS_ADMIN または CAP_PERFMON) が必要になるためです。

カーネルコマンドラインパラメーターの設定方法は、カーネルコマンドラインパラメーターの設定 を参照してください。

(BZ#2091643)

Red Hat は、マイナーリリースに対してのみカーネルシンボルを保護します。

Red Hat は、保護されたカーネルシンボルを使用してカーネルモジュールをコンパイルする場合にのみ、カーネルモジュールが Extended Update Support (EUS) リリース内の将来のすべての更新でロードされ続けることを保証します。RHEL 9 のマイナーリリース間では、カーネルアプリケーションバイナリーインターフェイス (ABI) の保証はありません。

(BZ#2059183)

信頼できる SecureBoot 証明書で署名された RHEL 9 Beta カーネル

これまでの RHEL ベータ版では、ユーザーがマシンオーナーキー (MOK) 機能を使用して別のベータ版公開鍵を登録する必要がありました。RHEL 9 ベータ版以降、カーネルが信頼できる SecureBoot 証明書で署名されているため、UEFI セキュアブートが有効なシステムでベータ版を使用する際に、ベータ版用の公開鍵を別途登録する必要がなくなりました。

(BZ#2002499)

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
注記

cgroup-v1cgroup-v2 の両方がカーネルで完全に有効になっている。カーネルから見た場合、デフォルトのコントロールグループバージョンはありません。また、システムの起動時にマウントするかどうかは、systemd により決定します。

(BZ#1953515)

サードパーティーのカーネルモジュールに影響を与える可能性のあるカーネル変更

5.9 以前のカーネルバージョンを持つ Linux ディストリビューションは、GPL 以外の機能としての GPL 機能のエクスポートに対応していました。これにより、ユーザーは shim メカニズムを介して、独自の機能を GPL カーネル機能にリンクできます。今回のリリースで、RHEL カーネルにアップストリームの変更が組み込まれました。これにより、RHEL の機能が強化され、shim の再バフィングにより GPL が適用されるようになりました。

重要

パートナーおよび独立したソフトウェアベンダー (ISV) は、初期バージョンの RHEL 9 でカーネルモジュールをテストして、GPL への準拠を確認する必要があります。

(BZ#1960556)

RHEL 9 の 64 ビット ARM アーキテクチャーのページサイズが 4KB

Red Hat Enterprise Linux 9 の 64 ビット ARM アーキテクチャーでは、4KB ページサイズの物理メモリーが選択されています。このサイズペアは、ARM ベースのシステムの大半に存在するワークロードおよびメモリー量と十分に一致します。大きなページサイズを効率的に使用するには、huge pages オプションを使用して、大量のメモリーや、大規模なデータセットのワークロードに対処します。

huge pages の詳細は、システムのステータスおよびパフォーマンスの監視および管理 を参照してください。

(BZ#1978382)

strace ユーティリティーで SELinux コンテキストの不一致が正しく表示されるようになりました。

strace の既存の --secontext オプションは、mismatch パラメーターで拡張されました。このパラメーターを使用すると、不一致の場合にのみ、実際のコンテキストとともに期待されるコンテキストを出力できます。出力は、2 つの感嘆符 ( !!) で区切られます。最初は実際のコンテキスト、次に期待されるコンテキストです。以下の例では、コンテキストのユーザー部分が不一致であるため、full,mismatch パラメーターは、実際のコンテキストとともに期待される完全なコンテキストを出力します。ただし、単独の mismatch を使用する場合は、コンテキストのタイプ部分のみをチェックします。コンテキストのタイプ部分が一致するため、予期されるコンテキストは出力されません。

[...]
$ strace --secontext=full,mismatch -e statx stat /home/user/file
statx(AT_FDCWD, "/home/user/file" [system_u:object_r:user_home_t:s0!!unconfined_u:object_r:user_home_t:s0], ...

$ strace --secontext=mismatch -e statx stat /home/user/file
statx(AT_FDCWD, "/home/user/file" [user_home_t:s0], ...

SELinux コンテキストの不一致は、SELinux に関連するアクセス制御の問題を引き起こすことがよくあります。システムコールトレースに出力された不一致により、SELinux コンテキストの正確性のチェックが大幅に迅速化されます。システムコールトレースは、アクセス制御チェックに関する特定のカーネルの動作を説明することもできます。

(BZ#2038965)

perf-top が特定の列でソートできるようになりました。

今回のシステムプロファイリングツール perf-top の更新により、任意のイベントカラムでサンプルをソートできるようになりました。これまでは、1 つのグループで複数のイベントをサンプリングした場合、イベントは最初の列でソートしていました。サンプルをソートするには、--group-sort-idx コマンドラインオプションを使用し、数字キーを押すと、一致するデータ列でテーブルをソートすることができます。なお、列番号は 0 から始まります。

(BZ#1851933)

新規パッケージ: jigawatts

CRIU (Checkpoint/Restore In Userspace) は、プロセスのチェックポイントと復元を可能にする Linux ユーティリティーです。jigawatts パッケージには、Java ライブラリーが含まれています。これは、Java アプリケーションから CRIU メカニズムの利便性を向上させることを目的としています。

(BZ#1972029)

trace-cmd reset コマンドの挙動の変更

以前は、trace-cmd reset コマンドで traceing_on 設定が 0 にリセットされていました。trace-cmd reset の新しい動作では、traceing_on をデフォルト値 1 にリセットします。

(BZ#1933980)

RHEL 9 で Extended Berkeley Packet Filter に対応

extended Berkeley Packet Filter (eBPF ) は、限られた一連の関数にアクセスできる制限付きサンドボックス環境において、カーネル領域でのコード実行を可能にするカーネル内の仮想マシンです。この仮想マシンは、特別なアセンブリーのようなコードを実行します。

eBPF バイトコードが最初にカーネルに読み込みます。その後、バイトコードは検証され、すぐにコンパイルしてネイティブマシンコードに変換されます。最後に、仮想マシンはコードを実行します。

Red Hat は、eBPF 仮想マシンを使用するコンポーネントを数多く提供しています。RHEL 9 では、これらのコンポーネントには以下が含まれます。

  • eBPF を使用して Linux オペレーティングシステムの I/O 分析、ネットワーク、およびモニタリングを行う BPF コンパイラーコレクション (BCC) パッケージ。
  • BCC ライブラリー。これを使用すると、BCC ツールパッケージで提供されるツールと同様のツールを開発できます。
  • bpftrace トレース言語。
  • libbpf パッケージ。これは、bpf 開発および bpftrace などの bpf 関連アプリケーションにとって重要です。

    • libbpf ライブラリーの XDP および AF_XDP API 部分はサポートされていません。今後のリリースで削除される可能性があります。
  • eBPF for Traffic Control (tc) 機能。これにより、カーネルネットワークデータパスでのプログラミング可能なパケット処理が可能になります。
  • eXpress Data Path (XDP) 機能。カーネルネットワークスタックがパケットを処理する前に、受信したパケットへのアクセスを提供します。Red Hat は、libxdp ライブラリーを介して使用されている場合にのみ XDP をサポートします。
  • xdp-tools パッケージには、XDP 機能のユーザースペースサポートユーティリティーが含まれており、AMD64 および Intel64 CPU アーキテクチャーでサポートされています。xdp-tools パッケージには、次のものが含まれます。

    • libxdp ライブラリー。
    • XDP プログラムをロードするための xdp-loader ユーティリティー。
    • パケットのフィルタリング用の xdp-filter のサンプルプログラム。
    • XDP が有効になっているネットワークインターフェイスからパケットをキャプチャするための xdpdump ユーティリティー。xdpdump ユーティリティーは、現在、AMD64 および Intel64 CPU アーキテクチャーでのみサポートされています。これは、テクノロジープレビューとして他のアーキテクチャーで利用できます。
  • eXpress Data Path (XDP) パスをユーザー空間に接続する AF_XDP ソケット。

(BZ#2070506)

RHEL 9 は、crash ユーティリティーバージョン 8.0.0 を提供します。

RHEL 9 は、crash ユーティリティーバージョン 8.0.0 とともに配布されます。バグ修正および主な機能強化は、以下のとおりです。

  • add-symbol-file コマンドで新しい offset パラメーターを追加します。このサポートは、kaslr_offsetgdb に設定するのに役立ちます。
  • gdb-7.6gdb-10.2 にアップグレードします。

(BZ#1896647)

makedumpfile は、改善された zstd 圧縮機能をサポートするようになりました

この機能拡張により、makedumpfile には、高い圧縮率を提供する Zstandard (zstd) 圧縮機能が含まれるようになりました。この改善は、特に大量のメモリーシステムに役立ちます。

zstd 圧縮機能は、以前の圧縮率と比較して、vmcore ダンプサイズと圧縮時間の消費量のバランスが取れています。その結果、圧縮メカニズムが改善されたため、許容範囲で大きな vmcore ファイルが作成されるようになりました。

適切な圧縮率は、システムの使用方法と RAM に格納されているデータ型にも依存することに注意してください。

(BZ#1988894)

IntelXeon スケーラブルサーバープロセッサーで有効になっている numatop

numatop は、NUMA システムで実行されているプロセスとスレッドの動作を追跡および分析し、NUMA 関連のパフォーマンスのボトルネックを特定できるメトリックを表示するツールです。

numatop は、インテルのパフォーマンスカウンターサンプリングテクノロジーを使用し、パフォーマンスデータを Linux システムの runtime 情報に関連付けて、本番システムでの分析を提供します。

(BZ#1874125)

RHEL 9 のデフォルトオプションとして kexec_file_load が追加されました。

この更新により、64 ビット ARM アーキテクチャーの kexec_file_load システムコールが追加されます。kdump 用のカーネル内 kexec ローダーを提供します。以前は、カーネルは、セキュア起動オプションが有効な場合に署名されていないカーネルイメージを読み込むことができませんでした。kdump メカニズムは、最初にセキュアブートが有効になっているかどうかを検出しようとし、次に実行するブートインターフェイスを選択します。その結果、署名されていないカーネルは、セキュアブートが有効で、kexec_file_load () が指定されているとロードできませんでした。

この更新により問題が修正され、説明されているシナリオで署名されていないカーネルが正しく機能します。

(BZ#1895232)

makedumpfile に、推定 vmcore サイズを取得するための改善されたオプションが含まれるようになりました

この実装により、makedumpfile ユーティリティーには、現在実行中のカーネルのダンプサイズの見積もりを出力するのに役立つ次のオプションが含まれるようになりました。

  • --dry-run は、他のオプションで指定されたすべての操作を実行しますが、出力ファイルは書き込みません。
  • --show-stats は、レポートメッセージを出力します。これは、--message-level オプションに提供されたレベルでビット 4 を有効にする代わりの方法です。

次の例は、--dry-run--show-stats の 使用法を示しています。

$ makedumpfile --dry-run --show-stats -l --message-level 7 -d 31 /proc/kcore dump.dummy

ダンプファイルのサイズは、パニック時のシステム状態によって異なる場合があり、オプションによって提供される見積もりが実際の状態と異なる場合があることに注意してください。

(BZ#1958452)

kexec-tools パッケージは、RHEL 9 のデフォルトの crashkernel メモリー予約値をサポートするようになりました。

kexec-tools パッケージは、デフォルトの クラッシュカーネル メモリー予約値を維持するようになりました。kdump サービスはデフォルト値を使用して、カーネルごとに crashkernel メモリーを確保します。また、この実装により、システムの利用可能なメモリーが 4GB 未満になると、kdump のメモリー割り当てが改善されます。

デフォルトの crashkernel 値をクエリーするには、以下を実行します。

$ kdumpctl get-default-crashkernel

デフォルトの crashkernel 値で予約されているメモリーがシステムでは不十分な場合は、crashkernel パラメーターを増やします。

起動コマンドラインの crashkernel=auto オプションは、RHEL 9 以降のリリースではサポートされなくなりました。

詳細は、/usr/share/doc/kexec-tools/crashkernel-howto.txt ファイルを参照してください。

(BZ#2034490)

コアスケジューリングは RHEL 9 でサポートされている

コアスケジューリング機能を使用すると、相互に信頼できないタスクが同じ CPU コアを共有するのを防ぐことができます。同様に、ユーザーは CPU コアを共有できるタスクのグループを定義できます。

以下のグループを指定できます。

  • SMT (Cross-Symmetric Multithreading) 攻撃を軽減することでセキュリティーを改善するには、以下の手順を行います。
  • コア全体を必要とするタスクを分離するには、以下を行います。たとえば、リアルタイム環境のタスク、または SIMD (Multiple Data) 処理や Single Instruction などの特定のプロセッサー機能に依存するタスクなど。

詳細は コアスケジューリング を参照してください。

(JIRA:RHELPLAN-100497)

非制限の iommu モードをデフォルトとして使用し、64 ビット ARM アーキテクチャーのパフォーマンスを強化

今回の更新で、64 ビットの ARM アーキテクチャーは、システムメモリー管理ユニット (SMMU) の Lazy Direct Memory Access (DMA) ドメインの使用にデフォルト設定されています。パフォーマンスが大幅に向上しますが、アドレスアンマップと、SMMU でのトランスレーションルックアサイドバッファー (TLB: Translation Lookaside Buffer) 間のウィンドウを追加することができます。以前のバージョンでは、64 ビットの ARM アーキテクチャーは厳格な DMA ドメインをデフォルトとして設定していたため、ページサイズが 4KB が原因でパフォーマンスが低下することがありました。

厳密な DMA ドメインモードを使用する必要がある場合は、カーネルコマンドラインを使用して iommu.strict=1 モードを指定します。厳密な DMA ドメインを使用すると、64 ビット ARM アーキテクチャーでパフォーマンスが低下する可能性があることに注意してください。

(BZ#2050415)

kernel-rt ソースツリーが RHEL 9.0 ツリーに更新されました。

kernel-rt ソースが更新され、最新の Red Hat Enterprise Linux カーネルソースツリーを使用するようになりました。リアルタイムパッチセットも、最新のアップストリームバージョン v5.15-rt19 に更新されました。これらの更新は、バグ修正および機能強化を多数提供します。

(BZ#2002474)

hv_24x7hv_gpci PMUs での CPU ホットプラグのサポート

今回の更新で、PMU カウンターが CPU のホットプラグに正しく対応するようになりました。その結果、hv_gpci イベントカウンターが無効な CPU で実行されている場合、カウントは別の CPU にリダイレクトされます。

(BZ#1844416)

POWERPC hv_24x7 ネストイベントのメトリックが利用可能に

POWERPC hv_24x7 ネストイベントのメトリックが perf で利用可能になりました。複数のイベントを集計することで、これらのメトリックは perf カウンターから取得した値をより明確に理解し、CPU がワークロードをどのように効果的に処理できるかを理解します。

(BZ#1780258)

IRDMA ドライバーが RHEL 9 に導入

IRDMA ドライバーは、RDMA 対応の Intel®ネットワークデバイスで RDMA 機能を有効にします。このドライバーが対応しているデバイスは、以下のとおりです。

  • Intel® Ethernet Controller E810
  • Intel® Ethernet Network Adapter X722

RHEL 9 は、iWARP (X722 Internet Wide-area RDMA Protocol) デバイス向けに、最新の IRDMA (Intel® Ethernet Protocol Driver for RDMA) を提供します。RHEL 9 には、iWARP および RDMA over Converged Ethernet (RoCEv2) に対応する新しい E810 デバイスが追加されました。IRDMA モジュールは、X722 用の従来の i40iw モジュールに代わるもので、i40iw 用に定義された Application Binary Interface (ABI) を拡張します。この変更は、従来の X722 RDMA-Core プロバイダー (libi40iw) と後方互換性があります。

  • X722 デバイスは、iWARP およびより限定的な設定パラメーターセットにのみ対応しています。
  • E810 デバイスは、次の RDMA および輻輳管理機能セットに対応しています。

    • iWARP および RoCEv2 RDMA のトランスポート
    • Priority Flow Control (PFC)
    • Explicit Congestion Notification (ECN)

(BZ#1874195)

カーネル bonding モジュール lacp_active の新しいパラメーター

RHEL 9 では、bonding カーネルモジュールの lacp_active パラメーターが導入されました。このパラメーターは、指定の間隔で Link Aggregation Control Protocol Data Unit (LACPDU) フレームを送信するかどうかを指定します。オプションは次のとおりです。

  • on (デフォルト): 設定済みの lacp_rate パラメーターと共に LACPDU フレームを送信できるようにします。
  • off: LACPDU フレームは speak when spoken to として機能します。

ポートの初期化またはバインド解除時に、LACPDU 状態フレームは引き続き送信されます。

(BZ#1951951)