5.2. 外部カーネルパラメーターの重要な変更
本章では、システム管理者向けに、Red Hat Enterprise Linux 8.3 に同梱されるカーネルの重要な変更点の概要を説明します。変更には、たとえば、proc
エントリー、sysctl
および sysfs
のデフォルト値、ブートパラメーター、カーネル設定オプション、または重要な動作の変更などが含まれます。
新しいカーネルパラメーター
- acpi_no_watchdog = [HW,ACPI,WDT]
- このパラメーターを使用すると、Advanced Configuration and Power Interface (ACPI) ベースのウォッチドッグインターフェイス (WDAT) を無視し、ネイティブドライバーが代わりにウォッチドッグデバイスを制御できるようにします。
- dfltcc = [HW,S390]
このパラメーターは、IBM Z アーキテクチャーの
zlib
ハードウェアサポートを設定します。形式: { on | off | def_only | inf_only | always }
オプションは次のとおりです。
-
on
(デフォルト): レベル 1 の圧縮および圧縮解除の IBM Zzlib
ハードウェアサポート -
off
- IBM Zzlib
ハードウェアのサポートはありません。 -
def_only
:deflate
アルゴリズムの IBM Zzlib
ハードウェアサポート (レベル 1 の圧縮) -
inf_only
:inflate
アルゴリズムの IBM Zzlib
ハードウェアサポート (デプロイメント) -
always
:on
と似ていますが、選択した圧縮レベルを無視し、常にハードウェアサポートを使用します (デバッグに使用)。
-
- irqchip.gicv3_pseudo_nmi = [ARM64]
このパラメーターは、カーネル内の擬似マスク不可割り込み (NMI) のサポートを有効にします。
このパラメーターを使用するには、
CONFIG_ARM64_PSEDO_NMI
設定項目でカーネルを構築する必要があります。- panic_on_taint =
add_taint()
で、条件付きでpanic()
を呼び出すビットマスク。形式: <hex>[,
nousertaint
]TAINT
フラグのセットのフラグでadd_taint()
システムコールが呼び出される際に、このフラグのセットを表す 16 進数のビットマスク。オプションのnousertaint
スイッチは、/proc/sys/kernel/tainted
ファイルに書き込むことでユーザー空間の強制を阻止します。これは、panic_on_taint
のビットマスクに一致するフラグセットに通知します。詳細は、アップストリームのドキュメント を参照してください。
- prot_virt = [S390]
形式: <bool>
このパラメーターにより、ハードウェアサポートが存在する場合には、ハイパーバイザーから分離されている保護されている仮想マシンをホストできます。
- rcutree.use_softirq = [KNL]
このパラメーターは、Tree-RCU の
softirq
処理の排除を有効にします。このパラメーターをゼロに設定すると、すべての
RCU_SOFTIRQ
処理を per-CPU rcuc kthreads に移動します。rcutree.use_softirq
をゼロ以外の値 (デフォルト) に設定すると、RCU_SOFTIRQ
がデフォルトで使用されます。rcutree.use_softirq=0
を指定して rcuc kthreads を使用します。- split_lock_detect = [X86]
このパラメーターにより、分割されたロック検出が有効になります。有効化されていると、ハードウェアサポートが有効な場合は、キャッシュライン境界でデータにアクセスするアトミックな命令により、チェック例外が調整されます。
オプションは次のとおりです。
-
off
- 有効ではありません -
warn
: カーネルは、Alignment Check Exception (#AC) をトリガーするアプリケーションについてレート制限警告を生成します 。このモードは、分割されたロック検出をサポートする CPU のデフォルトです。 '
fatal
: カーネルは、#AC 例外をトリガーするアプリケーションに Buss エラー (SIGBUS) シグナルを送信します。#AC 例外がユーザーモードで実行されていない場合、カーネルは
warn
またはfatal
モードのいずれかで oops エラーを発行します。
-
- srbds = [X86,INTEL]
このパラメーターは、特殊レジスターバッファーデータサンプリング (SRBDS) の軽減策を制御します。
特定の CPU は、マイクロアーキテクチャーデータサンプリング (MDS) のような不正使用に対して脆弱です。このような不正使用が発生すると、乱数ジェネレーターからビットが漏洩する可能性があります。
デフォルトでは、マイクロコードはこの問題を軽減します。ただし、マイクロコードの修正により、
RDRAND
およびRDSEED
命令の処理が大幅に遅くなる可能性があります。そのため、これにより、urandom
カーネル乱数のソースデバイスからのスループットが低下します。マイクロコードの軽減策を無効にするには、以下のオプションを設定します。
-
off
- 軽減策を無効にし、RDRAND
およびRDSEED
のパフォーマンスへの影響を排除します。
-
- svm = [PPC]
形式: { on | off | y | n | 1 | 0 }
このパラメーターは、pSeries システムでの Protected Execution Facility の使用を制御します。
- nopv = [X86,XEN,KVM,HYPER_V,VMWARE]
このパラメーターは、PV ドライバーなしでゲストを汎用ゲストとして実行するように強制する PV の最適化を無効にします。
現在サポートされているのは、XEN HVM、KVM、HYPER_V、および VMWARE ゲストです。
更新されたカーネルパラメーター
- hugepagesz = [HW]
このパラメーターは、Huge Page サイズを指定します。このパラメーターを
hugepages
パラメーターと共に使用して、指定されたサイズの Huge Page 数を事前に割り当てます。以下のようにペアに
hugepagesz
パラメーターとhugepages
パラメーターを指定します。hugepagesz=2M hugepages=512
hugepagesz
パラメーターは、特定の Huge Page サイズのコマンドラインで 1 回だけ指定できます。有効な Huge Page サイズはアーキテクチャーに依存します。- hugepages = [HW]
このパラメーターは、事前に割り当てる Huge Page の数を指定します。このパラメーターは、通常、有効な
hugepagesz
パラメーターまたはdefault_hugepagesz
パラメーターに従います。ただし、ヒュージページが最初に、または HugeTLB コマンドラインパラメーターのみの場合、割り当てるデフォルトサイズの
hugepages
の数を暗黙的に指定します。デフォルトサイズの Huge Page の数が暗黙的に指定されると、デフォルトサイズのhugepagesz
+hugepages
パラメーターのペアで上書きすることはできません。たとえば、2M のデフォルトの Huge Page サイズを持つアーキテクチャーの場合は、以下のようになります。
hugepages=256 hugepagesz=2M hugepages=512
上記の例からの設定により、256 2M の Huge Page の割り当てと、
hugepages=512
パラメーターが無視される警告メッセージが表示されます。hugepages
が無効なhugepagesz
の前に付けられると、hugepages
は無視されます。- default_hugepagesz = [HW]
このパラメーターは、デフォルトの Huge Page サイズを指定します。
default_hugepagesz
は、コマンドラインで 1 回のみ指定できます。オプションとして、default_hugepagesz
をhugepages
パラメーターに従って実行し、デフォルトサイズの特定の Huge Page を事前割り当てできます。また、事前に割り当てるために、デフォルトサイズの Huge Page の数を暗黙的に指定することもできます。たとえば、2M のデフォルトの Huge Page サイズを持つアーキテクチャーの場合は、以下のようになります。
hugepages=256 default_hugepagesz=2M hugepages=256 hugepages=256 default_hugepagesz=2M
上記の例からの設定により、256 2M の Huge Page が割り当てられます。有効なデフォルトの Huge Page サイズはアーキテクチャーに依存します。
- efi = [EFI]
形式: { "old_map", "nochunk", "noruntime", "debug", "nosoftreserve" }
オプションは次のとおりです。
-
old_map
[X86-64] - 古い ioremap ベースの EFI ランタイムサービスへのマッピングに切り替えます。32-bit は依然として、デフォルトでこれを使用します。 -
nochunk
: EFI ブートスタブの chunks 内のファイルの読み取りを無効にします。チャンクすると一部のファームウェアの実装で問題が発生する可能性があります。 -
noruntime
- EFI ランタイムサービスのサポートの無効化 -
debug
- その他のデバッグ出力を有効にする -
nosoftreserve
:EFI_MEMORY_SP
(Specific Purpose) 属性により、カーネルがメモリーマッピングドライバーを要求に予約することがあります。efi=nosoftreserve
を指定してこの予約を無効にし、ベースタイプ (例:EFI_CONVENTIONAL_MEMORY
/ "System RAM") でメモリーを処理します。
-
- intel_iommu = [DMAR]
Intel IOMMU ドライバー Direct Memory Access Remapping (DMAR)。
追加されたオプションは以下のとおりです。
-
nobounce
(デフォルト off)- Thunderbolt デバイスなどの信頼できないデバイスのバウンスバッファーを無効にします。これにより、信頼できないデバイスを信頼できるデバイスとして扱います。したがって、この設定により、ダイレクトメモリーアクセス (DMA) 攻撃のセキュリティーリスクにさらされる可能性があります。
-
- mem = nn[KMG] [KNL,BOOT]
このパラメーターにより、特定のメモリー量の使用が強制されます。
以下のように、使用するメモリー量。
- テスト用です。
- カーネルがシステムメモリー全体を表示できない場合
mem
境界を超えたメモリーはハイパーバイザーから除外されてから、KVM ゲストに割り当てられます。[X86] 最大アドレスの制限として機能します。物理アドレス領域の競合を避けるために
memmap
パラメーターと併用します。memmap
を使用しない場合には、PCI (Peripheral Component Interconnect) デバイスが未使用の RAM に属するアドレスに配置できました。この設定は、上記の場合 3 以降、ブート時の場合にのみ有効であることに注意してください。これは、ハイパーバイザーのシステムメモリーが十分にない場合に、ブート後にメモリーを追加する必要がある場合があります。
- pci = [PCI]
さまざまな Peripheral Component Interconnect (PCI) サブシステムオプション。
ここでの一部のオプションは、特定のデバイスまたはデバイスセット (
<pci_dev>
) 上で動作します。これは、以下のいずれかの形式で指定されます。[<domain>:]<bus>:<dev>.<func>[/<dev>.<func>]* pci:<vendor>:<device>[:<subvendor>:<subdevice>]
最初の形式は、PCI バス/デバイス/機能アドレスを指定して、新しいハードウェアが挿入される場合、マザーボードファームウェアが変更したり、他のカーネルパラメーターによって生じることが原因で変更する可能性があることに注意してください。ドメインを指定しないと、ゼロになります。オプションで、ベースアドレスの後に、複数のデバイス/機能アドレス経由のデバイスへのパスを指定できます (これは、再番号の問題に対して堅牢です)。2 つ目の形式は、設定領域から ID を使用してデバイスを選択します。これは、システム内の複数のデバイスに一致する可能性があります。
オプションは次のとおりです。
-
hpmmiosize
: ホットプラグブリッジのメモリーマッピング I/O (MMIO) ウィンドウ用に予約されるバス領域の固定量。デフォルトサイズは 2 メガバイトです。 -
hpmmioprefsize
: ホットプラグブリッジの MMIO_PREF ウィンドウ用に予約されるバス領域の固定量。デフォルトサイズは 2 メガバイトです。
-
- pcie_ports = [PCIE]
PCIe (peripheral Component Interconnect Express) ポートサービスを処理する。
オプションは次のとおりです。
-
native
: プラットフォームが OS ホットプラグを付与していない場合でも、ネイティブの PCIe サービス (PME、AER、DPC、PCIPC、PCIPC) を使用します。この設定は、プラットフォームがこれらのサービスも使用しようとすると、競合が発生する可能性があります。 -
DPC-native
- DPC にネイティブ PCIe サービスのみを使用します。この設定では、ファームウェアが AER または DPC を使用する場合は競合が発生する可能性があります。 -
compat
: ネイティブ PCIe サービス (PME、AER、DPC、PCIPC ホットプラグ) を無効にします。
-
- rcu_nocbs = [KNL]
- 引数は CPU リストです。文字列 all を使用して、システム上のすべての CPU を指定できます。
- usbcore.authorized_default = [USB]
デフォルトの USB デバイス認証。
オプションは次のとおりです。
-
-1
(デフォルト) - ワイヤレス USB を除く認証 -
0
- 非承認 -
1
- 承認 -
2
- デバイスが内部ポートに接続されている場合に承認される
-
- usbcore.old_scheme_first = [USB]
- このパラメーターにより、古いデバイスの初期化スキームを開始できます。この設定は、低スピードデバイスおよびフルスピードデバイス (デフォルトは 0 = off) のみに適用されます。
- usbcore.quirks = [USB]
組み込み USB コア quirk リストを拡張する quirk エントリーのリスト。リストエントリーはコンマで区切られます。各エントリーには VendorID:ProductID:Flags の形式 (例:
quirks=0781:5580:bk,0a5c:5834:gij
) があります。ID は 4 桁の 16 進数で、フラグ は文字のセットです。各文字は、組み込みの quirk を変更します。クレデンシャルが設定されると、明確で消去された場合は設定を行います。追加されたフラグ:
-
o
:USB_QUIRK_HUB_SLOW_RESET
(ポートリセット後に、ハブで遅延が必要)
-
新しい /proc/sys/fs パラメーター
- protected_fifos
このパラメーターは Openwall ソフトウェアの制限をベースとしており、プログラムが通常のファイルの作成を目的とする攻撃者が制御する FIFO への意図しない書き込みを回避するための保護を提供します。
オプションは次のとおりです。
-
0
: FIFO への書き込みは無制限です。 -
1:
ディレクトリーの所有者によって所有されていない限り、すべてのユーザーが書き込み可能なスティッキーディレクトリーの FIFO でO_CREAT
フラグが開かないようにします。 -
2
: グループの書き込み可能なスティッキーディレクトリーに適用されます。
-
- protected_regular
このパラメーターは
protected_fifos
パラメーターと似ていますが、プログラムが作成予定の攻撃者が制御する通常のファイルに書き込むのを防ぎます。オプションは次のとおりです。
-
0
: 通常のファイルへの書き込みは無制限です。 -
1:
ディレクトリーの所有者によって所有されていない限り、すべてのユーザーが書き込み可能なスティッキーディレクトリーの通常のファイルでO_CREAT
フラグが開かないようにします。 -
2
: グループの書き込み可能なスティッキーディレクトリーに適用されます。
-