4.9. カーネル
RHEL 8.6 のカーネルバージョン
Red Hat Enterprise Linux 8.6 には、カーネルバージョン 4.18.0-372 が同梱されています。
外部カーネルパラメーターの重要な変更 および デバイスドライバー も参照してください。
Extended Berkeley Packet Filter for RHEL 8.6
extended Berkeley Packet Filter (eBPF ) は、限られた一連の関数にアクセスできる制限付きサンドボックス環境において、カーネル領域でのコード実行を可能にするカーネル内の仮想マシンです。この仮想マシンは、特別なアセンブリーのようなコードを実行します。
eBPF バイトコードが最初にカーネルにロードされ、その後に検証が行われます。次に実行時のコンパイルでコードがネイティブマシンコードに変換され、その後、仮想マシンがコードを実行します。
Red Hat は、eBPF 仮想マシンを使用するコンポーネントを数多く提供しています。各コンポーネントの開発フェーズはさまざまです。そのため、現在すべてのコンポーネントが完全にサポートされている訳ではありません。RHEL 8.6 では、以下の eBPF コンポーネントがサポートされています。
- eBPF を使用して Linux オペレーティングシステムの I/O 分析、ネットワーク、およびモニタリングを行う BPF コンパイラーコレクション (BCC) ツールパッケージ。
- BCC ライブラリー。これを使用すると、BCC ツールパッケージで提供されるツールと同様のツールを開発できます。
- eBPF for Traffic Control (tc) 機能。これにより、カーネルネットワークデータパスでのプログラミング可能なパケット処理が可能になります。
-
bpftrace
トレース言語 - カーネルネットワーキングスタックを処理する前に受信パケットへのアクセスを提供する eXpress Data Path (XDP) 機能は、特定の条件でサポートされます。詳細は、XDP に条件付きサポートを追加 および RHEL におけるネットワーク eBPF 機能の概要 を参照してください。
-
libbpf
パッケージ。bpftrace
およびbpf/xdp
の開発のようなアプリケーションに関連する bpf に極めて重要です。 -
xdp-tools
パッケージが、AMD および Intel 64 ビットアーキテクチャーでサポートされるようになりました。このパッケージには、XDP 機能用のユーザー空間サポートユーティリティーが含まれます。これには、libxdp
ライブラリー、XDP プログラムを読み込むxdp-loader
ユーティリティー、パケットフィルタリングのxdp-filter
サンプルプログラム、XDP が有効になっているネットワークインターフェイスからパケットを取得するxdpdump
ユーティリティーなどが含まれます。
特定のコンポーネントがサポート対象と示されていない限り、その他のすべての eBPF コンポーネントはテクノロジープレビューとして提供されます。
現在、以下の主要 eBPF コンポーネントは、テクノロジープレビューとして利用できます。
-
eXpress Data Path (XDP) パスをユーザー空間に接続する
AF_XDP
ソケット
テクノロジープレビューのコンポーネントに関する詳細情報は、eBPF がテクノロジープレビューとして利用可能になりました。 を参照してください。
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#2089409)
osnoise
および timerlat
トレーサーが RHEL8 に追加される
osnoise
トレーサーは、オペレーティングシステムのノイズを測定します。つまり、OS によるアプリケーションの中断とハードウェアの中断です。また、OS ノイズの原因を見つけるのに役立つ一連のトレースポイントも提供します。timerlat
トレーサーは、ウェイクアップレイテンシーを測定し、リアルタイム (RT) スレッドのそのようなレイテンシーの原因を特定するのに役立ちます。RT コンピューティングでは、レイテンシーは絶対に重要であり、最小限の遅延でさえ有害になる可能性があります。osnoise
および timerlat
トレーサーを使用すると、OS がアプリケーションに干渉したり、RT スレッドのウェイクアップ遅延が発生したりする原因を調査して見つけることができます。
(BZ#1979382)
strace
ユーティリティーは、実際の SELinux コンテキストと 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 コンテキストの正確性のチェックが大幅に迅速化されます。システムコールトレースは、アクセス制御チェックに関する特定のカーネルの動作を説明することもできます。
--cyclictest-threshold
オプションが rteval
ユーティリティーに追加されました
この機能拡張により、--cyclictest-threshold=USEC
オプションが rteval
テストスイートに追加されました。このオプションを使用すると、しきい値を指定できます。待ち時間の測定値がこのしきい値を超えると、rteval
テストの実行はすぐに終了します。待ち時間の期待が満たされない場合、実行は失敗ステータスで中止されます。