[] Symmetric multi-processing support
翻译:对称多处理支持
说明:SMP(对称多处理器)支持,如果你有多个CPU或者使用的是多核CPU就选上

-- Support x2apic
翻译:x2apic支持
说明:x2apic支持.具有这个特性的CPU可以使用32位的APIC ID(可以支持海量的CPU),并且可以使用MSR而不是mmio去访问 local APIC
(更加高效).可以通过"grep x2apic
/proc/cpuinfo"命令检查你的CPU是否支持这个特性.注意:有时候还需要在BIOS中也开启此特性才真正生效.[提示]在虚拟机中,还需要
VMM的支持(例如qemu-kvm).

[] Enable MPS table
翻译:启用MPS表
说明:如果是不支持acpi特性的古董级SMP系统就选上.但现今的64位系统早都已经支持acpi了,所以可以安全的关闭

[] x86 CPU resource control support
翻译:x86 CPU资源控制支持
说明:

[] Support for extended (non-PC) x86 platforms
翻译:支持扩展(非PC)x86平台
说明:支持非标准的PC平台: Numascale NumaChip, ScaleMP vSMP, SGI Ultraviolet. 绝大多数人都遇不见这些平台

[ ] Numascale NumaChip
翻译:
说明:支持非标准的PC平台: Numascale NumaChip, ScaleMP vSMP, SGI Ultraviolet. 绝大多数人都遇不见这些平台

[ ] ScaleMP vSMP
翻译:
说明:支持非标准的PC平台: Numascale NumaChip, ScaleMP vSMP, SGI Ultraviolet. 绝大多数人都遇不见这些平台

[] SGI Ultraviolet
翻译:
说明:支持非标准的PC平台: Numascale NumaChip, ScaleMP vSMP, SGI Ultraviolet. 绝大多数人都遇不见这些平台

[ ] Goldfish (Virtual Platform)
翻译:
说明:Goldfish是一种虚拟的ARM处理器,在Android的仿真环境中使用

[ ] Intel MID platform support
翻译:Intel MID平台支持
说明:

[] Intel Low Power Subsystem Support
翻译:英特尔低功耗子系统支持
说明:为了支持Intel低功耗子系统,就启用这个特性

[] AMD ACPI2Platform devices support
翻译:
说明:为AMD Carrizo以及后继架构的I2C,UART,GPIO提供支持.

-- Intel SoC IOSF Sideband support for SoC platforms
翻译:针对SoC平台的Intel SoC IOSF边带支持
说明:为主打低功耗的Intel SoC平台CPU开启"sideband"寄存器访问支持.这些CPU包括:BayTrail,Braswell,Quark

[ ] Enable IOSF sideband access through debugfs
翻译:通过调试启用IOSF边带访问
说明:待确定作用

[] Single-depth WCHAN output
翻译:单深度WCHAN输出
说明:使用简化的 /proc//wchan 值,禁用此选项会使用更加精确的wchan值(可以在"ps -l"结果的WCHAN域看到),但会轻微增加调度器消耗.

[] Linux guest support --->
翻译:Linux来宾支持
说明:

Processor family (Generic-x86-64) --->
翻译:处理器系列(通用-x86-64)
说明: 当前有的选项包括Pentium4、Athlon64、Core2和Atom,根据你的CPU进行选择。 然后你还可以顺便把和你系统无关的东西关掉,例如去掉针对AMD CPU的优化,去掉Server系统可能没有的无线网卡等硬件。这么做,可以缩小内核的尺寸。

[] Old AMD GART IOMMU support
翻译:旧AMD GART IOMMU支持
说明:AMD平台相关

[] Enable Maximum number of SMP Processors and NUMA Nodes
翻译:启用SMP处理器和NUMA节点的最大数量
说明:让内核支持x86_64平台所能支持的最大SMP处理器数量和最大NUMA节点数量.主要用于调试目的

[] Cluster scheduler support
翻译:群集调度程序支持
说明:

[] Multi-core scheduler support
翻译:多核心调度器支持
说明:针对多核CPU进行调度策略优化

[] CPU core priorities scheduler support
翻译:CPU核心优先级调度器支持
说明:改进的多核调度支持,稍微耗资源,对核心较少的CPU用处不大

