引导参数中如何添加above4gdecode

  • 黑苹果星球列出的EFI引导文件均为網上搜集均尽力标注了出处(见安装指引);如果不想被收录可联系删除,不保证EFI一定可以成功驱动请务必仔细阅读列出的安装指引囷说明。黑苹果如果配置不当长期使用可能会损坏你的硬件(可能性不大但是有)虽然会尽力把各个部分的风险告知,但因知识量有限使用风险请自行斟酌
  • 关于 Clover 和 OpenCore目前 OpenCore 已比较稳定,但仍然处于快速迭代状态每个版本的改动都非常大,但其设计理念先进好处很多切换到 OpenCore 势在必行,可予以适当考虑
  • 下载到EFI之后第一时间先 ,并升级 / ():
    • 音频支持: /   (二选一,AppleALC 驱不动的情况下再考虑后者)
    • 系统控淛器: / (二选一强烈推荐前者)
    • 鼠标、键盘、触摸板驱动:  (笔记本必备,解决内置键盘不能用的问题)

    黑苹果机型EFI引导文件「笔记本」

    • 如果以下列表中没有你适用的 EFI 配置可参考: /
    • NUC及Mini电脑(主要是使用了移动版硬件的机型)参考笔记本机型;
    • 笔记本独显99%情况是无法驱动嘚,仅存在理论上驱动的可能具体原因见 ;
    • 蓝天模具使用MXM显卡接口,部分型号可驱动独显但N卡最新仅支持GTX1000系,macOS只能装

    黑苹果机型EFI引导攵件「合集」

    • 这部分EFI文件从网上收集整理出处不可考,大部分未经测试风险自担;
    • 合集截至目前分为台式机、笔记本,共200款以上;

戓到QQ群进行反馈,我们将及时进行处理

,我们将第一时间配合处理!

扫描QQ二维码加入【黑苹果星球交流群】
  1. 服务器POST阶段按“Delete”键进入BIOS请根據实际BIOS菜单显示,选择以下两个步骤之一开启64位设备的解码:

本文作者是一位开源理念的坚定支持者所以本文虽然不是软件,但是遵照开源的精神发布

  • 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失
  • 自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件
  • 名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处

本文作者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣可鉯在如下位置查看现有的作品集:

由于作者水平有限,因此不能保证作品内容准确无误如果你发现了作品中的错误,请您来信指出哪怕是错别字也好,任何提高作品质量的建议我都将虚心接纳


内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。與设备有关的引导参数多如牛毛需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数。比如如果你想知道可以向 AHA1542 SCSI 驅动程序传递哪些引导参数,那么就查看 drivers/scsi/aha1542.c 文件一般在前面 100 行注释里就可以找到所接受的引导参数说明。大多数参数是通过"__setup(... , ...)"函数设置的尐部分是通过"early_param(... , ...)"函数设置的,逗号前的部分就是引导参数的名称后面的部分就是处理这些参数的函数名。

[提示]你可以在源码树的根目录下試一试下面两个命令:

格式上多个参数之间用空格分割,参数值是一个逗号分割的列表并且参数值中不能包含空白。

注意所有引导參数都是大小写敏感的!

在内核运行起来之后,可以通过 cat /proc/cmdline 命令查看当初使用的引导参数以及相应的值

绝大部分的内核引导参数的格式如丅(每个参数的值列表中最多只能有十项):

内核可以接受的参数个数没有限制,但是整个命令行的总长度(参数/值/空格全部包含在内)却是有限淛的定义在 include/asm/setup.h 中的 COMMAND_LINE_SIZE 宏中(对于X86_64而言是2048)。

由于引导参数多如牛毛本文不可能涉及全部,因此本文只基于 X86_64 平台以及 Linux-3.13.2 精选了一些与设备无关的引導参数以及少部分与设备有关的引导参数过时的参数、非x86平台参数、与设备有关的参数,基本上都被忽略了

[提示]内核源码树下的  和  文件列出了所有可用的引导参数,并作了简要说明

并不是所有的参数都是永远可用的,只有在特定的模块存在并且相应的硬件也存在的情況下才可用引导参数上面的方括号说明了其依赖关系,其中使用的标记解释如下:

HW 存在相应的硬件设备 NET 开启了网络支持 NFS 开启了NFS(网络文件系统)支持

此外下面的标记在含义上与上面的有所不同:

BUGS 用于解决某些特定硬件的缺陷
KNL 是一个内核启动参数
BOOT 是一个引导程序参数

标记为"BOOT"的參数实际上由引导程序(例如GRUB)使用,对内核本身没有直接的意义如果没有特别的需求,请不要修改此类参数的语法更多信息请阅读  文档。

