信息技術

黑苹果OpenCore引导错误解决方案

新手常见错误

Q1:启动时显示

OCABC: Incompatible OpenRuntime r10, require r11

Halting on critical error

generic

74 Bytes

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!

generic

59 Bytes

A:问题原因:使用了较新的机型ID,但是这个机型不支持旧版本系统,例如:MacPro7,1 仅能安装 macOS 10.15 及以上,不支持 macOS 10.13-10.14;另一种可能的原因是反过来,即:使用了太旧的机型ID,但这个机型不支持最新版本的系统。

Q3:

configuration requires vault but no vault provided!

generic

51 Bytes

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

generic

108 Bytes

A:上面的代码中,XXXX.kext 可能是任何值,例如 VirtualSMC.kext,CPUFriend.kext,AppleALC.kext 等等,但是问题的原因是一样的:在 /EFI/OC/Kexts/ 目录下没有对应的 kext 文件。解决方法也很简单,添加对应的 kext,或者在 config.plist 中禁用相关的 kext。下载 kext 可以看看 黑苹果星球整理的月度 kext 更新包。除此之外还有 XXX.efi is missing 之类的也是同类型错误,只是 XXX.efi 文件一般位于 /EFI/OC/Drivers/ 目录下。

Q7:

Start RandomSeed

End RandomSeed

+++++++++++++++++++++

generic

53 Bytes

A:修改 config.plist 中:

Booter:

以下选项项取决于 Memory Attribute Table(MAT)支持情况,如何确定 MAT 支持?

使用 Debug 版 OpenCore,并在 config 中设置以下选项:

  • Misc→Debug→Target→67

在 EFI 日志中查找以下内容:

OCABC: MAT support is 1

generic

23 Bytes

以上 1 代表支持,0 代表不支持 MAT。

如果支持:

  • 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

generic

598 Bytes

将 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
  • 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

generic

145 Bytes

方案一:针对移动端,修改 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]

generic

22 Bytes

A:参考 Q7,因为基本上是同样的原因。

Q10:

IOConsoleUsers: time(0) 0->0, lin 0, llk1,

IOConsoleUsers: gIOScreenLockState 3, hs 0, bs 0, now 0, sm 0x0

generic

106 Bytes

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
    • 更多参阅 WhateverGreen 补丁

启动界面&代码界面部分

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,点此直达官方地址,将解压后的 Resources 文件夹覆盖到 /EFI/OC/ 目录下的同名文件夹。

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

A:修改 config.plist:

Misc→Security→AllowSetDefault→True/Yes

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

Q5:

OCB: OcScanForBootEntries failure – Not Found

generic

45 Bytes

A:这是由于 OpenCore 无法根据当前的 ScanPolicy 设置找到任何驱动器,此项设置为 0 将允许显示所有引导选项

修改 config.plist:Misc→Security→ScanPolicy→ 0

Q6:

OCB: failed to match a default boot option

generic

42 Bytes

A:原因及解决方法同 Q5。

Q7:

OCB: StartImage failed – Aborted

Halting on critical error

generic

58 Bytes

A:请升级 OpenCore 到 0.5.9 及更高版本,这主要是由错误的编译或文件版本不对应造成。

OpenCore 的关键文件必须来自同一版本:BOOTx64.efi、OpenCore.efi、OpenRuntime.efi、OpenCanopy.efi(用于支持官方主题服务)

Q8:

Forcing CS_RUNTIME for entitlement: com.apple.rootless.restricted-block-devices

generic

79 Bytes

A:这个一般出现在安装 macOS 11.0 Big Sur 的过程中,其实并没有卡住,注意观察硬盘灯,耐心等待,一般3-5分钟就会过。

Q9:

SetMulticastList() ===>

SetMylticastList() <===

generic

47 Bytes

A:同 Q8。

Q10:

OCB:OcScwfurBootEntries failure – not found

Halting on critical error

generic

69 Bytes

A:配置文件有错误,建议重新新建 config.plist。注:此错误新手遇到比较多,请注意 OpenCore 和 Clover 的 config 文件并不通用!

Q11:

ERROR allocating 0x3362 pages at 0x0000000001033000 alloc type 2

Error loading kernel cache (0x9)

Halting on critical error

generic

125 Bytes

A:原因一般是在 /EFI/OC/Drivers 目录下引入了很多 Clover 使用的 .efi 文件。并不是 Clover 适用的 .efi 文件 OpenCore 也适用,具体看:.efi 文件说明

解决办法是删除 Clover 使用的 .efi 文件,OpenCore 最基础只需保留 HfsPlus.efi,OpenRuntime.efi,OpenCanopy.efi(用于支持官方主题),其余都删除。

Q12:

OCS:No schema for Disabled at 12 index

OC:Driver HfaPlus.efi at 0 cannot be found!

Halting on critical error

generic

108 Bytes

A:默认的 OpenCore 不含 HFSPlus.efi 文件,需要添加到 /EFI/OC/Drivers 目录下。

Q13:

OCB:StartImage failed – Already started

Halting on critical error

generic

65 Bytes

A:一般发生在引导项选择时选择了 EFI 分区。解决方法:不要选择 EFI 分区,请直接选择系统分区。

Q14:

OCUI: Failed to load images

Halting on critical error

generic

53 Bytes

A:开启了 OpenCore 的 UI 界面,但是没有配置 OC 的 Resource 文件,请下载并复制到 /EFI/OC/Resource/ 文件。

下载 OcBinaryData,点此可直达官方地址

Q15:卡在主板 LOGO 界面

A:常见于 GA 主板,修改 config.plist→UEFI→Drivers 取消 AudioDxe.efi,删除或在名称前添加 # 号,暂时禁用。另一种方案,断电并拔掉电池静置 5-10 分钟,再开机。

Q16:

OC: Invalid Vault mode!

generic

23 Bytes

A:修改 config.plist 中:

Misc→Security→Vault→Optional

大概率是拼写错误,将 Vault 值设置为 Optional,注意大小写敏感。

Q17:

OC: OcAppleGenericInputTimerQuirkExit Status – Success

OC: OcAppleGenericInputKeycodeExit Status – Success

generic

106 Bytes

A:解决方法:

  • Intel:
    • BIOS 中解锁 CFG-Lock,没有该选项的情况开启以下选项:
      • AppleXcpmCfgLock→True/Yes
      • AppleCpuPmCfgLock→True/Yes
  • AMD 系统需要内核补丁

如果未能解决问题,请使用 Debug 版本 OpenCore,这样会提示更多信息。

Q18:

OCABC: Memory pool allocation failure – Not Found

generic

49 Bytes

A:这是由于错误的 BIOS 设置 和/或 错误的 Booter Quirks 值,请确认 Booter→Quirks 设置正确,并验证 BIOS 设置:

  • 开启 Above 4G Decoding
  • 关闭 CSM
  • 升级 BIOS 到最新版本

Q19:

OCS: No schema for DSDT, KernelAndKextPatch, RtVariable, SMBIOS, SystemParameters…

generic

84 Bytes

A:这基本上是配置文件结构不正确造成的,请勿使用 Clover 的 config.plist 引导 OpenCore,以及版本不匹配的 OpenCore Configurator 配置 config.plist。

建议是,能学会树形目录编辑器就尽量学,例如 ProperTree

Q20:

apfs_module_start

generic

17 Bytes

A:卡在这个位置大部分都是 Z390 主板,需要添加一个 ACPI 补丁,内容如下:

Comment: Fix RTC _STA bug

Find: A00A9353 54415301

Replace: A00A910A FF0BFFFF

generic

84 Bytes

Q21:

OCB:LoadImage failed – Unsupported

Halting on critical error

generic

60 Bytes

A:一般发生在进入 Recovery 时。解决方法是在 /EFI/OC/Drivers/ 目录下添加 HFSPlus.efi 或 VBoxHfs.efi,一般使用前者。

Q22:

000340.041303 XHCI@14000000: AppleUSBXHCI::interruptOccurred: clearing change bits on unused port 23 with portSC 0x802a0

000341.204285 XHCI@14000000: AppleUSBXHCI::interruptOccurred: clearing change bits on unused port 24 with portSC 0x802a0