[] Reroute for broken boot IRQs
翻译:为损坏的启动IRQ重新路由
说明:这是一个对某些芯片组bug(在某些情况下会发送多余的"boot IRQ")的修复功能.开启此选项之后,仅对有此bug的芯片组生效.要检查哪些芯片组有此bug可以查看"drivers/pci/quirks.c"文件中的"quirk_reroute_to_boot_interrupts_intel"函数

[] Machine Check / overheating reporting
翻译:机器检查/过热报告
说明:MCE(Machine Check Exception)支持.让CPU检测到硬件故障(过热/数据错误)时通知内核,以便内核采取相应的措施(如显示一条提示信息或关机等).更多信息可以"man mcelog"看看.可以通过"grep mce /proc/cpuinfo"检查CPU是否支持此特性,若支持建议选中,否则请关闭.当然,如果你对自己的硬件质量很放心,又是桌面系统的话,不选也无所谓.

[] Support for deprecated /dev/mcelog character device
翻译:支持弃用的/dev/mcelog字符设备
说明:待确定作用

[] Intel MCE features
翻译:英特尔MCE功能
说明:这是一种额外的对像热度监控的Intel MCE特性的支持。机器检测异常(MCE)是一种当处理器发现硬件问题时的错误输出。MCE通常会导致内核严重错误(kernel panic)(相当于Windows中的"蓝屏")

[] AMD MCE features
翻译:AMDMCE功能
说明:这是一种额外的对像热度监控的Intel MCE特性的支持。机器检测异常(MCE)是一种当处理器发现硬件问题时的错误输出。MCE通常会导致内核严重错误(kernel panic)(相当于Windows中的"蓝屏")

Machine check injector support
翻译:机器检查喷油器支架
说明:让CPU检测到系统故障时通知内核,以便内核采取相应的措施

  Performance monitoring  --->

翻译:性能监控
说明:待确定作用

[] IOPERM and IOPL Emulation
翻译:IOPERM和IOPL仿真
说明:对于旧程序提供IO调度支持

[ ] Late microcode loading (DANGEROUS)
翻译:微代码加载延迟(危险)
说明:待确定作用

< > /dev/cpu/*/msr - Model-specific register support
翻译:/dev/cpu/*/msr-特定于型号的寄存器支持
说明:是否打开Pentium CPU特殊功能寄存器的功能?这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器的作用也依赖与不同的CPU类型而有所不同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。

< > /dev/cpu/*/cpuid - CPU information support
翻译:/dev/cpu/*/cpuid-cpu信息支持
说明:是否打开记录Petium CPU相关信息功能?这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。一般不用选

[] Enable 5-level page tables support
翻译:开启Linux的5级页表支持
说明:未来发展趋势,建议直接读源码,后续会分析源码,可参考:https://zhuanlan.zhihu.com/p/641479824?utm_id=0

[ ] Enable statistic for Change Page Attribute
翻译:启用更改页属性的统计信息
说明:待确定作用

[] AMD Secure Memory Encryption (SME) support
翻译:AMD安全内存加密(SME)支持
说明:待确定作用

[ ] Activate AMD Secure Memory Encryption (SME) by default
翻译:默认情况下激活AMD安全内存加密(SME)
说明:待确定作用

[] NUMA Memory Allocation and Scheduler Support
翻译:NUMA内存分配和调度程序支持
说明:开启 NUMA(Non Uniform Memory Access) 支持.虽然说集成了内存控制器的CPU都属于NUMA架构.但事实上,对于大多数只有一颗物理CPU的个人电脑而言,即使支持NUMA架构,也没必要开启此特性.可以参考SMP/NUMA/MPP体系结构对比.此外,对于不支持"虚拟NUMA",或"虚拟NUMA"被禁用的虚拟机(即使所在的物理机是NUMA系统),也应该关闭此项

[] Old style AMD Opteron NUMA detection
翻译:老式AMD Opteron NUMA检测
说明:AMD使用一种旧式的方法读取NUMA配置信息(新式方法是CONFIG_X86_64_ACPI_NUMA),所以如果你使用的是AMD多核CPU,建
议开启.不过,即使开启此选项,内核也会优先尝试CONFIG_X86_64_ACPI_NUMA方法,仅在失败后才会使用此方法,所以即使你不能确定
CPU的类型也可以安全的选中此