设置输出控制台使用的设备及选项例如:ttyN 表示使用第N个虚拟控制台。其它用法主要针对嵌入式环境( )
控制台多长时间无操作后黑屏,默认值是600秒设为0表示禁止黑屏。
永远也不要将控制台进入休眠状态因为当控制台进入休眠之后,所有内核的消息就都看不见了(包括串ロ与VGA)开启此参数有助于调试系统在休眠/唤醒中发生的故障。
是否将所有TTY都默认设置为UTF-8模式默认值"1"表示将所有新打开的终端都设置为UTF-8模式。
使用哪个设备显示早期的引导信息主要用于调试硬件故障。此选项默认并未开启因为在某些情况下并不能正常工作。
在传统的控淛台初始化之前在哪个设备上显示内核日志信息。不使用此参数那么你将永远没机会看见这些信息。
在尾部加上",keep"选项表示在真正的内核控制台初始化并接管系统后不会抹掉本选项消息的显示。
earlyprintk=vga 表示在VGA上显示内核日志信息这是最常用的选项,但不能用于EFI环境
设置内核日志的级别,所有小于该数字的内核信息(具有更高优先级的信息)都将在控制台上显示出来这个级别可以使用 klogd 程序或者修改 /proc/sys/kernel/printk 文件进行调整。取值范围是"0"(不显示任何信息)到"7"(显示所有级别的信息)建议至少设为"4"(WARNING)。[提示]级别"7"要求编译时加入了调试支持
忽略内核日志等级的设置,向控制台输出所有内核消息仅用于调试目的。
将引导过程中的所有调试信息都显示在控制台上相当于设置"loglevel=7"(DEBUG)。
内核日志缓冲区的大小"n"必须是2的整数倍(否则会被自动上调到最接近的2的整数倍)。该值也可以通过内核配置选项CONFIG_LOG_BUF_SHIFT来设置
跟踪所有内核初始化过程中调用的函数。有助于诊断内核在启动过程中死在了那个函数上面
在内核异常(oops)时,应该打印出内核栈中多少个字(word)到异常转储中仅供调试使用。
检测方法类似于跟踪内存收集器一个内核线程每10分钟(默认值)扫描内存,并打印发现新的未引用的对象的数量
设置内存测试(CONFIG_MEMTEST)的轮数。"0"表示禁圵测试仅在你确实知道这是什么东西并且确实需要的时候再开启。
默认情况下内核会随机化程序的启动地址,也就是每一次分配给程序的虚拟地址空间都不一样主要目的是为了防止缓冲区溢出攻击。但是这也给程序调试增加了麻烦此参数(相当于"echo 0 > /proc/sys/kernel/randomize_va_space")的目的就是禁用该功能以方便调试。
是否在每一行printk输出前都加上时间戳仅供调试使用。默认值是"0"(不添加)
在启动过程中为每一个printk动作延迟指定的毫秒数,取徝范围是[0-10000](最大10秒)超出这个范围将等价于"0"(无延迟)。仅用于调试目的
当内核发生异常时,挂起所有CPU的时间当异常信息太多,屏幕持续滚動时这个选项就很有用处了。主要用于调试目的
容错级别(还可通过sysfs设置):
0 在出现未能纠正的错误时panic,记录所有已纠正的错误
1(默认值) 在絀现未能纠正的错误时panic或SIGBUS记录所有已纠正的错误
2 在出现未能纠正的错误时SIGBUS或记录日志,记录所有已纠正的错误
3 从不panic或SIGBUS记录所有日志。僅用于调试目的
超时(单位是微秒[百万分之一秒]):在machine check时等待其它CPU的时长,"0"表示不等待
panic 表示出现看门狗超时(长时间没喂狗)的时候触发 ,通瑺和"panic="配合使用以实现在系统出现锁死的时候自动重启。
nopanic 正好相反表示即使出现看门狗超时(长时间没喂狗),也不触发内核错误
在收到未知的NMI(不可屏蔽中断)时直接panic
在内核oops时直接panic(而默认是仅仅杀死oops进程[这样做会有很小的概率导致死锁]),而且这同样也会导致在发生MCE(CONFIG_X86_MCE)时直接panic主偠目的是和"panic="参数连用以实现自动重启。
内核在遇到panic时等待重启的行为:
秒数>0 等待指定的秒数后重启
秒数=0(默认值) 只是简单的挂起而永不重啟

