本文内容主要针对正在迁移到 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 即可:
OpenCore 安装卡住的拯救手册
  • Kernel:
    • AMD 系统需要内核补丁;
    • Intel 系统:
      • BIOS 中解锁 CFG-Lock,没有该选项的情况开启以下选项:
        • AppleXcpmCfgLock→True/Yes
        • AppleCpuPmCfgLock→True/Yes
  • UEFI:
    • Quirks
      • IgnoreInvalidFlexRatio→True/Yes
        • 此项仅适用于第4代酷睿或更老平台,不适用于 AMD 和第6代酷睿及更新平台。
    •  Output
      • ProvideConsoleGop→True/Yes
        • 部分平台可能需要此项以正常过渡到下一个屏幕,此功能原是 AptioMemoryFix 的一部分,现在在 OpenCore 中则是这个 Quirk。

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 (或其它你下载的主题)
  • UEFI
    • Drivers
      • 加载 OpenCanopy.efi

下载 OcBinaryData:https://github.com/acidanthera/OcBinaryData

将解压后的 Resources 文件夹覆盖到 /EFI/OC/ 目录下的同名文件夹。

Q4:如何固定选择启动项?

A:修改 config.plist:

Misc→Security→AllowSetDefault→True/Yes

在启动界面选择想要设置的项,按下 Ctrl + Enter,即可。

发表评论

后才能评论