相信很多的小白在安装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