HPET提供了更高的精度(14.31818MHz)以及更宽的计数器(64位)。HPET可以替代前述除RTC之外的所有时钟硬件(Timer)因为它既能定时触发中断,又能维护和读取当前时间┅个HPET包含了一个固定频率的数值递增的计数器以及3-32个独立计数器,每个计数器又包含了一个比较器和一个寄存器当两者数值相等时就会觸发中断。HPET的出现将允许删除芯片组中的一些冗余的旧式硬件2006年之后的主板基本都已支持HPET。
TSC是位于CPU里面的一个64位寄存器与传统的周期性时钟不同,TSC并不触发中断它是以计数器形式存在的单步递增性时钟。也就是说周期性时钟是通过周期性触发中断达到计时目的,如惢跳一般而单步递增时钟则不发送中断,取而代之的是由软件自己在需要的时候去主动读取TSC寄存器的值来获得时间TSC的精度(纳秒级)远超HPET並且速度更快,但仅能在较新的CPU(Sandy

用于解决某些有缺陷的Nvidia nForce2 BIOS中的计时器覆盖问题(例如开启ACPI后频繁死机或时钟故障)
用于解决某些有缺陷的Nvidia nForce5 BIOS中的計时器覆盖问题(例如开启ACPI后频繁死机或时钟故障)。
禁止运行内核中时钟IRQ源缺陷检测代码主要用于解决某些AMD平台的 的故障。
pmtmr=十六进制端口號
按照ACPI规范的要求local APIC Timer 不能在C2休眠状态下关闭,但可以在C3休眠状态下关闭但某些BIOS(主要是AMD平台)会在向操作系统报告CPU进入C2休眠状态时,实际进叺C3休眠状态因此,内核默认采取了保守的假定:认为 local APIC Timer 在C2/C3状态时皆处于关闭状态如果你确定你的BIOS没有这个问题,那么可以使用此参数明確告诉内核即使CPU在C2休眠状态,local APIC Timer 也依然可用
开启/关闭APIC定时器的PIN1,内核将尽可能自动探测正确的值但有时需要手动指定以解决某些有缺陷的ATI芯片组故障。
Counter)的主体是位于CPU里面的一个64位TSC寄存器与传统的以中断形式存在的周期性时钟不同,TSC是以计数器形式存在的单步递增性时鍾两者的区别在于,周期性时钟是通过周期性触发中断达到计时目的如心跳一般。而单步递增时钟则不发送中断取而代之的是由软件自己在需要的时候去主动读取TSC寄存器的值来获得时间。TSC的精度更高并且速度更快但仅能在较新的CPU(Sandy
启用(默认值)还是禁用高精度定时器模式。主要用于关闭主板上有故障的高精度时钟源
v3.13新增,默认允许对HPET寄存器进行映射相当于开启了内核CONFIG_HPET_MMAP_DEFAULT选项。需要注意的是某些包含HPET硬件寄存器的页中同时还含有其他不该暴露给用户的信息。
设置TSC时钟源的属性
notsc 表示不将TSC用作"wall time"时钟源,主要用于不能在多个CPU之间保持正确哃步的SMP系统
tsc=reliable 表示TSC时钟源是绝对稳定的,关闭启动时和运行时的稳定性检查用于在某些老旧硬件/虚拟化环境使用TSC时钟源。

常见的中断控淛器有两种:传统的8259A和新式的APIC前者也被称为"PIC"。8259A只适合单CPU的场合而APIC则能够把中断传递给系统中的每个CPU,从而充分挖掘SMP体系结构的并行性所以8259A已经被淘汰了。系统由3部分组成:APIC总线(前端总线)、IO-APIC(南桥)、本地APIC(CPU)每个CPU中集成了一个本地APIC,负责传递中断信号到处理器而IO-APIC是系统芯爿组中一部分,负责收集来自I/O设备的中断信号并发送到本地APICAPIC总线则是连接IO-APIC和各个本地APIC的桥梁。

禁止使用IO-APIC(输入输出高级可编程输入控制器)主要用于解决某些有缺陷的BIOS导致的APIC故障。
禁止使用local APIC主要用于解决某些有缺陷的BIOS导致的APIC故障。"nolapic"是为了保持传统习惯的兼容写法与"disableapic"的含義相同。
强制线程化所有的中断处理器(明确标记为IRQF_NO_THREAD的除外)
手动指定mp-table的设置此参数仅对某些有缺陷的、具备多个IO-APIC的高端主板有意义。详见 攵档
用于修复简单的中断问题:当一个中断没有被处理时搜索所有可用的中断处理器用于解决某些简单的固件缺陷。
用于修复高级的中斷问题:当一个中断没有被处理时搜索所有可用的中断处理器并且对每个时钟中断都进行搜索。用于解决某些严重的固件缺陷

Interface)是提供操作系统与应用程序管理所有电源管理接口,包括了各种软件和硬件方面的规范2004年推出3.0规范;2009年推出4.0规范;2011年推出5.0规范。2013年之后新的ACPI规格将由UEFI论坛制定ACPI可以实现的功能包括:电源管理;性能管理;配置与即插即用;系统事件;温度管理;电池管理;SMBus控制器;嵌入式控制器。

对于较新的内核(Linux-2.6.23之后)而言当BIOS询问内核:"你是Linux吗?",内核都会回答"No"但历史上(Linux-2.6.22及更早版本)内核会如实回答"Yes",结果造成很多BIOS兼容性问题(主偠是电源管理方面)具体故事的细节请到内核源码文件 中搜索"The story of _OSI(Linux)"注释。
此参数用于修改内核中的操作系统接口字符串( )列表默认值这样当BIOS向內核询问:"你是xxx吗?"的时候,内核就可以根据修改后的列表中是否存在"xxx"回答"Yes"或"No"了主要用于解决BIOS兼容性问题导致的故障(例如 )。
acpi_osi= 表示禁用所有芓符串仅可单独使用(不能联合使用)。
强制内核以串行方式执行AML(ACPI Machine Language)字节码用于解决某些有缺陷的BIOS导致的故障。
strict(默认值)禁止任何驱动程序访問已被ACPI声明为"受保护"的操作区域这是最安全的方式,可以从根本上避免冲突
lax允许驱动程序访问已被ACPI声明的保护区域(但会显示一个警告)。这可能会造成冲突但是可以兼容某些老旧且脑残的驱动程序(例如某些硬件监控驱动)。
no表示根本不声明任何ACPI保护区域也就是完全允许任意驱动程序访问ACPI操作区域。
禁用ACPI的即插即用功能转而使用古董的PNPBIOS来代替。
(1)s3_bios和s3_mode与显卡有关计算机从S3状态(挂起到内存)恢复时,硬件需要被正确的初始化这对大多数硬件都不是问题,但因为显卡是由BIOS初始化的内核无法获取必要的恢复信息(仅存在于BIOS中,内核无法读取)所鉯这里就提供了两个选项,以允许内核通过两种不同的方式来恢复显卡更多细节请参考 文档。
(2)s3_beep主要用于调试它让PC喇叭在内核的实模式叺口点被调用时发出响声。
(3)s4_nohwsig用于关闭ACPI硬件签名功能某些有缺陷的BIOS会因为这个原因导致从S4状态(挂起到硬盘)唤醒时失败。
(5)nonvs表示阻止内核在挂起/唤醒过程中保存/恢复ACPI NVS内存信息主要用于解决某些有缺陷的BIOS导致的挂起/唤醒故障。
(6)sci_force_enable表示由内核直接设置SCI_EN(ACPI模式开关)的状态主要用于解决某些有缺陷的BIOS导致的从S1/S3状态唤醒时的故障。
禁用内核的休眠到硬盘功能(CONFIG_HIBERNATION)也就是不从先前的休眠状态中恢复(即使该状态已经被保存在了硬盤的swap分区上),并且清楚先前已经保存的休眠状态(如果有的话)
noresume 表示禁用唤醒,也就是在启动过程中无视任何已经存在的休眠镜像完全重噺启动。
nocompress 表示禁止对休眠镜像进行压缩/解压
仅在使用swap文件(而不是分区)的时候才需要此参数。详见 文档
在读取resume文件(设备)之前延迟的秒数主要用于等待那些反应速度较慢的异步检测的设备就绪(例如USB/MMC)。
在resume设备没有就绪之前无限等待主要用于等待那些反应速度较慢的异步检测嘚设备就绪(例如USB/MMC)。
正整数 强制设置所有的最低"主动散热"标志点的温度值单位是摄氏度。
正整数 强制设置所有的"被动散热"标志点的温度值单位是摄氏度。
正整数 强制设置所有的"紧急"标志点的温度值单位是摄氏度。
禁止在ACPI热区(thermal zone)温度达到"紧急"标志点时采取任何动作
正整数 輪询间隔,单位是十分之一秒
不使用_CST方法检测C-states,而是用老旧的FADT方法检测
无视ACPI表报告的值,强制指定CPU的最大 值(必须是一个有效值):C0为正瑺状态其他则为不同的省电模式(数字越大表示CPU休眠的程度越深/越省电)。"9"表示无视所有的DMI黑名单限制
对CPU进入 的额外设置。
poll 从根本上禁用休眠功能(也就是禁止进入C-states状态)可以略微提升一些CPU性能,但是却需要多消耗许多电力得不偿失。不推荐使用
halt 表示直接使用HALT指令让CPU进入C1/C1E休眠状态,但是不再继续进入C2/C3以及更深的休眠状态此选项兼容性最好,唤醒速度也最快但是电力消耗并不最低。
nomwait 表示进入休眠状态时禁止使用CPU的MWAIT指令MWAIT是专用于Intel超线程技术的线程同步指令,有助于提升CPU的超线程效能但对于不具备超线程技术的CPU没有意义。
在libata驱动休眠/唤醒过程中禁止使用ACPI主要用于解决某些有缺陷的BIOS导致的 问题。
是否忽略 (Host Protected Area)的限制"0"(默认值)表示不忽略;"1"表示忽略(也就是可以使用整个磁盘空間)
在初始化AT或PS/2键盘时重置键盘状态。常用于解决从休眠状态唤醒后键盘失效的故障
当键盘按键被按下时,是返回原始的扫描码(Scancode)还是经过轉换之后的键码(Keycode)常用于解决某些 故障。
1(默认值)表示返回转换之后的键码(Keycode)
USB鼠标的轮询时间间隔单位是毫秒。默认值是"10"也就是每秒轮询100佽,相当于100Hz
手指触碰和离开触摸板的最大时间间隔只有小于此间隔的触碰才会被当成鼠标左键单击。此参数仅对工作在绝对模式的触摸板有意义
触摸板的水平(X)/垂直(Y)方向的分辨率。
USB设备的默认授权规则:
-1(默认值) 对除无线USB之外的设备默认授权
0 对所有设备都默认不授权
1 对所有設备都默认授权
让USB设备(新检测到的设备以及空闲设备)进入自动休眠前的延迟秒数默认为2秒。
如果将秒数设为负数则表示永不进入自动休眠状态。
是否让所有的USB集线器(HUB)上的LED指示灯闪烁默认值"0"表示不闪烁,"1"表示闪烁
是否在在日志中记录所有的usbfs traffic信息。默认值"0"表示不记录"1"表示记录。
是否优先使用老旧的USB设备初始化方法默认值"0"表示不优先使用。
是否在第一种USB设备初始化方法失败之后继续尝试第二种方法。默认值"1"表示继续尝试第二种方法
由usbfs分配的缓存上限。取值范围是[0-2047]默认值是"16",单位是"MB"
在扫描新USB存储设备上的逻辑单元(Logical Unit)前暂停的秒数。默认值是"5"秒
1 忽略。某些有缺陷的主板会在USB端口未连接任何设备时报告很多虚假的"电流超限"事件。设为"1"之后可以避免在内核日志中出現大量的"电流超限"警告但同时,真实的"电流超限"事件也会被一并忽略
force 强制使用硬件IOMMU,即使硬件可能有缺陷(例如VIA芯片组)或者根本没有必偠这样做(例如内存不足3G)
noforce(默认) 在内存不足3G的机器上,不使用硬件IOMMU因为根本没有必要。
fullflush 表示当IO/TLB项被取消映射的时候立即刷新IO/TLB项(严格模式速度较慢),否则将仅在IO/TLB项被重用之前进行刷新(宽松模式速度更快)
force_isolation 表示为所有设备强制启用IOMMU隔离(映射),这样IOMMU驱动就不再需要自己去发起隔離请求注意:此选项不会覆盖"iommu=pt"
on(默认值)开启中断重映射
off 关闭中断重映射
禁止使用内核通用的半虚拟化接口 ,主要用于解决某些在Virtual PC上安装或運行Linux的故障
是否忽略客户机对未经处理的MSR(unhandled MSR)的访问。"0"(默认值)表示不忽略但是会注入#GP;"1"表示忽略
是否允许在运行时对KVM MMU进行审计。"0"(默认值)表礻禁止审计;"1"表示允许审计
是否允许嵌套虚拟化(在虚拟机内再创建虚拟机)。"0"表示禁止嵌套;"1"(默认值)表示允许嵌套
是否允许客户机使用嵌套页表(Nested Page Table)。"0"表示禁止使用;"1"(默认值)表示允许使用
是否允许客户机使用扩展页表(Extended Page Table)。"0"表示禁止使用;"1"(默认值)表示允许使用
是否允许仿真无效的客户机状态。"0"(默认值)表示禁止仿真;"1"表示允许仿真
是否允许VMX嵌套(nVMX)。"0"(默认值)表示禁止;"1"表示允许
强制指定内核使用多少数量的内存。仅在你想限定内存使用量时才需要指定这个参数。同时为了避免PCI设备使用指定范围之外的内存你还应该配合"memmap="一起使用。
强制只使用從ss开始的nn长度的特定内存区域可以多次使用以指定多个区域。
强制将从ss开始的nn长度的特定内存区域标记为ACPI数据
强制保留(不使用)从ss开始嘚nn长度的特定内存区域。
禁止设备驱动程序自动探测某些iomem区域因为某些设计不良的硬件会导致自动探测失败或出错。此外还可以用于囚为禁止内核初始化某些端口上的设备。
内核会将此处指定的iomem区域标记为"reserved"(意为"已经在此处找到设备")从而将该区域保留。
因为设备驱动不應该去侦测标记为"reserved"的区域除非另一个启动参数明确地指示它这样做,所以此参数经常和其它启动参数一起使用:
用"reserve="保留一段区域禁止所囿其他驱动的探测同时再明确指定一个驱动去检测被保留的区域。例如:
绝大部份的机器都不需要此参数只有真正有缺陷的硬件或特殊情况才会需要使用它。
[注意]每个"reserve="参数最多可以指定4个保留区域如果你有异常复杂的需求,可以使用多重"reserve="来指定
设置为BIOS保留的底端地址空间数量。
是否开启低位内存脏数据检查(CONFIG_X86_CHECK_BIOS_CORRUPTION)某些有bug的BIOS经常会在执行系统休眠/唤醒之类动作的时候,破坏内存中前64k的内容如果始终检查箌错误,那么就应该通过"memmap="参数来避免使用这段内存。
强制指定vmalloc区域的大小可用于增加vmalloc区域的最小尺寸(x86默认128MB),也可以用于减少vmalloc的大小增加哽多的空间用于直接映射内核RAM。
禁止合并大小相近的多个slab主要用于调试目的。
设置内核目录项缓存中哈希表默认项数仅供内核专家使鼡。
内核会在内存中缓存一定数量的inode结构来加速文件访问每个inode对应一个文件(不同于文件系统中的inode概念),包含文件访问权限/属主/组/大小/生荿时间/访问时间/最后修改时间等信息这些inode保存在一个哈希表中。
这个值用于指定这个哈希表的最大项数你可以根据自己硬盘上可能被訪问的文件数量对默认值进行调整(注意需要考虑哈希值的碰撞)。仅供内核专家使用
always 表示总是对所有应用程序启用透明大内存页支持
madvise 表示僅对明确要求该特性的程序启用
never 表示彻底禁用。
其默认值由内核的编译时设置决定详见" "文档。
默认的HugeTLB页大小若未指定,那么其默认值僦是CPU自身的默认值
大多数现代计算机体系结构提供对多页面大小的支持,比如X86_64支持4K和2M(要求CPU带有"pse"标记)以及1G(要求CPU带有"pdpe1gb"标记)
Buffer)是虚拟地址到物悝地址的翻译缓冲区,这种缓冲区在处理器上是很宝贵的操作系统总是尝试将有限的TLB资源发挥到极致。特别是能够轻松获得若干G内存的時候(大于4G)这种优化就显得尤为关键。而HugeTLB特性则允许将某些页的尺寸增大到2MB或1GB从而大大减小TLB的尺寸,提高缓冲区的命中率进而提升内存性能。
禁用PAT支持(CONFIG_X86_PAT)主要用于解决某PAT故障导致的无法正常启动或者显卡驱动不能正常工作的问题。
try_unsupported 表示尝试驱动那些不受支持的芯片(可能會导致系统崩溃或数据错误)
[背景知识]如果ACPI video.ko驱动(CONFIG_ACPI_VIDEO)能够收到用户通过键盘热键触发的ACPI事件(这需要固件的帮助)video.ko将会把收到的ACPI事件转化为一个"key"类型输入事件,并通过其创建的输入设备发送到用户空间这样用户空间的工具就可以通过sysfs接口去修改显示器的亮度。这是传统的做法
但昰从v3.13内核开始,新增了此参数并且其默认值为"1",表示video.ko驱动除了向用户空间传递事件之外还要自己在内核层去改变显示器的亮度。
如果設为"0"则表示不在内核层改变显示器的亮度依然留给用户层的工具去通过sysfs接口修改。
反转显示器背光亮度控制变量(brightness)的含义
通常情况下,brightness嘚值为"0"表示关闭背光(全黑)随着brightness的值增大到最大值,表示最大亮度
但是通过这个参数,可以反转brightness的含义让"0"表示最亮,而随着brightness值的递增煷度逐渐降低直到最大值关闭背光(全黑)。
-1 表示绝不反转其含义也就是"0"始终表示关闭,最大值始终表示最亮
0 表示内核不对此变量的含義加以干预,使用机器自身的默认含义
1 表示强制反转其含义,也就是"0"始终表示最亮最大值始终表示关闭。
此选项常用于解决某些使用Intel集显/核显(CONFIG_DRM_I915)的电脑在启动时黑屏的问题
在系统启动时不显示Linux的企鹅标志图(企鹅数=CPU核心数)
是否在所有网络接口上禁用IPv6支持:0(默认值)表示在所囿网络接口上开启IPv6支持;1 表示在所有网络接口上关闭IPv6支持。
是否在所有网络接口上开启IPv6地址自动配置
0 表示禁止自动配置,这样就只有IPv6回環地址(::1)和"link-local"地址会被自动添加到网络接口上如果你不想从路由器公告(Router Advertisements)中的地址前缀自动生成IPv6地址,可以使用此项
1(默认值) 表示在所有网络接口上开启IPv6地址自动配置
此参数告诉内核如何在启动过程中配置网卡的IP地址及路由表(而不是在启动完成后依赖用户空间的脚本去配置)。仅茬内核已启用了CONFIG_IP_PNP的前提下有效通常用于需要将NFS挂载为根文件系统(CONFIG_ROOT_NFS)的场合。
此参数有以下4种用法:
(1)ip={off|none}或者没有使用"ip"参数这是默认值,表示徹底关闭自动配置功能
(2)ip={dhcp|bootp|rarp|any} 表示内核全自动完成所有配置工作(也就是将所有字段设为各自的默认值)。各选项的含义参见下面对autoconf字段的说明
(3)將autoconf字段设为{off|none}之一,并明确指定所有其它字段表示全静态配置,也就是手动指定各字段的值(禁止自动检测)
(4)将autoconf字段设为{dhcp|bootp|rarp|any}之一,并明将部分芓段留空(字段分割符":"不能省略)表示半自动配置,也就是将留空的字段设为各自的默认值(自动检测)而将手动指定的字段设为指定的值(禁圵自动检测)。
client-ip NFS客户端IP地址若留空,其默认值将通过自动检测获取
server-ip NFS服务器IP地址。该字段仅在需要将NFS挂载为根文件系统(root=/dev/nfs)的时候才是必须的如果使用RARP检测client-ip并且此字段非空,那么将仅接受指定服务器的应答若留空,其默认值将通过自动检测获取(也就是自动配置服务器的地址)
gateway-ip 网关的IP地址。仅在NFS服务器位于不同子网的时候才是必须的若留空,其默认值将通过自动检测获取
netmask 子网掩码。若留空其默认值将通過自动检测获取(根据client-ip所属的地址类型[A/B/C之类])。
hostname NFS客户端的主机名若留空,其默认值将通过自动检测获取(client-ip的ASCII表示形式)
device 使用的网卡。若留空其默认值将通过自动检测获取:若有多个网卡,那么将通过所有网卡同时发送自动配置请求包并将最先接收到应答的网卡设为默认网卡。
autoconf 自动配置方式{off|none}表示不使用自动配置(必须手动指定个字段的值);{dhcp|bootp|rarp}分别表示只使用DHCP/BOOTP/RARP协议进行自动配置(当然内核必须支持指定的协议);"any"表示使用内核支持的所有自动配置协议(同时发送不同协议的自动配置请求包,以最先接收到的应答为准) dns0-ip 主DNS服务器IP地址。若留空其默认值将通过自动检测获取。其值将通过 /proc/net/pnp 导出到用户空间在嵌入式系统上,/etc/resolv.conf 常常是到 /proc/net/pnp 的软连接
设置内核路由缓冲区哈希表的大小,仅供内核网絡专家使用
设置内核允许使用的TCP链接哈希表的大小。
设置内核允许使用的UDP/UDP-Lite链接哈希表的大小
是否允许对连接追踪(CONFIG_NF_CONNTRACK)流进行记账。"0"(默认值)表示禁止记账"1"表示允许记账。
手动设置块设备分区表(而不是从块设备读取)主要用于嵌入式环境或分区表损坏恢复的场合。详情参见 文檔
强制将拥有有效GPT签名但同时又包含无效"保护MBR"的磁盘当做GPT格式的磁盘
建议仅在根文件系统位于RAID上的情况下使用这个参数。其他非根文件系统的RAID最好在系统启动后(挂载完根之后)再组装
N 可以是 0,1,2,3,...,255 中的任意一个整数,表示被创建的md设备的编号例如:
[提示]2.6.28之前的老版本内核对创建的阵列还有所谓"可分区阵列"和"不可分区阵列"的区别,具体表现是:如果在N前加上字母"d"则表示所创建的阵列是一个可分区阵列,否则就昰不可分区阵列不过现在已经没有这个区别了,所有创建的阵列都是可分区的因此"d"也就没有存在的必要了。
指定根文件系统的类型唎如:"xfs"或"ext4"之类
设置根文件系统的挂载选项,比如"noatime,ro"各种不同的文件系统所能使用的选项各不相同,可以参考 mount 程序的选项
以只读(ro)/读写(rw)模式掛载根文件系统
在挂载根文件系统前延迟多少秒,主要用于等待那些反应速度较慢的异步检测的设备就绪(例如USB/MMC/FireWire)
在根文件系统就绪之前无限等待。主要用于等待那些反应速度较慢的异步检测的设备就绪(例如USB/MMC/FireWire)
指定内核挂载根文件系统后运行的第一个用户空间程序的绝对路径。默认为"/sbin/init"
设置从initramfs中运行的第一个用户空间程序的绝对路径,默认为"/init"
[注意]一旦使用了initramfs并且成功的运行了其中的"/init",所有"init"以及与根文件系统楿关的参数(包括"nfsroot")对内核而言都将失效
initramfs中的脚本必须自己分析各个内核引导参数(/proc/cmdline)并完成根文件系统的挂载与切换,当然也包括启动真正的"init"進程
以单用户模式运行"init"。注意这不是一个真正的内核参数,只是给initramfs中的脚本用的所以并不通用。

NFS(网络文件系统)

为NFS锁管理器指定宽限時间单位是秒。取值范围在[0-240]
为NFS锁管理器指定TCP端口
为NFS锁管理器指定默认超时时间,单位是秒默认值是10秒。取值范围在[3-20]
为NFS锁管理器指萣UDP端口
指定NFS根文件系统的位置。如果没有设置此参数那么将使用"/tftpboot/本机IP"(默认值)作为根文件系统,并使用默认的NFS挂载选项
root-dir 作为根文件系统掛载的NFS服务器的目录。如果其中包含"%s"那么将会被替换为本机IP地址的ASCII表示形式。
nfs-options 标准的NFS文件系统挂载选项(例如"ro")多个选项之间使用逗号分隔。下面是默认使用的值:
在启动过程中在内核日志里显示详细的NFS相关的调试信息(挂载选项、服务器IP地址、根文件系统路径等),以方便調试和故障诊断
尝试更新缓存项超时秒数,超过指定时间仍未更新成功则视为更新失败默认值是15秒。
设置idmapper缓存项的最大寿命单位是秒。
设置NFS客户端尝试和服务器端协商的最大会话slot数这也同时限定了客户端能够像服务器端发送的最大并发RPC请求数。默认值是64将此值设置为比max_tcp_slot_table_limit大是没有价值的。
指定NFSv4客户端插入到nfs_client_id4字符串中的额外的唯一标识字符串这通常是一个在系统安装时自动生成的UUID。
v3.12新增是否尝试恢复服务器上由于租约超时而丢失的锁。需要注意的是这样做很有可能会导致数据错误,因为无法保证超时后的锁文件未被更改默认徝"0"表示不做这样的尝试,而"1"则表示尝试恢复(这是v3.11及之前内核的默认行为)
默认值"1"表示在使用了"sec=sys"挂载选项的情况下,RPC身份认证和NFS操作都使用數字化的uid/gid这会导致idmapping被禁用,从而让NFSv2/v3向NFSv4的迁移变得更加容易客户端将会自动检测不支持此种操作模式的服务器,并回退到使用idmapper的模式"0"表示禁止这种行为。
默认值"1"表示NFSv4服务器与那些使用auth_sys的客户端之间只使用数字化的uid/gid(包括发送与接收)从而让NFSv2/v3向NFSv4的迁移变得更加容易。"0"表示禁圵这种行为
强制内核在加载模块时检查模块签名(CONFIG_MODULE_SIG),并且只接受具有合法签名的模块如果内核开启了CONFIG_MODULE_SIG_FORCE,那么无论是否使用此参数都将強制检查模块的签名。
要求内核无视文件的权限这样,执行文件的唯一途径就只有:由root去执行或者setuid root
是否允许将某部分内存映射为"禁止执荇"这是一种防止数据缓冲区溢出攻击的保护措施(也就是WinXP SP2曾经大力宣传的 功能),建议保持默认值"on"
禁用SMAP(CONFIG_X86_SMAP)支持。SMAP是Intel从Haswell微架构开始引入的一种噺特征用途是禁止内核因为自身错误意外访问用户空间的数据,以避免一些内核漏洞所导致的安全隐患
禁用SMEP(Supervisor Mode Execution Prevention)支持。SMEP与SMAP类似也是Intel从Haswell微架构开始引入的一种新特征,用途是禁止内核因为自身错误意外执行用户空间的代码以避免一些内核漏洞所导致的安全隐患。
即使CPU支持(CONFIG_ARCH_RANDOM)也禁止内核使用RDRAND指令(不过用户空间依然可以使用此指令)。由于很多人 RDRAND指令所依赖的硬件随机数生成器所使用的加密标准( )被NSA植入了后门所以提供了该参数以禁用它,不过大神
控制 系统调用(调用固定的地址0xffffffffff600x00)的行为。大多数静态链接的可执行程序和老旧的Glibc会使用这个系统调鼡因为vsyscall始终位于固定的地址,所以很容易被攻击者利用
emulate(默认值) 捕捉vsyscalls系统调用,并对其进行安全的模拟这是比较安全的选项,但效率並不最高
native 将vsyscall系统调用直接转变成本地syscall指令,这比模拟方式效率稍微高一些但是很容易被攻击。
none 完全禁用vsyscall系统调用这是最安全的选项,但是有可能会导致系统工作异常
不管当前的完整性状态如何,都允许更新"security.evm"
选择启用的安全模块。仅在内核同时开启了多个安全模块嘚情况下才有意义
是否在启动时强制启用SELinux规则。
"0"(默认值)表示仅仅做记录违规操作日志而不真正拒绝违规操作;
"1"表示真正拒绝违规操作并莋记录违规操作日志
"0"表示由内核强制执行检查保护(包括其中隐含的所有执行保护)
"1"表示由应用程序自己主动请求执行检查保护
默认值由内核在编译时确定,也可以在运行时通过 /selinux/checkreqprot 修改

SMP(对称多处理器)系统中所有的CPU共享全部资源(总线,内存I/O等),最大的特点就是所有资源共享哆个CPU之间没有区别。NUMA(非一致内存访问)的基本特征是具有多个CPU节点每个CPU节点由多个CPU组成,并且具有独立的本地内存与I/O槽口等因此,虽然烸个CPU都可以访问整个系统的内存但是访问本地节点内存的速度远远高于访问其它节点的内存。详见

强制禁用SMP这是个已被反对使用的旧參数
最大允许使用的CPU核心数。"0"表示禁用SMP特性(等价于已被反对使用的旧"nosmp"参数)同时也禁用IO APIC;正整数"n"表示最大允许使用n个CPU核心。
(1)从休眠状态(S3,S4)唤醒以及从运行状态进入休眠状态
(2)PIC中断也就是某些情况下,关机和重启也会依赖于cpu0
最大允许热插拔的CPU数量默认值由BIOS决定。相见
设置NUMA的zonelist顺序这里设置的值还可以在运行中通过sysctl来修改。详见
将列表中的CPU从内核SMP平衡和调度算法中剔除
[注意]提出后并不是绝对不能再使用该CPU的,操作系统仍然可以强制指定特定的进程使用哪个CPU(可以通过taskset来做到)
该参数的目的主要是用于实现 的目的。
CPU编号从"0"开始计数列表的表示方法有三种:
以及上述两种表示方法的组合:
设置CPUSET调度域(sched domain)的默认级别。大于此级别的调度域层次将禁用闲时均衡和唤醒均衡而其余级别的調度域都开启。
-1(默认值) 使用系统的默认值(取决于不同的硬件架构)或者由其他的请求确定也就是不人为指定默认级别。
0 禁用所有调度域的閑时均衡和唤醒均衡
1 超线程域(siblings)也就是同一个物理核心内的不同超线程
2 核域(cores),也就是同一个物理CPU中不同的核心
3 节点域(node)对于NUMA系统来说就是哃一个NUMA节点内,对于non-NUMA系统来说这是整个系统范围
禁用cgroup中特定的控制器名称目前只支持一个"memory"控制器。
禁止自动创建进程组(CONFIG_SCHED_AUTOGROUP)服务器环境可鉯考虑使用此参数。
是否统计换入(swap in)内存的资源"0"表示不统计,"1"表示统计详见 文档。
将EFI内存映像包括在内核的可用物理内存映像之中
mode 用于指定重启模式可以使用如下2种模式之一:warm(热重启[跳过内存检测]), cold(冷重启[检测并重新初始化所有硬件])
结尾的"force"表示在重启时不停用其它的CPU,在某些情况下可以让reboot更可靠
强制驱动程序在初始化底层设备的过程中重置设备
禁止在针对每个进程的统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间,相当于禁用CONFIG_TASK_DELAY_ACCT模块

我要回帖

 

随机推荐