000341.227434 XHCI@14000000: AppleUSBXHCI::interruptOccurred: clearing change bits on unused port 25 with portSC 0x221203

000341.250544 XHCI@14000000: AppleUSBXHCI::interruptOccurred: clearing change bits on unused port 26 with portSC 0x802a0

IOUSBHost Interface(0x10000063d): matching deferred by IOUSBHostHIDDevice

generic

566 Bytes

A:一般是因为缺少 ACPI 补丁,没有正确驱动 USB 的 XHCI 节点。可尝试以下 ACPI 补丁:

Comment: Rename XHCI to XHC(USB)

Find: 58484349

Replace: 5848435F

Comment: Rename XHC1 to XHC(USB)

Find: 58484331

Replace: 5848435F

generic

132 Bytes

其它解决办法:

  • 检查镜像 md5;
  • 将 U 盘换到 USB2.0 或 USB3.1 的接口;
  • 添加解除 15 端口限制的补丁,或修改 config.plist→Kernel→Quirks→XhciPortLimit

Q23:

VM Swap Subsystem is ON

generic

23 Bytes

A:修改 config.plist

Kernel→Quirks→ThirdPartyDrivers→ Off/False

Q24:

Kernel Extensions in backtrace:

com.apple.iokit.IOPCIFamily(2.9)[ADD485B5-3EF8-37C4-B3C5-F86326E497A4]@0xffffff7f9432f000->0xfffffff7f94365fff

com.apple.driver.AppleACPIPlatform(6.1)[C111AA1C-DE22-39CC-BB44-4870383DDAA0]@0xffffff7f96306000->0xffffff7f963a0fff

dependency: com.apple.iokit.IOACPIFamily(1.4)…

dependency: com.apple.iokit.IOPCIFamily(2.9)…

dependency: com.apple.driver.AppleSMC(3.1.9)…

com.apple.driver.AppleIntelCFLGraphicsFramebuffer(14.0.4)[…]@…

generic

503 Bytes

A:这个错误基本是是由 Framebuffer 设置不当造成的,例如7代酷睿使用了9代酷睿的核显 Framebuffer。

解决方法:修改合适的核显 Framebuffer 信息,可先删除 DeviceProperties 下有关核显的数值。其它参考:驱动 Intel 核显

Q25:

OCSB: No suitable signature – Security Violation

OCB: Apple Secure Boot prohibits this boot entry, enforcing!

OCB: LoadImage failed – Security Violation

generic

152 Bytes

A:这是由于过时的 Apple Secure Boot manifests 导致的,如果你在 OpenCore 中设置了 SecureBootModel,就会导致加载失败,这些文件丢失的原因实际上是 macOS 中的 BUG。解决方法(任选其一):

  1. Misc→Security→SecureBootModel→ Default 或 Disabled
  2. 重新安装 macOS 到最新版本
  3. 从 /usr/standalone/i386 拷贝 Secure Boot manifests 到 /Volumes/Preboot/<UUID>/System/Library/CoreServices

Q26:

