第 5 章 对外部内核参数的重要更改
本章为系统管理员提供了与 Red Hat Enterprise Linux 8.8 一起分发的内核中显著变化的总结。这些更改包括添加或更新的 proc
条目、sysctl
和 sysfs
默认值、引导参数、内核配置选项或者任何可见的行为更改。
新内核参数
- nomodeset
使用这个内核参数,您可以禁用内核模式设置。DRM 驱动程序将不执行显示模式更改或加速渲染。如果这是通过固件或引导装载程序进行了设置,则只有系统帧缓冲才可用。
nomodeset
可用作回退,或测试和调试。- sev=option[,option…] [X86-64]
-
如需更多信息,请参阅
Documentation/x86/x86_64/boot-options.rst
。 - amd_pstate=[X86]
-
disable :不启用
amd_pstate
作为支持的处理器的默认扩展驱动程序。 -
passive :使用
amd_pstate
作为扩展驱动程序。驱动程序在这个抽象规模上请求所需的性能,电源管理固件会将请求转换为实际的硬件状态,如核频率、数据结构和内存时钟等。
-
disable :不启用
- retbleed=ibpb,nosmt
-
这个参数与
ibpb
类似,是没有 STIBP 的系统的一种替代选择。使用这个参数,您可以在 STIBP 不可用时禁用 SMT。
更新的内核参数
- amd_iommu=[HW,X86-64]
使用这个内核参数,您可以将参数传递给系统中的 AMD IOMMU 驱动程序。可能的值有:
-
fullflush:已弃用,等同于
iommu.strict=1
。 - off :不初始化系统中发现的任何 AMD IOMMU。
force_isolation :对所有设备强制设备隔离。不再允许 IOMMU 驱动程序根据需要解除隔离要求。
-
此选项不会覆盖
iommu=pt
。
-
此选项不会覆盖
force_enable :在已知启用了 IOMMU 的平台上强制启用 IOMMU。
- 请谨慎使用这个选项。
-
fullflush:已弃用,等同于
- crashkernel=size[KMG][@offset[KMG]]
[KNL] 使用
kexec
,Linux 可以在 panic 时切换到崩溃内核。此参数为那个内核镜像保留物理内存区域 [offset, offset + size]。如果省略@offset
,则会自动选择合适的偏移量。[KNL, X86-64, ARM64] 首先选择 4G 下的区域,并在未指定
@offset
时回退到 4G 以上的保留区域。如需了解更多详细信息,请参阅
Documentation/admin-guide/kdump/kdump.rst
。- crashkernel=size[KMG],low
[KNL, X86-64, ARM64] 使用此参数,您可以为第二个内核指定 4G 以下的低范围。当
crashkernel=X,high
被传递时,这需要一些低内存,例如swiotlb
需要至少 64M+32K 低内存,还需要足够的额外低内存以确保 32 位设备的 DMA 缓冲区不会耗尽。内核会尝试自动分配 4G 以下的默认内存大小。默认大小取决于平台。- x86: max(swiotlb_size_or_default() + 8MiB, 256MiB)
arm64: 128MiB
0:禁用低分配。
当
crashkernel=X,high
未使用或保留的内存低于 4G 时,将忽略此参数。
[KNL, ARM64] 使用此参数,您可以为崩溃转储内核指定 DMA 区域中的低范围。
当不使用
crashkernel=X,high
时,会忽略这个参数。
- intel_iommu=[DMAR]
用于设置 Intel IOMMU 驱动程序(DMAR)选项的内核参数。
- on :启用 intel iommu 驱动程序。
- off :禁用 intel iommu 驱动程序。
-
igfx_off [默认为 Off]: 默认情况下,gfx 被映射为普通设备。如果 gfx 设备有一个专用的 DMAR 单元,则不会使用这个选项启用 DMAR 来绕过 DMAR 单元。在这种情况下,
gfx
设备将使用 DMA 的物理地址。 -
strict [默认为 Off]:已弃用,等同于
iommu.strict=1
。 - sp_off [默认为 Off]:默认情况下,如果 Intel IOMMU 有能力,则支持超级页。使用此选项时,将不支持超级页。
- sm_on [默认为 Off]:默认情况下,即使硬件公告支持可扩展的模式转换,也会禁用可扩展模式。设置此选项后,可以在声明支持它的硬件上使用可扩展模式。
tboot_noforce [默认为 Off]:不要强制在
tboot
下启用 Intel IOMMU。默认情况下,tboot
会强制 Intel IOMMU,这可能会损害一些高吞吐量设备(如 40GBit 网卡)的性能,即使启用了身份映射。注意使用此选项可降低
tboot
提供的安全性,因为它会使系统容易受到 DMA 攻击。
- iommu.strict=[ARM64,X86]
使用这个内核参数,您可以配置 TLB 无效行为。
格式:
{ "0" | "1" }
- 0 - lazy 模式。请求 DMA 取消映射操作使用硬件 TLB 的延迟无效,以减少设备隔离为代价来提高吞吐量。如果相关 IOMMU 驱动程序不支持,将回退到 strict 模式。
- 1 - Strict 模式.DMA 取消映射操作会同步使 IOMMU 硬件 TLB 无效。
unset - 使用
CONFIG_IOMMU_DEFAULT_DMA_{LAZY,STRICT}
的值。注意在 x86 上,通过传统的特定于驱动程序的一个选项指定的 strict 模式具有优先权。
- mem_encrypt=[X86-64]
用于设置 AMD 安全内存加密(SME)控制的内核参数。
有效参数:on、off
默认值取决于内核配置选项:
- on (CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT=y)
- off (CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT=n)
- mem_encrypt=on :激活 SME
mem_encrypt=off :不激活 SME
有关何时可以激活内存加密的详情,请参阅
Documentation/virt/kvm/x86/amd-memory-encryption.rst
。
- retbleed=[X86]
有了这个内核参数,您可以控制 RETBleed(带有返回指令的任意推测代码执行)漏洞的缓解。
仅使用基于 AMD 的 UNRET 和 IBPB 缓解不会同级线程影响其他同级线程的预测。因此,STIBP 用于支持它的处理器,并缓解不支持它的处理器上的 SMT。
- off - 不缓解
- auto - 自动选择一个缓解
- auto,nosmt - 自动选择一个缓解,如果需要整个缓解则禁用 SMT(只在 Zen1 和没有 STIBP 的旧 Zen1 上)。
- IBPB - 在 AMD 上,也缓解基本块边界上的短投机窗口。安全,最高的性能影响。它还启用 STIBP (如果存在的话)。不适用于 Intel。
- unret - 强制启用未经训练的返回 thunks,仅对基于 AMD f15h-f17h 的系统有效。
- unret,nosmt - 与 unret 类似,但将在 STIBP 不可用时禁用 SMT。这是没有 STIBP 的系统的替代选择。
- swiotlb=[ARM,IA-64,PPC,MIPS,X86]
有了这个内核参数,您可以配置 I/O TLB slabs 的行为。
格式:
{ <int> [,<int>] | force | noforce }
- <int> - I/O TLB slabs 数
- <int> - 逗号后的第二个整数。带有其自身锁的 swiotlb 区域的数量。必须为 2 的幂。
- force - 强制使用 bounce 缓冲区,即使它们没有被内核自动使用
- noforce - 永不使用 bounce 缓冲(用于调试)
新的 sysctl 参数
- page_lock_unfairness
- 这个值决定了页面锁可以从服务员处被窃取的次数。在锁被窃取了该文件中指定的次数(默认为 5)后,会应用 fair lock handoff 语义,并且只有在可以取锁的情况下才会唤醒服务员。
- rps_default_mask
- 新创建的网络设备上使用的默认 RPS CPU 掩码。空掩码表示默认禁用 RPS。