[] ACPI NUMA detection
翻译:ACPI NUMA检测
说明:使用基于 ACPI SRAT(System Resource Affinity Table) 技术的NUMA节点探测方法.这也是检测NUMA节点信息的首选方法,建议选中

[ ] NUMA emulation
翻译:NUMA仿真
说明:即非一致性内存访问,是一种关于多个CPU如何访问内存的架构模型,参考:https://zhuanlan.zhihu.com/p/643610982

[] Enable sysfs memory/probe interface
翻译:启用sysfs内存/探测接口
说明:sysfs文件系统,它的作用是将设备和驱动程序的信息导出到用户空间,方便了用户读取设备信息,同时支持修改和调整

Support non-standard NVDIMMs and ADR protected memory
翻译:支持非标准NVDIMM和ADR保护的内存
说明:支持 Intel Sandy Bridge-EP 处理器使用的不符合NVDIMM规范的非易失内存(以电容做后备电力且掉电后不会丢失数据的内存).仅有某些高端服务器才会使用这种外带电容供电的内存

[] Check for low memory corruption
翻译:检查内存是否低损坏
说明:低位内存脏数据检查,即使开启此选项,默认也不会开启此功能(需要明确使用"memory_corruption_check=1"内核引导选项).这些脏
数据通常被认为是有bug的BIOS引起的,默认每60秒(可以通过memory_corruption_check_period内核参数进行调整)扫
描一次0-64k(可以通过memory_corruption_check_size内核参数进行调整)之间的区域.这种检查所占用的开销非常小,基本
可以忽略不计.如果始终检查到错误,则可以通过"memmap="内核引导参数来避免使用这段内存.一般没必要选中,如果你对BIOS不放心,带着它试运
行一段时间,确认没问题之后再去

[ ] Set the default setting of memory_corruption_check
翻译:设置memory_corrupon_check的默认设置
说明:设置memory_corruption_check的默认值,选中表示默认开启(相当于使用"memory_corruption_check=1"内核引导选项),不选中表示默认关闭

-- MTRR (Memory Type Range Register) support
翻译:MTRR(内存类型范围寄存器)支持
说明:MTRR(Memory type range registers)是CPU内的一组MSR(Model-specific
registers),其作用是告诉CPU以哪种模式(write-back/uncachable/...)存取各内存区段效率最高.这对于AGP
/PCI显卡意义重大,因为write-combining技术可以将若干个总线写传输捆绑成一次较大的写传输操作,可以将图像写操作的性能提高2.5倍
或者更多.这段代码有着通用的接口,其他CPU的寄存器同样能够使用该功能.简而言之,开启此选项是个明智的选择

[] MTRR cleanup support
翻译:MTRR清理支持
说明:MTRR cleanup的功能是将MTRR中的内存布局由连续布局转化为离散布局,这样X驱动就可以在其中添加writeback项(也就是一个内存段),算是一种优化措施.建议开启.可以使用"mtrr_chunk_size"来限制每段内存的最大尺寸

(0) MTRR cleanup enable value (0-1)
翻译:
说明:"1"表示默认开启CONFIG_MTRR_SANITIZER特性,相当于使用"enable_mtrr_cleanup","0"表示默认关闭
CONFIG_MTRR_SANITIZER特性,相当于使用"disable_mtrr_cleanup".建议图形界面用户设为"1".仅在开启后导
致无法正常启动或者显卡驱动不能正常工作的情况下才需要关闭

(1) MTRR cleanup spare reg num (0-7)
翻译:
说明:这里设定的值等价于使用内核引导参数"mtrr_spare_reg_nr=N"中的"N".也就是告诉内核有多少个内存段(reg)可以被清理或改写(参
见"/proc/mtrr"文件).在多数情况下默认值是"1",其含义是最多允许使用1个空闲的"reg".一般保持其默认值即可.修改此项的值通常是
为了解决某些MTRR故障.