[EB|`LD:OFS] Err(0xE) @ OPEN (System\\Library\\PrelinkedKernels\\prelinkedkernel)

generic

81 Bytes

A:当 Preboot 未被正确更新时,可能会发生这种情况。解决此问题:

  • 修改 config.plist→UEFI→APFS→JumpstartHotplug→True(macOS 11.0 可能必须开启此项才能进入 Recovery)
  • 重启,引导进入 Recovery
  • 开启终端,进行如下操作:

# 通过列出所有分区找到 Preboot 分卷

diskutil list

# 在列出的列表中,我们发现 Preboot 分卷是 disk5s2

/dev/disk5 (synthesized):

#: TYPE NAME SIZE IDENTIFIER

0: APFS Container Scheme – +255.7 GB disk5

Physical Store disk4s2

1: APFS Volume ⁨Big Sur HD – Data⁩ 122.5 GB disk5s1

2: APFS Volume ⁨Preboot⁩ 309.4 MB disk5s2

3: APFS Volume ⁨Recovery⁩ 887.8 MB disk5s3

4: APFS Volume ⁨VM⁩ 1.1 MB disk5s4

5: APFS Volume ⁨Big Sur HD⁩ 16.2 GB disk5s5

6: APFS Snapshot ⁨com.apple.os.update-…⁩ 16.2 GB disk5s5s

# 现在挂载指定的 Preboot 分卷

diskutil mount disk5s2

# 最后执行下面的命令来更新 Preboot 分卷

diskutil apfs updatePreboot /volume/disk5s2

generic

893 Bytes

最后重启,注意你可能需要关闭 JumpstartHotplug。

Q27:

OCS: No schema for EnableForAll at 0 index, context <Quirks>!

OCS: No schema for EnableForAll at 5 index, contextr <Quirks>!

OCS: No schema for DummyPowerManagement at 8 index, context <Quirks>!

OCS: No schema for SkipCustomEtryCheck at 8 index, context <Boot>!

generic

261 Bytes

A:和其它升级 OpenCore 的问题一样,这一般是从 0.6.1 升级到 0.6.2,替换了文件却没有用新版 Sample.plist 重建 config.plist 造成的。解决的办法有两个:

  • 使用 0.6.2 版本的 Sample.plist 重建 config.plist;
  • 使用 BeyondCompare 等代码对比工具查找两个版本 Sample.plist 的不同之处,然后使用 VScode 等代码编辑器工具修正 0.6.1 版的 config.plist

Q28:

OC: Driver AudioDxe.efi at 0 cannot be found!

Halting on critical error

generic

71 Bytes

A:在 config.plist 中指定了加载某些文件,实际路径里却不存在。只是此问题指的是 .efi 驱动。此案例中,请检查 /EFI/OC/Driver/ 目录下是否存在 AudioDxe.efi,不存在的话请添加。如果不想要这个驱动的话,请在 config.plist → UEFI → Drivers 中取消该文件,其它情况以此类推。

Q29:

OsxAptioFix3Drv: Starting overrides for \System\Library\CoreServices\boot.efi

Using reloc block: no, hibernate wake: no

ERROR allocating 0x1c19 pages at 0x0000000009433000 alloc type 2

Error loading kernel cache (0x9)

Boot failed; will sleep for 10 seconds before exiting…

Error: Aborted returrned from boot.efi

was error, press any key

* Hit any key to continue *

generic

370 Bytes

A:如果是 OpenCore,请不要使用 OsxAptioFix3Drv.efi 或其它类似的内存修复驱动,因为 OpenCore 已经自备了 OpenRuntime.efi 来解决内存问题。如果是 Clover,r5120 以下版本请使用 AptioMemoryFix.efi,r5120 及以上版本使用 OcQuirks.efi。

Q30:

Failed to parse real field of type 1

generic

36 Bytes

A:此错误一般是因为使用了 Xcode 造成,Xcode 把 HaltLevel 的 integer 值类型自动改成了 real,解决办法是不要使用 Xcode,把 HaltLevel 下的数字值类型修改回 integer:

# 以下是错误的

<key>HaltLevel</key>

<real>2147483648</real>

# 修正为

<key>HaltLevel</key>

<integer>2147483648</integer>

generic

111 Bytes

Q31:

Generation from SMC report as 2

AppleLMUController::smcGetKey Info Error: received error 0x84 when getting key info for ‘ALRV’

AppleLMUController::smcReadKey Error:received error 0×84 when reading key ‘MSLD’

AppleLMUController::smcReadKey Error:received error 0×84 when reading key ‘ALV0’

generic

288 Bytes

A:此错误一般 ssdt 相关,主要表现在笔记本机型上。在此案例中,当用户设备中具备 ACPI0008 (Light Sensor device) 时,macOS 会启动 AppleSMCLMU.kext 与该设备匹配并且需要 LightSensor 的 SMC 密钥。因此,删除 SSDT-ALS0.aml,或进一步补充 ssdt 内容完全屏蔽该设备,一般即可解决该问题。

Q32:

IOConsoleUsers: gIOScreenLockState 3, hs 0, bs 0, now 0, sm 0x0

之后黑屏

generic

68 Bytes

A:如果是 Navi 系显卡(RX5500/5600/5700/XT)

  • 添加启动参数 agdpmod=pikera
  • 可尝试切换到 MacPro7,1 ,启动参数修改为 agdpmod=ignore
  • 如果是微星的 Navi 显卡,可能需要添加以下补丁,位于 Kernel → Patch:

Base:

Comment: Navi VBIOS Bug Patch

Count: 1

Enabled: YES

Find: 4154592C526F6D2300

Identifier: com.apple.kext.AMDRadeonX6000Framebuffer

Limit: 0

Mask:

MinKernel: 19.00.00

MaxKernel: 19.99.99

Replace: 414D442C526F6D2300

ReplaceMask:

Skip: 0

generic

239 Bytes

Q33:

Kernel Panic: Cannot perform kext summary

Kernel Panic: Invalid frame pointer

generic

77 Bytes

A:一般情况下此时已经内核崩溃了(Kernel Panic),通常是预链接内核相关的问题造成的,尤其是 macOS 很难理解引导工具注入的内容。通过以下步骤验证:

  • Kext 加载顺序正确(没错,顺序也是重要的),Lilu.kext 必须、务必,一定排在其它所有 kext 之前;其它 kext,必须先是主插件(如 VirtualSMC),然后是它的卫星插件(如 SuperIO)
  • 大部分的 Kext 拥有可执行文件(位于 kext 内部的 Executable),剩下的 Kext 只有 plist 但是没有包含可执行文件(例如 USBPort.kext、XHCI-unspported.kext 等)
  • 不要在 config.plist 中添加多个相同的 Kext(例如,VoodooPS2Controller 中包含 VoodooInput,所以不要再单独添加)
  • 此类错误也可能会造成 Invalid frame pointer 一类的内核崩溃

Q34:

Kernel Panic: Invalid frame pointer

generic

35 Bytes

A:此部分大概率和 Booter → Quirks 相关,此部分主要和内存相关,主要涉及以下几个选项:

  • 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

generic

598 Bytes

将 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 即可:
  • SetupVirtualMap
    • 大多数主板都需要开启这个 Quirks,如果没有开启,内核崩溃会很常见;
    • 但是,部分主板却无法使用它,并且可能导致内核崩溃:
      • Intel Ice Lake 系列(十代酷睿移动端,例如 1035G1)
      • Intel Comet Lake 系列(十代酷睿桌面端,例如 i5-10400)
      • AMD B550
      • AMD A520
      • AMD TRx40
  • 另一个问题可能是 macOS 与 CR0 寄存器的写保护冲突,要解决此问题,需要先确认你的主板是否有 MAT 支持,此部分参考 Q23;
    • 确定有 MAT 支持时:
      • EnableWriteUnprotector -> False
      • RebuildAppleMemoryMap -> True
      • SyncRuntimePermissions -> True
    • 当没有 MAT 支持时:
      • EnableWriteUnprotector -> True
      • RebuildAppleMemoryMap -> False
      • SyncRuntimePermissions -> False

Q35:

Kernel Panic: AppleIntelMCEReporter

generic

35 Bytes

A:在 macOS Catalina 处理器双插槽支持被损坏,但部分 AMD 主板的固件会报告已接入多插槽处理器,因此 macOS 内置的 AppleIntelMCEReporter.kext 会造成内核崩溃。此问题通常出现在 AMD 处理器的机型上,有两种解决办法,添加一个第三方 Kext:AppleMCEReporterDisabler.kext;或编辑 config.plist,使用 Kernel → Block 功能阻止 macOS 加载 AppleIntelMCEReporter.kext(识别符:com.apple.driver.AppleTyMCEDriver,OpenCore 默认配置文件 Sample.plist 中有提供)。

Q36:

SMCLightSensor alsd: @ No iterator

AppleIntelLpssI2CController::_serviceMatchingTimeSubr: fTimerServiceMatching timed out, fNotifications 0

AppleIntelLpssI2CController::_serviceMatchingTimeSubr: fTimerServiceMatching timed out, fNotifications 0

generic

244 Bytes

A:此错误分两个部分,第一部分,LightSensor 没有匹配到可用的光传感器,这可能是你的笔记本没有,或不被支持,可先暂时关闭 SMCLightSensor.kext;第二部分,I2C 服务匹配超时,这可能是 macOS 内置的 I2C 控制程序无法匹配你的设备,解决方法,在 config.plist → Kernel → Block 中添加以下内容,并使用 VoodooI2C.kext 替代:

Comment: Prevent Apple I2C kexts from attaching to I2C controllers

Enabled: YES

Identifier: com.apple.driver.AppleIntelLpssI2C

Comment: Prevent Apple I2C kexts from attaching to I2C controllers

Enabled: YES

Identifier: com.apple.driver.AppleIntelLpssI2CController

generic

264 Bytes

Q37:选择 macOS Recovery 后,提示以下代码,并返回引导界面:

OCB: LoadImage failed – Not Found

generic

33 Bytes

A:修改 config.plist 中 Misc → Security → DmgLoading → Any/Signed,建议修改为 Any。

Q38:启动时 Kernel Panic:

Kernel Extension in backtrace:

com.apple.iokit.IOPCIFamily(2.9)[ xxxx…

com.apple.driver.AppleACPIPlatform(6.1)[ xxxx…

dependency: com.apple.driver.AppleSMC(3.1.9)[ xxxx…

dependency: com.apple.iokit.IOACPIFamily(1.4)[ xxxx…

dependency: com.apple.iokit.IOPCIFamily(2.9)[ xxxx….

generic

317 Bytes

A:可能有多种情况会遇到这个内核崩溃,这里主要讲解 X79 和 X99 平台,起因是苹果在 macOS Big Sur 修改了大部分 IOPCIFamily.kext 中的内容,因此造成的部分机型遭遇内核崩溃。由于目前(2021/6/16) Big Sur 还没有源码放出,如果没有反汇编大佬进行调试,则无从知晓真正的原因。可以考虑解决的办法如下:

  • X79/X99/X299 平台务必加上 npci=0x2000 或 npci=0x3000 这个启动参数;
  • 尝试 SSDT-RTC0-RANGE.aml 或 SSDT-UNC.aml 这两个 ACPI 补丁,可以从 OC 团队的开发堆栈里找到源文件;

Q39:跑码过程中出现禁止符号,然后字符变成乱码,如下:

A:此错误源头和 USB 强相关。首先检查 BIOS 设置:

  • 开启 USB XHCI Handoff 和 Legacy USB Support,如果安装到 SATA 接口硬盘,把 SATA 模式设置为 AHCI;

接下来有两种选择:

  • 第一种是把 U 盘插到纯 2.0 接口(外观上一般为黑色 4 针);
  • 第二种是先在 Windows 对 USB 接口进行定制,具体原因和方法见「黑苹果 Windows 定制 USB」,完成后使用定制好的 USB 文件再尝试安装;

Q40:安装 macOS Big Sur 11.3 及以上版本时,跑完进度条后见到如下界面:

A:此问题的源头来自 macOS 系统本身。苹果自 macOS Big Sur 11.3 开始修改了 USB 映射方式,导致 OpenCore 依赖的 Quirks 特性 XhciLimitPort 失效(Clover 自 r5123 开始完全是 OC 内核,因此同理)。截止 OpenCore 0.8.6 开发版,Acidanthera 团队仍未修复,估计也不太可能修复了。

简单来说,就是此时 macOS 没有找到任何键盘/鼠标/妙控板等操控设备,它以为自己运行在白苹果电脑上,于是提示用户打开秒控鼠标/妙控板的开关。至于没有检测到的原因就说来话长了,具体可参考「黑苹果 Windows 定制 USB」的前言部分。

知道原因后解决问题就比较简单,把你的鼠标键盘插到纯 USB2.0 接口(外观上一般为黑色 4 针)即可,有的机型甚至重新插拔一下都可以。进入系统后建议优先考虑定制 USB 接口。

Q41:

ifnet_attach: All kernel threads created for interface en0 have been scheduled at least once. Proceeding.

_dlil_attach_flowswitch_nexus: en0 9000 1500

IOKit Daemon (kernelmanagerd) stall[0], (240s): ‘PXSX’

generic

205 Bytes

A:通常情况下,此情况会出现在安装 macOS Big Sur,问题的源头是因为 Big Sur 完全删除了类 AirPortBrcm4360,为了兼容这个情况,acidanthera 团队从 Airportbrcmfixup.kext 中单独剔出了AirPortBrcm4360 和 AirPortBrcmNIC 注入器(injector),在安装 Big Sur 并使用 Airportbrcmfixup.kext 时,必须不能加载 AirPortBrcm4360_Injector.kext(或为其设置 MaxKernel 值 19.9.9)。

如果你的无线博通网卡是免驱动类型时(例如奋威 T919 或型号较新的苹果原装拆机卡),则完全不需要使用 Airportbrcmfixup.kext。

Q42:关于 12.0 的无线和蓝牙驱动

macOS Monterey 12.0 大幅修改了蓝牙和无线网卡的驱动框架,一是因为抛弃了 2015 年以前推出的机型支持,二是为通用控制做准备。虽然黑苹果老卡可以通过第三方驱动得到支持,但是在设置上和以往有一些区别。简单来说就是以下几点:

  • 除免驱卡外(例如奋威 T919 或其它型号较新的苹果原装拆机卡),必须使用新驱动 BlueToolFixup.kext
  • 蓝牙驱动 BrcmPatchRAM 中的注入器(BrcmBluetoothInjector.kext),不能在 12.0 中启用,会卡住。可以删除或不启用,如果你有切换多个版本系统的需求,OpenCore 还可设置 MaxKernel 值 20.99.99 ,Clover 则需要建立不同版本号的 Kext 目录下的文件夹;
  • 英特尔网卡,需要将 IntelBluetoothFirmware 升级到最新,同样不能使用 IntelBluetoothInjector.kext;
  • 其它可参考「修复蓝牙在 macOS 12.0 Monterey 的方法」;

其他部分

Q1:如何关闭 OpenCore 输出到 ESP 分区下的日志文件?

A:修改 config.plist

Misc→Debug→Target→ 0

  • 0:关闭日志记录
  • 3:允许屏幕输出日志
  • 19:允许屏幕输出 UEFI 变量日志
  • 65:在 ESP 分区根目录生成日志文件 opencore-年-月-日-时分秒.txt,但屏幕上不显示日志

Q2:macOS 安装界面是俄语?

修改 config.plist:

NVRAM → 7C436110-AB2A-4BBB-A880-FE41995C9F82 → prev-lang:kbd

  • 改类型为 data 值,内容为 7A682D48 616E773A 323532
  • 或类型为 string 值,内容为 zh-Hans:252

Q3:硬盘提示 BIError Domain 3

A:修改 config.plist:

SMBIOS 改机型为 iMacPro1,1 或 MacBookPro16,1 等 2018年及以后的机型。

Q4:卡在“找不到安装器资源”?

A:这个问题的原因可能是多种多样的:

  • 检查镜像的 md5 值是否相符
  • 某些版本的镜像是特定机型使用的,例如 Catalina 19H4 就是特定机型版本,此类情况请更换镜像系统版本
  • 对于 High Sierra 和 Mojave,需要使用终端修改时间,并断开网络
  • 对于 Catalina,请用终端验证一下系统时间是否和真实时间相差 8 小时,如果是,使用终端改为真实时间
  • 删除 drivers/UEFI 目录下的 EmuVariableUefi.efi(此项针对 Clover 用户)
  • 修改机型为最近三年,比如 MacBookPro14,1、MacBookPro15,1、iMac17,1 等等
  • 如果是双硬盘,拔掉那个不安装 macOS 的,待安装完后再插回去

Q5:进入安装界面后,找不到硬盘。

A:此问题大多数情况下是因为使用了 VBoxHfs.efi,这个驱动在某些机型上(主要是笔记本和品牌台式机)无法读取本地硬盘,解决方法是换用 HFSPlus.efi。另一种可能,请检查硬盘是否处在 RAID 模式,RAID 状态无法正常安装 macOS。

Q6:进入 macOS 后,无法挂载 EFI 分区,无论使用命令行或配置工具都不行。

A:笔者曾经遇到过这个问题,在试过无数方法后,发现是格式化硬盘的时候忘记格式化 ESP 分区?,请用命令行或 Diskgenuis 等工具格式化 ESP 分区为 FAT32 即解决问题。

Q7:首次安装跑完代码界面后,进入一个灰色的屏幕,鼠标可以移动,但是其它什么都不显示。

A:笔者在安装 Big Sur 时遇到过这个问题。首先确保排除所有 config 设置及 kext 可能的问题:主要是针对内存设置的几个 Quirks;核显的 ig-platform-id 及其它属性先删除或屏蔽;以及尝试搭配使用不同版本的 Whatevergreen.kext。以笔者遇到的例子,最终排查结果如下:这个没有任何菜单和选项的灰色界面,其实是 Recovery 模式下 macOS Base System 的第二屏幕显示的内容,这个时候尝试重新插拔一下你的显示器接口,如果你有其他显示设备,可以尝试再接一个上去完成安装。对于 macOS,首推使用 DisplayPort 接口,1.2 及以上;其次是 HDMI,4k 需要 2.0 及以上;不推荐 DVI 接口;完全不建议使用 VGA 接口以及各类转接头。

Q8:升级到 Big Sur beta 11.0.1 后,右上角图标栏有大约三个图标的空白。

A:在此案例中,是搜狗输入法未能很好适配 Big Sur 造成的,升级搜狗输入法到最新版本可解决问题。

Q9:反复检查,设置都对,但 macOS 就是一直黑屏。

A:此现象有多种原因。在 AMD 平台的案例中,请在 BIOS 中关闭 Serial Port。

Q10:进入登陆界面后,macOS 卡住,屏幕中间显示一个半透明状态  图标,类似下图:

A:此问题一般由不同步的处理器 TSC 造成,对于大部分处理器,添加 CpuTscSync 一类的 Kext 即可解决问题(VoodooTSCSync 或 CpuTscSync)。

Q11:OpenCore 更新到 0.6.8 之后,主题失效,还有系统选择界面光标“打滑”怎么办?

A:第一部分主题失效,是因为开发团队大刀阔斧修改了主题服务文件,需要搭配新的主题文件才能开启图形界面,可以从官方下载也可以下载黑苹果星球打包好的文件:

当前内容被隐藏,登陆后查看

已有110967次阅读 登录后查看

将解压后的 Resources 文件夹覆盖到 /EFI/OC/ 目录下的同名文件夹。OpenCore 0.7.0 需要将 PickerVariant 输入为 Acidanthera\GoldenGate 或其它你下载的主题名称。

第二个主题界面光标“打滑”现象修改以下选项即可解决。

Q12:

进入安装程序后,在安装界面弹出“未能安装所需的固件更新”。

A:主要出现在安装 macOS Monterey 12.x 的过程中,有两种解决方法:

  • 第一,修改 config.plist 文件 → PlatformInfo → Generic → AdviseFeatures → 修改为 True/勾选;
  • 如果第一种方法无效,第二种方法是升级 OpenCore 的版本,安装 12.0.1 建议 OpenCore 从 0.7.4 起步,升级可参考「升级引导工具的方法」;

Related Posts

好省短剧小说推文项目邀请码vip000-自由职业风向标

短剧推广,最近在各大视频平台开始呈爆发性的增长,很多小伙…

虚拟主机如何把域名解析到二级目录或以下

利用.htaccess伪静态文件绑定域名到子目录.但是前…

it培训学校怎么样?机构学习有保障吗?

  目前it行业是热门的就业选择,自然it培训也随之发展…

IT这个行业的特点

以程序员为代表的IT行业从业者有着几大特点,可以帮助大家…

达内教育董事长韩少云:“教学质量”是IT培训的磁场

一直以来,“IT培训”、“职教学生就业”等关于职业教育的…

余承东:华为没有必要下场造车,问界不做20万以下的汽车

IT之家 2 月 22 日消息,近日,华为常务董事、终端…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *