第3章 外部のカーネルパラメーターに対する重要な変更
本章では、システム管理者向けに、Red Hat Enterprise Linux 8.1 に同梱されるカーネルにおける重要な変更の概要について説明します。変更には、proc
エントリー、sysctl
および sysfs
のデフォルト値、boot パラメーター、カーネル設定オプションの追加や更新、注目すべき動作の変更などが含まれます。
新しいカーネルパラメーター
- perf_v4_pmi = [X86,INTEL]
このパラメーターは、Intel PMU カウンターのフリーズ機能を無効にします。
この機能は、Arch Perfmon v4 (Skylake 以降) 以降でのみ存在します。
形式: <bool>
- hv_nopvspin [X86,HYPER_V]
- このパラメーターは、準仮想スピンロックの最適化を無効にし、ハイパーバイザーがロックの競合時にゲストをアイドル状態にすることができます。
- ipcmni_extend [KNL]
- このパラメーターは、一意の System V IPC 識別子の最大数を 32,768 から 16,777,216 に拡張します。
- kpti = [ARM64]
このパラメーターは、ユーザーおよびカーネルアドレス領域のページテーブルの分離を制御します。
オプションは次のとおりです。
-
デフォルト
: 軽減策が必要なコアで有効になっています。 -
0
: 強制的に無効にします。 -
1
: 強制的に有効にします。
-
- mds = [X86,INTEL]
このパラメーターは、マイクロアーキテクチャーデータサンプリング (MDS) の脆弱性に対する軽減策を制御します。
特定の CPU は、CPU の内部のバッファーに対する悪用から影響を受けやすく、特定の条件で開示ガジェットに情報が転送される可能性があります。脆弱なプロセッサーでは、攻撃者が直接アクセス権を持たないデータにアクセスするために、キャッシュ側のチャネル攻撃で、予測的に転送されるデータを利用できます。
オプションは次のとおりです。
-
full
- 脆弱な CPU で MDS 軽減策を有効にします。 -
full,nosmt
- 脆弱な CPU で MDS 軽減策を有効にし、同時マルチスレッド (SMT) を無効にします。 off
- MDS 軽減策を無条件に無効にします。このパラメーターを指定しない場合は、
mds=full
と同じです。詳細は、アップストリームの カーネルドキュメント を参照してください。
-
- mitigations = [X86,PPC,S390,ARM64]
このパラメーターは、CPU の脆弱性に対するオプションの軽減策を制御します。これは、既存のアーキテクチャー固有のオプションの集約となる、一連の、アーキテクチャーに依存しないオプションです。
オプションは次のとおりです。
off
- オプションの CPU 軽減策をすべて無効にします。これによりシステムパフォーマンスが向上しますが、ユーザーを複数の CPU の脆弱性にさらす可能性もあります。以下に相当します。
-
nopti [X86,PPC]
-
kpti=0 [ARM64]
-
nospectre_v1 [X86,PPC]
-
nobp=0 [S390]
-
nospectre_v2 [X86,PPC,S390,ARM64]
-
spectre_v2_user=off [X86]
-
spec_store_bypass_disable=off [X86,PPC]
-
ssbd=force-off [ARM64]
-
l1tf=off [X86]
-
mds=off [X86]
-
auto
(デフォルト) - すべての CPU 脆弱性を軽減しますが、脆弱な場合でも SMT (Simultaneous multithreading) を有効にしたままにしておきます。このオプションは、カーネルのアップグレードで SMT が自動的に無効化されないようにしたいユーザーや、SMT ベースの攻撃を他の方法で回避できるユーザーを対象にしています。以下に相当します。
- (デフォルトの動作)
auto,nosmt
- 必要に応じて同時マルチスレッディング (SMT) を無効にし、すべての CPU 脆弱性を軽減します。このオプションは、SMT が失われるとしても常に完全な軽減を希望するユーザー向けです。以下に相当します。
-
l1tf=flush,nosmt [X86]
-
mds=full,nosmt [X86]
-
- novmcoredd [KNL,KDUMP]
このパラメーターは、デバイスダンプを無効にします。
デバイスダンプを使用すると、ドライバーがダンプデータを vmcore に追加できるため、ドライバーが指定したデバッグ情報を収集できます。ドライバーは無制限にデータを追加でき、このデータはメモリーに保存されるため、メモリーに大きな負荷がかかる可能性があります。
デバイスダンプを無効にするとメモリーを節約できますが、ドライバーのデバッグデータは利用できなくなります。
このパラメーターは、
CONFIG_PROC_VMCORE_DEVICE_DUMP
カーネル設定が指定されている場合にのみ使用できます。- nospectre_v1 [X86]
このパラメーターは、Spectre Variant 1 (バインドチェックの回避) の軽減策を無効にします。
このオプションを使用すると、システムでデータ漏洩が発生する可能性があります。
- psi = [KNL]
このパラメーターは、Pressure Stall Information の追跡を有効または無効にします。
形式: <bool>
- random.trust_cpu={on,off} [KNL]
-
このパラメーターは、CPU の乱数ジェネレーター (ある場合) の使用を信頼する機能を有効化または無効化し、カーネルの暗号論的擬似乱数生成器 (CRNG) を完全にシードします。デフォルトは、
CONFIG_RANDOM_TRUST_CPU
カーネル設定によって制御されます。 - vm_debug[=options] [KNL]
CONFIG_DEBUG_VM=y
で利用できます。このパラメーターを有効にすると、システムの起動速度が遅くなる場合があります。特に、大量のメモリーを搭載したシステムでは顕著です。
すべてのオプションはデフォルトで有効になっています。このインターフェイスは、特定の仮想メモリーのデバッグ機能を選択的に有効または無効にできるようにするためのものです。
オプションは次のとおりです。
-
P
- ページ構造の init 時間の Poisoning を有効にします。 -
-
(ダッシュ) - 上記のオプションをすべて無効にします。
-
更新されたカーネルパラメーター
- cgroup_no_v1 = [KNL]
このパラメーターは、バージョン 1 (v1) の cgroup コントローラーと名前付き階層を無効にします。
このパラメーターは
cgroup_disable
カーネルパラメーターに似ていますが、cgroup v1 にのみ適用されます。ブラックリストに登録されたコントローラーは、cgroup2 で引き続き使用できます。all オプションはすべてのコントローラーをブラックリストに登録し、named オプションは名前付きマウントを無効にします。all と named の両方を指定すると、すべての v1 階層が無効になります。形式: { { controller | "all" | "named" } [,{ controller | "all" | "named" }…] }
- crashkernel = size[KMG][@offset[KMG]][KNL]
kexec
システムコールにより、Linux はパニック時にクラッシュカーネルに切り替えることができます。このパラメーターは、そのカーネルイメージの物理メモリー領域 [offset, offset + size] を予約します。@offset
を省略すると、適切なオフセットが自動的に選択されます。[KNL, x86_64]
@offset
が指定されていない場合、最初に 4G 未満のリージョンを選択し、4G 以上のリージョンを予約するようにフォールバックします。詳細については、アップストリームの kdump ドキュメント を参照してください。
- l1tf = [X86]
このパラメーターは、影響を受ける CPU の L1 Terminal Fault (L1TF) 脆弱性の軽減策を制御します。
オプションは次のとおりです。
-
off
- ハイパーバイザーの軽減策を無効にし、警告を発行しません。また、ハイパーバイザーとベアメタルの両方で、スワップサイズと使用可能な RAM の制限が解除されます。 flush
- デフォルトです。詳細については、アップストリームの カーネルのドキュメント を参照してください。
-
- nospectre_v2 [X86,PPC_FSL_BOOK3E,ARM64]
このパラメーターは、Spectre Variant 2 (間接的な分岐予測) の脆弱性に対するすべての軽減策を無効にします。
システムは、このパラメーターを使用してデータ漏洩を許可する場合があります。
- pci=option[,option…] [PCI]
さまざまな PCI サブシステムオプション。
オプションは次のとおりです。
-
force_floating
[S390] - 浮動割り込みを強制的に使用します。 -
nomio
[S390] - メモリー input/output (MIO) 命令を使用しません。
-
新しい /proc/sys/kernel パラメーター
- hyperv_record_panic_msg
このパラメーターは、パニックカーネルメッセージ (kmsg) データを Hyper-V に報告するかどうかを制御します。
値は以下のようになります。
-
0
: パニック kmsg データを報告しません。 -
1
: パニック kmsg データを報告します。これがデフォルトの動作です。
-
新しい/proc/sys/net パラメーター
- bpf_jit_limit
このパラメーターは、Berkeley Packet Filter Just-in-Time (BPF JIT) コンパイラーへのメモリー割り当てにグローバルな制限を適用し、制限を超えると特権のない JIT 要求を拒否します。
bpf_jit_limit
パラメーターには、グローバル制限の値がバイト単位で含まれています。
更新された/proc/sys/fs パラメーター
- dentry-state
Dentries の割り当ておよび割当解除は動的に行われます。
ユーザーは、
/proc/sys/fs/dentry-state
ファイルを読み取って、次の値を取得できます。-
nr_dentry
- 割り当てられた dentry の総数 (アクティブ + 未使用) を示します。 -
nr_unused
- あまり使用されていない Dentry の数を表示しますが、今後再利用できるように最近一番使用されていないもの (LRU) に保存されます。 -
age_limit
- メモリーが不足している場合にdcache
エントリーを再利用できるようになるまでの経過時間を秒単位で示します。 -
want_pages
-Shrink_dcache_pages()
関数が呼び出され、dcache
がまだプルーニングされていない場合にはゼロ以外になります。 -
nr_negative
- 未使用の dentry の数を表示します。この数は、どのファイルにもマッピングされていない負の場合もあります。代わりに、ユーザーから提供された存在しないファイルの拒否にかかる時間を短縮できます。
-
更新された /proc/sys/kernel パラメーター
- msg_next_id、sem_next_id、および shm_next_id
注記:
- このカーネルでは、新しいオブジェクトに目的の ID が指定されるとは限りません。間違った ID が割り当てられたオブジェクトを処理する方法は、ユーザー空間によって異なります。
- デフォルト以外の値が指定されたトグルは、プロセス間通信 (IPC) オブジェクトの割り当てが成功した後、カーネルによって -1 に戻されます。IPC オブジェクト割り当て syscall が失敗した場合に、値が変更されないままであるか、-1 にリセットされるかは未定義です。