[] Indirect Branch Tracking
翻译:间接分支跟踪
说明:对应用程序使用 “CPU jump“ 的函数表(该函数表包含跨程序的内存地址)的能力进行限制和添加其他保护,据悉,幽灵、熔断漏洞是 Google Project Zero 团队此前发现的三个安全漏洞变体的统称,该漏洞可利用分支预测执行 (speculative execution)特性中一个硬件缺陷使其按照攻击者规划的方向进行预测执行从获取某些机密信息。而最近新发现的 Spoiler 漏洞也正是基于此。此类漏洞仅仅凭借软件层面的修复是完全不够的,但硬件层面的修复往往伴随着性能损失,故此 CET 技术或无形之中提高了英特尔处理器在未来的性能

[] Memory Protection Keys
翻译:内存保护密钥
说明:Intel MPK 是一个有效的提供数据权限隔离的手段,并且性能十分地高效,切换权限仅需要 20 个左右的 CPU 指令周期。可是挑战在于:1)MPK 只能针对用户态的页,该如何用在特权模式下做同级隔离;2)当应用程序调用内核函数时,权限切换该如何设计;3)MPK 不能够控制内存页的可执行权限,该如何防止 ROP[39]等类似的代码复用攻击

  TSX enable mode (off)  --->

翻译:TSX启用模式(关闭)
说明:这也是一项牺牲内核安全性换取性能的实现。英特尔事务扩展技术(TSX)是intel为旗下的CPU开发的一项优化指令集,但是存在僵尸负载漏洞(ZombieLoad)。

[] Software Guard eXtensions (SGX)
翻译:软件保护扩展(SGX)
说明:Intel Software Guard Extensions(Intel SGX)为云计算和企业环境提供了基于硬件的数据安全控制。它通过硬件级别的内存加密,将特定的应用程序代码和数据隔离在内存中。

该功能的目标是像一个倒置的沙盒,不是保护系统免受恶意代码的影响,而是保护应用程序免受被入侵的内核、虚拟机监视器或其他应用程序的影响。

Intel SGX的基本能力是通过为程序代码、数据和关键知识产权提供更高级别的隔离和认证,从操作系统、应用程序和硬件平台上减少软件受攻击的风险。Intel SGX已被用于增强多个用例和应用程序的安全性

[ ] X86 userspace shadow stack
翻译:X86用户空间影子堆栈
说明:待确定作用

[] EFI runtime service support
翻译:EFI运行时服务支持
说明:EFI/UEFI支持.如果你打算在UEFI/EFI平台上安装Linux(2010年之后的机器基本都已经是UEFI规格了),那么就必须开启此项(开启后也依然可以在传统的BIOS机器上启动).UEFI启动流程与传统的BIOS相差很大.虽然Linux受到了所谓"安全启动"问题的阻挠(已经解决),但是UEFI依然将迅速一统江湖.[提示]在UEFI平台上安装Linux的关键之一是首先要用一个支持UEFI启动的LiveCD以UEFI模式启动机器

