本节允许对操作系统引导加载程序应用不同类型的UEFI修改,主要是Apple引导加载程序(boot.efi)。这些修改目前为不同的固件类型提供了各种修补程序和环境更改。其中一些功能最初是作为 AptioeMoryFix.efi (不再维护)的一部分实现的。
因为各个平台的版本不太一样,在详细说明之前写来一个 OC 0.7.3 完整的 Quiks 怪癖 说明,这样心里大家设置的时候心里一般就有个底了。
AllowRelocationBlock
允许通过重新定位块引导 macOS
此怪癖需要启用 ProvideCustomSlide,通常还需要启用 AvoidRuntimeDefrag 才能正常工作
虽然在使用较低内存的平台上运行旧 macOS 版本需要这种怪癖
但它与某些硬件和 Mac OS 11 不兼容,在这种情况下,应考虑使用 EnableSafeModeSlide
AvoidRuntimeDefrag
防止 boot.efi 运行时内存碎片整理
开启后会修复 UEFI 的运行服务, 例如日期、时间、NVRAM、电源控制
除了苹果和 VMware 之外,大多数类型的固件都需要这种怪癖
DevirtualiseMmio
从某些 MMIO 区域删除运行时属性
删除已知内存区域的运行时位来减少内存映射中被盗的内存占用
一般情况下,采用 slide=1 的方式进行连续性内存注入,故一般不勾选,除非你的机器用了 KASLR 方式。
DisableSingleUser
禁用单用户模式
开启后会禁止 Cmd + S
和 -s
的使用,使设备更加接近于 T2 白苹果
DisableVariableWrite
防止 macOS NVRAM 写入访问
开启后会禁止 NVRAM 写入, 在 Z390/HM370 等没有原生 macOS 支持 NVRAM 的主板上需要开启
DiscardHibernateMap
EnableSafeModeSlide
开启后会允许在安全模式下使用 Slide 值
安全模式下(-x)是否用连续性的内存注入方式
EnableWriteUnprotector
允许对 UEFI 运行时服务代码进行写访问
开启后会在执行期间删除 CR0 寄存器中的写入保护
ForceExitBootServices
失败时使用新内存映射重试 ExitBootServices
开启后会确保 ExitBootServices 即使在 MemoryMap 发生更改时也能调用成功
一般很老很旧的主板可能需要使用,新主板一般不需要使用
ProtectMemoryRegions
保护内存区域不被错误访问
确保 CSM 内存区域标记为 ACPI NVS,以防止 boot.efi 或 XNU 重新定位或使用它们
AvoidRuntimeDefrag 解决了类似的问题。默认不勾选
一些老旧的主板可能需要勾选
ProtectSecureBoot
保护 UEFI 安全引导变量不被写入
避免操作系统对 UEFI 安全启动变量 (db
, dbx
, PX
, KEK
) 进行写入
这个选项主要用于避免 Insyde 主板和 MacPro5,1 的 NVRAM 问题
ProtectUefiServices
保护 UEFI 服务不被固件覆盖
用于修复 Z390 在 DevirtualiseMmio、ProtectCsmRegion 或 ShrinkMemoryMap 上的问题
非 Z390 主板一般默认不勾选
ProvideCustomSlide
在内存不足时提供自定义 KASLR 幻灯片
此选项时强制 macOS 在可用的 slide 值中使用一个随机的、不产生冲突的 slide 值
如果 Slide 值存在冲突, 此选项将强制 macOS 执行以下操作,使用一个伪随机值
只有在遇到 Only N/256 slide values are usable!
时需要
RebuildAppleMemoryMap
重建 macOS 兼容的内存映射
一般在启动 macOS 10.6 及更早版本时可能需要这个选项
SetupVirtualMap
在 SetVirtualAddresses 上设置虚拟内存
开启后会将 SetVirtualAddresses 调用修复为虚拟地址
通过虚拟内存建立连续性内存供 OC 使用,并映射到分散的物理内存中
SignalAppleOS
通过任何操作系统的操作系统信息报告正在加载的 macOS
将其他操作系统的信息报告给正在加载的 macOS
用于在 Windows 中为 MacBook 启用 iGPU
SyncRuntimePermissions
更新运行时环境的内存权限
主要用于早期的 macOS 或 Linux/Windows
Quirk
Enabled
Comment
AvoidRuntimeDefrag
No
Big Sur 可能需要启用此怪癖
EnableSafeModeSlide
No
EnableWriteUnprotector
No
ProvideCustomSlide
No
RebuildAppleMemoryMap
Yes
这是引导 OS X 10.4 到 10.6 所必需的
SetupVirtualMap
No
Quirk
Enabled
Comment
RebuildAppleMemoryMap
Yes
这是引导 OS X 10.4 到 10.6 所必需的
Quirk
Enabled
Comment
AvoidRuntimeDefrag
No
Big Sur 可能需要启用此怪癖
EnableSafeModeSlide
No
EnableWriteUnprotector
No
ProvideCustomSlide
No
RebuildAppleMemoryMap
Yes
这是引导 OS X 10.4 到 10.6 所必需的
SetupVirtualMap
No
Quirk
Enabled
Comment
RebuildAppleMemoryMap
Yes
这是引导 OS X 10.4 到 10.6 所必需的
Sandy Bridge、Ivy Bridge、Haswell、Broadwell、Skylake、Kaby Lake
Quirk
Enabled
Comment
AvoidRuntimeDefrag
No
Big Sur 可能需要启用此怪癖
EnableSafeModeSlide
No
EnableWriteUnprotector
No
ProvideCustomSlide
No
RebuildAppleMemoryMap
Yes
这是引导 OS X 10.4 到 10.6 所必需的
SetupVirtualMap
No
Quirk
Enabled
Comment
RebuildAppleMemoryMap
Yes
这是引导 OS X 10.4 到 10.6 所必需的
Sandy、Ivy Bridge-E、 Haswell-E、Broadwell-E
Skylake-X/W、Cascade Lake-X/W
Arrandale 的 iGPU 核显仅在 macOS 10.13 之前得到官方支持,大多数 Clarksfield 和 Arrandale 主板不支持 UEFI
Quirk
Enabled
Comment
AvoidRuntimeDefrag
No
Big Sur 可能需要启用此怪癖
EnableSafeModeSlide
No
EnableWriteUnprotector
No
ProvideCustomSlide
No
RebuildAppleMemoryMap
Yes
这是引导 OS X 10.4 到 10.6 所必需的
SetupVirtualMap
No
Quirk
Enabled
Comment
RebuildAppleMemoryMap
Yes
这是引导 OS X 10.4 到 10.6 所必需的
Sandy Bridge、Ivy Bridge、Haswell、Broadwell、Skylake、Kaby Lake
Sandy Bridge 的 iGPU 仅在 macOS 10.13 之前得到官方支持、大多数 Sandy 主板不支持 UEFI
Coffee Lake Plus、Comet Lake
Bulldozer(15h)、Jaguar(16h)
Ryzen、Threadripper(17h and 19h)
DevirtualiseMmio
SetupVirtualMap
注意 B550、A520 和 TRx40 板应禁用此功能。
较新的 X570 BIOS 版本也需要禁用此功能
2020 年末 BIOS 更新的 X470 和 B450 也需要禁用此功能