4.9. カーネル
RHEL 9.0 のカーネルバージョン
Red Hat Enterprise Linux 9.0 には、カーネルバージョン 5.14.0-70 が同梱されています。
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) の保証はありません。
信頼できる SecureBoot 証明書で署名された RHEL 9 Beta カーネル
これまでの RHEL ベータ版では、ユーザーがマシンオーナーキー (MOK) 機能を使用して別のベータ版公開鍵を登録する必要がありました。RHEL 9 ベータ版以降、カーネルが信頼できる SecureBoot 証明書で署名されているため、UEFI セキュアブートが有効なシステムでベータ版を使用する際に、ベータ版用の公開鍵を別途登録する必要がなくなりました。
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-v1
と cgroup-v2
の両方がカーネルで完全に有効になっている。カーネルから見た場合、デフォルトのコントロールグループバージョンはありません。また、システムの起動時にマウントするかどうかは、systemd
により決定します。
サードパーティーのカーネルモジュールに影響を与える可能性のあるカーネル変更
5.9 以前のカーネルバージョンを持つ Linux ディストリビューションは、GPL 以外の機能としての GPL 機能のエクスポートに対応していました。これにより、ユーザーは shim
メカニズムを介して、独自の機能を GPL カーネル機能にリンクできます。今回のリリースで、RHEL カーネルにアップストリームの変更が組み込まれました。これにより、RHEL の機能が強化され、shim
の再バフィングにより GPL が適用されるようになりました。
パートナーおよび独立したソフトウェアベンダー (ISV) は、初期バージョンの RHEL 9 でカーネルモジュールをテストして、GPL への準拠を確認する必要があります。
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 コンテキストの正確性のチェックが大幅に迅速化されます。システムコールトレースは、アクセス制御チェックに関する特定のカーネルの動作を説明することもできます。
perf-top
が特定の列でソートできるようになる
今回のシステムプロファイリングツール perf-top
の更新により、任意のイベントカラムでサンプルをソートできるようになりました。これまでは、1 つのグループで複数のイベントをサンプリングした場合、イベントは最初の列でソートしていました。サンプルをソートするには、--group-sort-idx
コマンドラインオプションを使用し、数字キーを押すと、一致するデータ列でテーブルをソートすることができます。なお、列番号は 0
から始まります。
(BZ#1851933)
新規パッケージ: jigawatts
CRIU (Checkpoint/Restore In Userspace) は、プロセスのチェックポイントと復元を可能にする Linux ユーティリティーです。jigawatts
パッケージには、Java ライブラリーが含まれています。これは、Java アプリケーションから CRIU メカニズムの利便性を向上させることを目的としています。
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
ソケット。
RHEL 9 は、crash
ユーティリティーバージョン 8.0.0 を提供します。
RHEL 9 は、crash
ユーティリティーバージョン 8.0.0 とともに配布されます。バグ修正および主な機能強化は、以下のとおりです。
-
add-symbol-file
コマンドで新しいoffset
パラメーターを追加します。このサポートは、kaslr_offset
をgdb
に設定するのに役立ちます。 -
gdb-7.6
をgdb-10.2
にアップグレードします。
(BZ#1896647)
makedumpfile
は、改善された zstd
圧縮機能をサポートするようになりました
この機能拡張により、makedumpfile
には、高い圧縮率を提供する Zstandard (zstd
) 圧縮機能が含まれるようになりました。この改善は、特に大量のメモリーシステムに役立ちます。
zstd
圧縮機能は、以前の圧縮率と比較して、vmcore
ダンプサイズと圧縮時間の消費量のバランスが取れています。その結果、圧縮メカニズムが改善されたため、許容範囲で大きな vmcore
ファイルが作成されるようになりました。
適切な圧縮率は、システムの使用方法と RAM に格納されているデータ型にも依存することに注意してください。
(BZ#1988894)
Intel Xeon スケーラブルサーバープロセッサーで有効になっている 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
ダンプファイルのサイズは、パニック時のシステム状態によって異なる場合があり、オプションによって提供される見積もりが実際の状態と異なる場合があることに注意してください。
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_24x7
と hv_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 状態フレームは引き続き送信されます。