本文内容主要针对正在迁移到 OpenCore 这个天坑的用户,主要涉及常见的界面调整,-v 跑代码时卡住等问题,本文长期整理更新,遇到文中没有提到的问题欢迎反馈。本文涉及内容较多,可按下 Ctrl + F 或 Command + F 直接查找关键词。
新手常见错误
Q1:启动时显示
OCABC: Incompatible OpenRuntime r10, require r11
Halting on critical error
A:此问题由升级替换文件不完全造成,/EFI/OC 目录下的 OpenCore.efi,/EFI/OC/Drivers 目录下的 OpenRuntime.efi,必须来自同一版本。
OpenCore 的关键文件:BOOTx64.efi、OpenCore.efi、OpenRuntime.efi、OpenCanopy.efi(用于支持官方主题服务)
Q2:启动时显示
This version of Mac OS X is not supported on this platform!
A:问题原因:使用了较新的机型ID,但是这个机型不支持旧版本系统,例如:MacPro7,1 仅能安装 macOS 10.15 及以上,不支持 macOS 10.13-10.14;另一种可能的原因是反过来,即:使用了太旧的机型ID,但这个机型不支持最新版本的系统。
Q3:
configuration requires vault but no vault provided!
A:这是最常见的新手错误了,修改 Config.plist 中:
Misc→Security→Vault→Optional
将 Vault 值设置为 Optional,注意大小写敏感。
Q4:OpenCore 启动界面不显示安装 U 盘,macOS 系统盘,Recovery 等选项。
A:修改 config.plist:
Misc→Security→ScanPolicy→ 0
填写 0 会扫描所有内容并开启所有选项。其它可选值:3870467,默认:983299
Q5:
oc:Image Kexts\XXXX.kext\Contents\MacOS\XXXX.kext is missing for kext XXXX.kext ()
Halting on critical error
A:上面的代码中,XXXX.kext 可能是任何值,例如 VirtualSMC.kext,CPUFriend.kext,AppleALC.kext 等等,但是问题的原因是一样的:在 /EFI/OC/Kexts/ 目录下没有对应的 kext 文件。解决方法也很简单,添加对应的 kext,或者在 config.plist 中禁用相关的 kext。除此之外还有 XXX.efi is missing 之类的也是同类型错误,只是 XXX.efi 文件一般位于 /EFI/OC/Drivers/ 目录下。
Q7:
Start RandomSeed
End RandomSeed
+++++++++++++++++++++
A:修改 config.plist 中:
Booter:
以下选项项取决于 Memory Attribute Table(MAT)支持情况,如何确定 MAT 支持?
使用 Debug 版 OpenCore,并在 config 中设置以下选项:
- Misc→Debug→Target→67
在 EFI 日志中查找以下内容:
OCABC: MAT support is 1
如果支持:
- EnableWriteUnprotector→False
- RebuildAppleMemoryMap→True
- SyncRuntimePermissions→True
如果不支持:
- EnableWriteUnprotector→True
- RebuildAppleMemoryMap→False
- SyncRuntimePermissions→False
其它:
- SetupVirtualMap→False/No
- 大部分 GA 主板,以及更老的硬件如第 4 代酷睿需要开启;
- Icelake 以及 Comet Lake 不能开启此项;
- AMD B550 和 A520(以及最新 BIOS 的 X570)不能开启此项;
- AMD 线程撕裂者 TRx40 不能开启此项;
- 华硕 X299 v3006 及以上版本的 BIOS(包括其他品牌 X299 + 最新 BIOS)不能开启此项;
- DevirtualiseMmio
- 部分硬件平台并不能很好的适应这个 Quirk,例如部分 Z390 和绝大部分的 X99 和 X299。它的工作方式是占用 MMIO 区域并删除运行时属性,使它们可用作存放内核的空间,注意这个 Quirk 在绝大部分的系统上并不要求一定要填写 MmioWhiteList,但在某些非常难安装的平台(例如:线程撕裂者 TRX40 19H 或 10300H),在启用此 Quirk 的同时还需设置 MmioWhiteList,使用 Debug 版 OpenCore 并开启 DevirtualiseMmio,你会在日志中找到类似以下内容:
21:495 00:009 OCABC: MMIO devirt start
21:499 00:003 OCABC: MMIO devirt 0x60000000 (0x10000 pages, 0x8000000000000001) skip 0
21:503 00:003 OCABC: MMIO devirt 0xFE000000 (0x11 pages, 0x8000000000000001) skip 0
21:506 00:003 OCABC: MMIO devirt 0xFEC00000 (0x1 pages, 0x8000000000000001) skip 0
21:510 00:003 OCABC: MMIO devirt 0xFED00000 (0x1 pages, 0x8000000000000001) skip 0
21:513 00:003 OCABC: MMIO devirt 0xFEE00000 (0x1 pages, 0x800000000000100D) skip 0
21:516 00:003 OCABC: MMIO devirt 0xFF000000 (0x1000 pages, 0x800000000000100D) skip 0
21:520 00:003 OCABC: MMIO devirt end, saved 278608 KB
- 将 devirt 后面的 0x 60000000 等 6 组十六进制数字转换为十进制:
- MMIO devirt 0x60000000 -> 1610612736
- MMIO devirt 0xFE000000 -> 4261412864
- MMIO devirt 0xFEC00000 -> 4273995776
- MMIO devirt 0xFED00000 -> 4275044352
- MMIO devirt 0xFEE00000 -> 4276092928
- MMIO devirt 0xFF000000 -> 4278190080
- 然后填写到 MmioWhiteList 即可:
- Kernel:
- AMD 系统需要内核补丁;
- Intel 系统:
- BIOS 中解锁 CFG-Lock,没有该选项的情况开启以下选项:
- AppleXcpmCfgLock→True/Yes
- AppleCpuPmCfgLock→True/Yes
- BIOS 中解锁 CFG-Lock,没有该选项的情况开启以下选项:
- UEFI:
- Quirks
- IgnoreInvalidFlexRatio→True/Yes
- 此项仅适用于第4代酷睿或更老平台,不适用于 AMD 和第6代酷睿及更新平台。
- IgnoreInvalidFlexRatio→True/Yes
- Output
- ProvideConsoleGop→True/Yes
- 部分平台可能需要此项以正常过渡到下一个屏幕,此功能原是 AptioMemoryFix 的一部分,现在在 OpenCore 中则是这个 Quirk。
- ProvideConsoleGop→True/Yes
- Quirks
Q8:
[EB|`B:WFDW] Err(0xE), 0 @ LocHB 71B4903C-14EC-42C4-BDC6-CE1449930E49
[EB|#LOG:DT] 2020-03-09T09:40:46 [EB|#LOG:EXITBS:START] 2020-07-22T04:21:02
方案一:针对移动端,修改 config.plist 中
- UEFI→Quirks→IgnoreInvalidFlexRatio→True/Yes
- UEFI→Quirks→ReleaseUsbOwnership→True/Yes
- Booter→Quirks→RebuildAppleMemoryMap→False/No
- Booter→Quirks→SetupVirtualMap→True/Yes
方案二:针对无法解开 CFG 锁的机型,修改 config.plist 中
- Kernel→Quirks→AppleXcpmCfgLock→True/Yes
- Kernel→Quirks→AppleCpuPmCfgLock→True/Yes
- UEFI→Quirks→IgnoreInvalidFlexRatio→True/Yes
- 如果无法关闭 VT-d,修改:
- Kernel→Quirks→DisableIoMapper→True/Yes
方案三:参考 Q7。
Q9:
[EB|#LOG:EXITBS:START]
A:参考 Q7,因为基本上是同样的原因。
Q10:
IOConsoleUsers: time(0) 0->0, lin 0, llk1,
IOConsoleUsers: gIOScreenLockState 3, hs 0, bs 0, now 0, sm 0x0
A:这个位置基本上卡在 GPU 正确初始化前,请确认以下设置:
- GPU 支持 UEFI(尤其是 GT600/GT700 以及更早期显卡)
- BIOS 中关闭了 CSM
- 部分笔记本机型可能无法完全关闭
- BIOS 中设置强制 PCIe 到 3.0
- 如果使用核显,再次检查所注入的核显 ig-platform-id 和 device-id
- 桌面端 UHD630 可以尝试 00009B3E
- 尝试 -gfxmlr 启动参数,这可能同时可以解决“Divide by Zero”错误
- 在 10.15.4 及以上版本 macOS 中,某些机型上的第八、九代酷睿可能需要添加启动参数 igfxonln=1
启动界面&代码界面部分
Q1:启动界面看不到 macOS 启动分区
A:首先确认 /EFI/OC/Drivers 目录下有 HFSPlus.efi;
修改 config.plist:
Misc→Security→Scan Policy→设置为 0
UEFI→Quirks→UnblockFsConnet→True/Yes(部分惠普机型需要)
UEFI→APFS→EnableJumpStart→True/Yes
UEFI→APFS→HideVerbose→True/Yes
UEFI→APFS→MinDate→ -1
UEFI→APFS→MinVersion→ -1
Q2:选择启动项后黑屏
A:修改 config.plist:
UEFI→Output→ProvideConsoleGop→True/Yes
Booter→Quirks→RebuildAppleMemoryMap→True/Yes
如果未能解决问题,请使用 Debug 版本 OpenCore,这样会提示更多信息。
Q3:如何将 OpenCore 设置成图形化启动界面?
A:以下方法适用于 OpenCore 0.7.0 及以上。修改 config.plist:
- Misc
- Boot
- Picker Mode → External
- Picker Attribute GUI → 1
- Show Picker → True/Yes
- PickerVariant → Acidanthera\GoldenGate (或其它你下载的主题)
- Boot
- UEFI
- Drivers
- 加载 OpenCanopy.efi
- Drivers
下载 OcBinaryData:https://github.com/acidanthera/OcBinaryData
将解压后的 Resources 文件夹覆盖到 /EFI/OC/ 目录下的同名文件夹。
Q4:如何固定选择启动项?
A:修改 config.plist:
Misc→Security→AllowSetDefault→True/Yes
在启动界面选择想要设置的项,按下 Ctrl + Enter,即可。
评论(0)