相信很多的小白在安装Hackintosh的时候都遇到过恼人的卡+++问题吧,以前的经验是先替换OsxAptioFix各种版本,然后是计算slide值,各种骚操作,令人烦恼。

OcQuirks 是啥

OcQuirks是用于Clover的替代EFI驱动程序,可替代AptioMemoryFix和所有OsxAptioFix的变体。它是针对OpenCore源代码树构建的,并支持OpenCore的 OcQuirks 模型。

什么时候需要用到它?

假如你在安装 Hackintosh的时候出现了卡 +++的问题时,而其它的内存修复都无法发挥作用的时候,那么你有必要试一下 OcQuirks

ERROR!!! Uncompress prelinked kernel
ERROR!!! Load prelinked kernel with status 0x800000000000007
Error loading kernel cache (0x7)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

先决条件

OcQuirks EFI驱动程序依赖于OpenRuntime.efi,并且必须将它们一起安装在CLOVER EFI驱动程序目录中。可以在发行版zip中找到OpenRuntime.efi,它与OcQuirks一起构建。

安装

要安装OcQuirks,请下载最新版本或按照以下说明进行构建,然后将其安装到EFI中,以替换任何现有的内存修复驱动程序。

挂载您的EFI分区。

将您的EFI卷备份到可启动的USB驱动器中,并验证它是否可以工作。

从EFI卷上的 Clover 驱动程序文件夹中删除 AptioMemoryFix 和所有OsxAptioFix开头的驱动。

将OcQuirks.efi,OpenRuntime.efi和OcQuirks.plist添加到EFI卷上的Clover/drivers/UEFI文件夹中。

EFI
└── CLOVER
    └── drivers
        └──UEFI
           ├──ApfsDriverLoader.efi
           ├──HfsPlus.efi
           ├──......
           ├──OpenRuntime.efi
           ├──OcQuirks.efi
           ├──OcQuirks.plist
           ├──......
           └──VirtualSmc.efi

重启。

如果您的系统无法启动,请使用U盘重新启动到macOS并通过相反的过程进行还原。检查以下参数,并使用与您的系统更匹配的参数配置OcQuirks.plist。

默认设置基于AptioMemoryFix,并且在设计时考虑了新的Intel系统。您的系统可能需要自定义设置(例如Z390可能需要DevirtualiseMmio + ProtectUefiServices,较旧的100-200系列可能需要``EnableWriteUnprotector)。还假定所有slide值都是有效的(不需要注入slide=xxx` )。

配置参数

通过将OcQuirks.plist放到Clover/drivers/UEFI文件夹中,可以更改下面列出的参数。可以在发行zip或OcQuirks存储库的根目录中找到。如果未找到plist,则使用以下默认值。

 

OcQuirks
默认值
描    述
AvoidRuntimeDefrag True 开启后会修复 UEFI 的运行服务, 例如日期, 时间, NVRAM, 电源控制等
DevirtualiseMmio False 开启后会减少 Stolen 内存占用空间,扩大 Slide = N 值的范围, 适用于大多数主板
DisableSingleUser False 开启后会禁止 Cmd + S 和 -s 的使用,使设备更加接近于 T2 白苹果
DisableVariableWrite False 开启后会禁止 NVRAM 写入, 在 Z390/HM370 等没有原生 macOS 支持 NVRAM 的主板上需要开启
DiscardHibernateMap False 开启后会重用原始休眠内存映射,仅某些旧硬件需要
EnableSafeModeSlide True 开启后会允许在安全模式下使用 Slide 值
EnableWriteUnprotector False 开启后会在执行期间删除 CR0 寄存器中的写入保护
ForceExitBootServices True 开启后会确保 ExitBootServices 即使在 MemoryMap 发生更改时也能调用成功, 除非有必要, 否则请勿使用
MmioWhitelist Array 设计为用plist dict值填充,描述使用DevirtualiseMmio quirk时对特定固件功能至关重要的地址。
ProtectMemoryRegions False 开启后会用于修复人为制造和睡眠唤醒的问题, AvoidRuntimeDefrag 已经修复了这个问题所以请尽可能避免使用这个 Quirk
ProtectSecureBoot False 避免操作系统对 UEFI 安全启动变量 (db, dbx, PX, KEK) 进行写入, 这个选项主要用于避免 Insyde 主板和 MacPro5,1 的 NVRAM 问题
ProtectUefiServices False 保护UEFI服务不被固件覆盖。
ProvideConsoleGopEnable True 如果控制台句柄中缺少图形输出协议,请安装。
ProvideCustomSlide True 如果 Slide 值存在冲突, 此选项将强制 macOS 执行以下操作:使用一个伪随机值。只有在遇到 Only N/256 slide values are usable! 时需要
RebuildAppleMemoryMap True 生成与macOS兼容的内存映射。
SetupVirtualMap True 开启后会将 SetVirtualAddresses 调用修复为虚拟地址
SignalAppleOS False 通过 OS Info 将 macOS 加载的信息报告给其它操作系统, 用于在 Windows 中为 MacBook 启用 iGPU
SyncRuntimePermissions True 同步运行时环境的内存权限。

 

有关 OcQuirks 的更详细说明,请查阅《OpenCore配置手册》。

OcQuirks下载链接:https://github.com/ReddestDream/OcQuirks/releases