Kernel
本文档会把 config 的项目分开来,内容繁琐,请仔细阅读相关配置项。配置
config.plist
强制要求在 Windows 环境下使用 Propertree 来编辑,其他任何软件都不建议使用。
这里是内核相关选项。
Add
这里是填写 kexts 的相关资料,需要注意的是 OC 的 kexts 填写必须注意顺序,比如 applealc.kext
的依赖是 lilu.kext
那么 lilu.kext
必须填在 applealc.kext
之前,很多 kexts 都依赖 lilu.kext
把 lilu.kext
放在第一个以保证不会出错。
默认配置很多需要的补丁已经配置好了,只需要把 Enabled 选项设置为 True 开启配置,不用的删除
Item 0
BundlePath String Lilu.kext //Kexts文件
Comment String
Enabled Boolean True //打开
ExecutablePath String Contents/MacOS/Lilu
MaxKernel String
MinKernel String
PlistPath String Contents/Info.plist
初始配置阶段可以只添加必要的 kexts ,例如:lilu.kext(必备)、Virtualsmc.kext(电源)、WhateverGreen.kext(显卡)、Usbinjectall.kext(USB)。
Block
初始配置略过
禁用 kexts 。
Emulate
初始配置略过
此选项设置 Ivy Bridge 和一些不受支持的 CPU 加载电源管理的。
Force
初始配置略过
特殊情况下设置强制加载某些 Kexts 开启某些功能。
Patch
初始配置略过
配置内核补丁。
Quirks
这里设置内核相关的选项, 比较重要。
AppleCpuPmCfgLock: False
- 四代之前的 CPU,如果未解锁 CFG(MSROxE2) 请选择 True
AppleXcpmCfgLock: False
- 四代之后的 CPU,如果未解锁 CFG(MSROxE2) 请选择 True
AppleXcpmExtraMsrs: False
- 在没有原生电源管理的 CPU 上启用,一般(Haswell-E、Broadwell-E、Skylake-X)这三种 CPU 需要设置 True 除此之外的 CPU 设置 False。
AppleXcpmForceBoost: False
- 开启此选项电脑的 CPU 频率锁定为最高。
CustomPciSerialDevice: False
- 在一个定制的 PCI 串行设备上修改 PMIO 寄存器的基本地址。
CustomSMBIOSGuid: False
- 戴尔笔记本专用项。
DisableIoMapper: False
- 开启此选项禁用 VT-d ,一些主板的 BIOS 没有此选项却需要禁用 vt-d 可以开启此选项禁用。
DisableIoMapperMapping: False
- 在 VT-d 中禁止映射 PCI 桥接设备内存。
注释
无法修复 macOS 13.3 以前的系统。 当在本机的
DMAR
表中包含一个或多个保留内存区域切启用核显 iGPU 并且安装了超过 16GB 内存的系统上启用 AppleVTD 时,此选项解决了与 Wi-Fi、以太网、Thunderbolt 设备的兼容性问题。
- 在 VT-d 中禁止映射 PCI 桥接设备内存。
DisableLinkeditJettison: True
- 提升 lilu 等插件在 macOS Big Sur 系统的表现。用来替代
keepsyms=1
。
- 提升 lilu 等插件在 macOS Big Sur 系统的表现。用来替代
DisableRtcChecksum: False
- 越过两条 RTC 检查(0x58、0x59),更多使用 RTCMemoryFixup.kext 防止检查 RTC。
ExtendBTFeatureFlags: False
- 将
FeatureFlags
设置为0x0F
用来代替BT4LEContinuityFixup.kext
以实现蓝牙的全部功能(包括连续互通功能),较新的功能是否可以正常工作以及稳定性都无法保证。
- 将
ExternalDiskIcons: False
- 修复 macOS 把内部硬盘识别为外置硬盘。
ForceAquantiaEthernet: False
- 启用基于 Aquantia AQtion 的 10GbE 网卡支持。
ForceSecureBootScheme: False
- 只在 MacOS 安装在虚拟机并开启 SecurebootModel 时考虑开启。
IncreasePciBarSize: False
- 解决卡 PCI configuration,一般卡 pci configuration 都是因为自己错误的设置和硬件问题。
LapicKernelPanic: False
- 适用于 HP 笔记本的内核奔溃选项。
LegacyCommpage: False
- 老平台主板中使用 ssse3 需要开启来使用 macOS 10.4 - 10.6。
PanicNoKextDump: True
- 防止 kext 出错打报告而让我们看不到真正的 panic 原因, 初始排错时最好打开。
WARNING
优化完毕后关闭
PowerTimeoutKernelPanic: False
- 修复 macOS Catalina 中由于设备电源状态变化超时而导致的内核崩溃,如果有这个问题请选择 True。
ProvideCurrentCpuInfo: False
- 给 hyper-V 虚拟化 macOS 时提供 CPU 的信息,保证全核同步。
SetApfsTrimTimeout: 0
- 为 SSD 上的 APFS 文件系统设置微秒级的 trim 超时时间。
WARNING
APFS 文件系统的设计方式是,空间由 Spaceman (The Space Manager) 结构控制,要么为已使用,要么为空闲。而其他文件系统,则可以被标记为 已使用、空闲 或 未映射。macOS 启动时,所有空闲的空间都会被 trim 处理。由于 DSM 命令的特性,每个命令最多拥有 256 个范围,因此 NVMe 驱动器的 trim 过程发生在 LBA 范围内。硬盘上存储的内容越分散,就需要越多的命令对所有空闲空间进行 trim。
Trim 过程耗时取决于 SSD 控制器和硬盘碎片,可能需要相当长的时间,导致启动时间肉眼可见地变长,APFS 驱动程序忽略之前未映射的区域,并在启动时一次又一次地对这些区域进行 trim。为了解决开机速度慢的问题,macOS 驱动引入了一个超时时间(9.999999 秒)来中止未能及时完成的 trim 操作。
在一些控制器上(如三星)解除分配的过程较慢,很容易达到超时时间。从本质上讲,这意味着碎片级别很高,macOS 会尝试 trim 之前已经解除分配的低位区块,但永远没有足够的时间去解除分配高位区块。这意味着这些 SSD 安装后不久,trim 指令就会不起作用,导致闪存的额外损耗,甚至损坏。
解决这个问题的方法之一是将超时时间设置为一个非常高的值(例如:4294967295),这样将会以较长的启动时间(数分钟)为代价来确保所有的区块都被 trim 处理。另一种方法是利用超额配置(如果支持),或者创建一个专用的未映射分区,控制器可以在该分区中找到保留块。在这种情况下,可以设置一个非常低的超时时间来禁止 trim 操作,例如:999
注 1:Failsafe -1 表示不应用此补丁,这样 apfs.ext 将保持不动。
注 2:在 macOS 12.0 及以上版本中,不再可能指定 trim 超时时间。但可以通过设置为 0 来禁用 trim。
注 3:trim 操作只在启动阶段受到影响,当启动卷被加载时。无论是指定超时时间,或者设置为 0 完全禁用 trim,都不会影响正常的 MacOS 运行。
设置为 0 完全禁用 trim 只影响进入系统的启动阶段,对系统启动之后无影响。设置为 0 或 999 基本上没有差别,主要是 macOS 12.0 及以上版本,只有设置为 0 才能禁用 trim。
ThirdPartyDrives: False
- 开启 SATA 接口的 SSD 的 trim 功能,自行根据情况选择。
XhciPortLimit: True
- 解除 15 个 USB 端口限制。
Scheme
CustomKernel: False
- 当使用 AMD/Atom 等 CPU 时请开启。
FuzzyMatch: False
- 此选项是给 10.6 以及更早的系统使用,略过。
KernelArch: Auto
- 此选项是给 10.7 以及更早的系统使用,略过。
KernelCache: Auto
- 选择更加合适的内核缓存方式以提升启动速度。