[] EFI stub support
翻译:EFI存根支持
说明:EFI stub支持.如果开启此项,就可以不通过GRUB2之类的引导程序来加载内核,而直接由EFI固件进行加载,这样就可以不必安装引导程序了.不过这是一个看上去
很美的特性,由于EFI固件灵活性比GRUB2差许多,所以缺点有三:(1)不能在传统的BIOS机器上启动.(2)给内核传递引导参数很麻烦(需要使
用"efibootmgr
-u").(3)不能使用intrd[待修正,可使用"initrd="].不过,针对后两点的解决办法是:使用CONFIG_CMDLINE和
CONFIG_INITRAMFS_SOURCE.更多细节可参考"Documentation/x86/efi-stub.txt"文档

[] EFI handover protocol (DEPRECATED)
翻译:EFI切换协议(已弃用)
说明:

[] EFI mixed-mode support
翻译:EFI混合模式支持
说明:允许在32位固件上启动64位内核.选"N".

[ ] Enable EFI fake memory map
翻译:启用EFI伪内存映射
说明:选"Y"等价于使用"efi_fake_mem"内核引导参数,仅供调试使用

  Timer frequency (300 HZ)  --->

翻译:定时器频率(300赫兹)
说明:Linux 内核中有大量的函数需要时间管理,比如周期性的调度程序、延时程序等。硬件定时器提供时钟源,时钟源的频率可以设置, 设置好以后就周期性的产生定时中断,系统使用定时中断来计时

(0x1000000) Physical address where the kernel is loaded
翻译:加载内核的物理地址
说明:加载内核的物理地址.如果内核不是可重定位的(CONFIG_RELOCATABLE=n),那么bzImage会将自己解压到该物理地址并从此地址开始运
行,否则,bzImage将忽略此处设置的值,而从引导装载程序将其装入的物理地址开始运行.仅在你确实知道自己是在干什么的情况下才可以改变该值,否则
请保持默认

-- Build a relocatable kernel
翻译:构建可重定位内核
说明:使内核可以在浮动的物理内存位置加载,主要用于调试目的.仅在你确实知道为什么需要的时候再开启,否则请关闭

[] Randomize the address of the kernel image (KASLR)
翻译:随机化内核映像的地址(KASLR)
说明:KASLR技术允许kernel image加载到VMALLOC区域的任何位置。当KASLR关闭的时候,kernel image都会映射到一个固定的链接地址。对于黑客来说是透明的,因此安全性得不到保证。KASLR技术可以让kernel image映射的地址相对于链接地址有个偏移。偏移地址可以通过dts设置。如果bootloader支持每次开机随机生成偏移数值,那么可以做到每次开机kernel image映射的虚拟地址都不一样。因此,对于开启KASLR的kernel来说,不同的产品的kernel image映射的地址几乎都不一样。因此在安全性上有一定的提升

(0x1000000) Alignment value to which kernel should be aligned
翻译:内核应该与之对齐的对齐值
说明: 内核编译、运行时的物理地址匹配,不要更改该值除非你知道你在干嘛

[] Randomize the kernel memory sections
翻译:随机化内核内存部分
说明:堆栈随机化是一项安全增强,它允许对系统调用发生时,内核使用的堆栈添加一个随机偏移。这给基于stack的攻击增加了难度,因为stack攻击通常要求stack有个固定的layout。现在每次系统调用,stack的layout都变化的话,攻击就无规律可寻了

[ ] Linear Address Masking support
翻译:线性地址屏蔽支持
说明: 线性地址掩码(Linear Address Masking,LAM ) 是一种允许软件使用 64 位线性地址中未翻译的地址位,来存储元数据的 CPU 硬件特征。现各 CPU 厂商以不同的形式实现了这一技术,其中 Intel 将其命名为 LAM,AMD 将其命名为高位地址忽略(Upper Address Ignore,UAI),Arm 称之为高字节忽略 ( Top Byte Ignore,TBI )

[ ] Disable the 32-bit vDSO (needed for glibc 2.3.3)
翻译:禁用32位vDSO
说明:vDSO机制(virtual dynamic shared object,虚拟动态共享对象)是kernel提供的一个优化,用来减少某些频繁调用的系统调用的时间开销。vDSO是在kernel提供的内存空间里面的一小块区域,通常都会被map到每个user-space进程的地址空间里去。这块区域里面包含了系统调用的实现,在某些情况下可以在user-space上下文就执行这些系统调用的工作。这样就能让调用者避免真的走完整的系统调用流程,从而能避免进出kernel产生上下文切换的开销。跟timekeeping有关的系统调用例如gettimeofday()都由vDSO实现了,因为这类调用需要在user space快速完成,并且调用的也特别频繁

  vsyscall table for legacy applications (Emulate execution only)  --->

翻译:用于遗留应用程序的vsyscall表
说明:设置内核引导参数"vsyscall=[native|emulate|none]"的值.对于使用Glibc-2.14以上版本的系统来说,如果不需要使用特别老旧的静态二进制程序,应该将此项设为"None"以提升性能与安全性

[ ] Built-in kernel command line
翻译:内置内核命令行
说明:将内核引导参数直接编进来.在无法向内核传递引导参数的情况下(比如在嵌入式系统上,或者想使用 EFI stub kernel),这就是唯一的救命稻草了.如果你使用grub之类的引导管理器,那么就可以不需要此特性

[ ] Enforce strict size checking for sigaltstack
翻译:对sigaltstack强制执行严格的大小检查
说明:待确定作用

[] Kernel Live Patching
翻译:内核实时修补程序
说明: