概述
本文最后更新:2021年11月3日
本文内容主要针对正在迁移到 OpenCore 这个天坑的用户,主要涉及常见的界面调整,-v 跑代码时卡住等问题,本文长期整理更新,遇到文中没有提到的问题欢迎反馈。本文涉及内容较多,可按下 Ctrl + F 或 Command + F 直接查找关键词。
新手常见错误
Q1:OCABC: Incompatible OpenRuntime r10, require r11
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!
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!
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 ()
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。下载 kext 可以看看 黑苹果星球整理的月度 kext 更新包。除此之外还有 XXX.efi is missing 之类的也是同类型错误,只是 XXX.efi 文件一般位于 /EFI/OC/Drivers/ 目录下。
Q7:Start RandomSeed
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
以上 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
- 部分硬件平台并不能很好的适应这个 Quirk,例如部分 Z390 和绝大部分的 X99 和 X299。它的工作方式是占用 MMIO 区域并删除运行时属性,使它们可用作存放内核的空间,注意这个 Quirk 在绝大部分的系统上并不要求一定要填写 MmioWhiteList,但在某些非常难安装的平台(例如:线程撕裂者 TRX40 19H 或 10300H),在启用此 Quirk 的同时还需设置 MmioWhiteList,使用 Debug 版 OpenCore 并开启 DevirtualiseMmio,你会在日志中找到类似以下内容:
-
将 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:Err(0xE), 0 @ LocHB 71B4903C-14EC-42C4-BDC6-CE1449930E49
[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。
- Kernel→Quirks→DisableIoMapper→True/Yes
Q9: [EB|#LOG:EXITBS:START]
[EB|#LOG:EXITBS:START]
A:参考 Q7,因为基本上是同样的原因。
Q10:IOConsoleUsers: time(0) 0->0, lin 0, llk1,
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
- 更多参阅 WhateverGreen 补丁
启动界面&代码界面部分
Q10:启动界面看不到 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
Q11:选择启动项后黑屏
A:修改 config.plist:
UEFI→Output→ProvideConsoleGop→True/Yes
Booter→Quirks→RebuildAppleMemoryMap→True/Yes
如果未能解决问题,请使用 Debug 版本 OpenCore,这样会提示更多信息。
Q12:如何将 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
下载 OcBinaryData,点此直达官方地址;或下载黑苹果星球整理的文件包:
- 加载 OpenCanopy.efi
- Drivers
Q13:如何固定选择启动项?
A:修改 config.plist:
Misc→Security→AllowSetDefault→True/Yes
在启动界面选择想要设置的项,按下 Ctrl + Enter,即可。
Q14:OCB: OcScanForBootEntries failure - Not Found
OCB: OcScanForBootEntries failure - Not Found
A:这是由于 OpenCore 无法根据当前的 ScanPolicy 设置找到任何驱动器,此项设置为 0 将允许显示所有引导选项
修改 config.plist:Misc→Security→ScanPolicy→ 0
Q15:OCB: failed to match a default boot option
OCB: failed to match a default boot option
A:原因及解决方法同 Q14。
Q16:OCB: StartImage failed - Aborted
OCB: StartImage failed - Aborted
Halting on critical error
A:请升级 OpenCore 到 0.5.9 及更高版本,这主要是由错误的编译或文件版本不对应造成。
OpenCore 的关键文件必须来自同一版本:BOOTx64.efi、OpenCore.efi、OpenRuntime.efi、OpenCanopy.efi(用于支持官方主题服务)
Q17: Forcing CS_RUNTIME for entitlement: com.apple.rootless.restricted-block-devices
Forcing CS_RUNTIME for entitlement: com.apple.rootless.restricted-block-devices
A:这个一般出现在安装 macOS 11.0 Big Sur 的过程中,其实并没有卡住,注意观察硬盘灯,耐心等待,一般3-5分钟就会过。
Q18:SetMulticastList() ===>
SetMulticastList() \=\=\=>
SetMylticastList() <\=\=\=
A:同 Q17。
Q19:OCB:OcScwfurBootEntries failure - not found
OCB:OcScwfurBootEntries failure - not found
Halting on critical error
A:配置文件有错误,建议重新新建 config.plist。注:此错误新手遇到比较多,请注意 OpenCore 和 Clover 的 config 文件并不通用!
Q20:ERROR allocating 0x3362 pages at 0x0000000001033000 alloc type 2
ERROR allocating 0x3362 pages at 0x0000000001033000 alloc type 2
Error loading kernel cache (0x9)
Halting on critical error
A:原因一般是在 /EFI/OC/Drivers 目录下引入了很多 Clover 使用的 .efi 文件。并不是 Clover 适用的 .efi 文件 OpenCore 也适用,具体看:.efi 文件说明
解决办法是删除 Clover 使用的 .efi 文件,OpenCore 最基础只需保留 HfsPlus.efi,OpenRuntime.efi,OpenCanopy.efi(用于支持官方主题),其余都删除。
Q21:OCS:No schema for Disabled at 12 index
OCS:No schema for Disabled at 12 index
OC:Driver HfaPlus.efi at 0 cannot be found!
Halting on critical error
A:默认的 OpenCore 不含 HFSPlus.efi 文件,需要添加到 /EFI/OC/Drivers 目录下。
Q22:OCB:StartImage failed - Already started
OCB:StartImage failed - Already started
Halting on critical error
A:一般发生在引导项选择时选择了 EFI 分区。解决方法:不要选择 EFI 分区,请直接选择系统分区。
Q23:OCUI: Failed to load images
OCUI: Failed to load images
Halting on critical error
A:开启了 OpenCore 的 UI 界面,但是没有配置 OC 的 Resource 文件,请下载并到 /EFI/OC/Resource/ 文件。
下载 OcBinaryData,点此可直达官方地址;或下载黑苹果星球整理的文件包:
Q24:卡在主板 LOGO 界面
A:常见于 GA 主板,修改 config.plist→UEFI→Drivers 取消 AudioDxe.efi,删除或在名称前添加 # 号,暂时禁用。另一种方案,断电并拔掉电池静置 5-10 分钟,再开机。
Q25:OC: Invalid Vault mode!
OC: Invalid Vault mode!
A:修改 config.plist 中:
Misc→Security→Vault→Optional
大概率是拼写错误,将 Vault 值设置为 Optional,注意大小写敏感。
Q26:OC: OcAppleGenericInputTimerQuirkExit Status
OC: OcAppleGenericInputTimerQuirkExit Status - Success
OC: OcAppleGenericInputKeycodeExit Status - Success
A:解决方法:
- Intel:
- BIOS 中解锁 CFG-Lock,没有该选项的情况开启以下选项:
- AppleXcpmCfgLock→True/Yes
- AppleCpuPmCfgLock→True/Yes
- BIOS 中解锁 CFG-Lock,没有该选项的情况开启以下选项:
- AMD 系统需要内核补丁;
如果未能解决问题,请使用 Debug 版本 OpenCore,这样会提示更多信息。
Q27:OCABC: Memory pool allocation failure - Not Found
OCABC: Memory pool allocation failure - Not Found
A:这是由于错误的 BIOS 设置 和/或 错误的 Booter Quirks 值,请确认 Booter→Quirks 设置正确,并验证 BIOS 设置:
- 开启 Above 4G Decoding
- 关闭 CSM
- 升级 BIOS 到最新版本
Q28:OCS: No schema for DSDT, KernelAndKextPatch, RtVariable, SMBIOS, SystemParameters
OCS: No schema for DSDT, KernelAndKextPatch, RtVariable, SMBIOS, SystemParameters...
A:这基本上是配置文件结构不正确造成的,请勿使用 Clover 的 config.plist 引导 OpenCore,以及版本不匹配的 OpenCore Configurator 配置 config.plist。
建议是,能学会树形目录编辑器就尽量学,例如 ProperTree。
Q29:apfs_module_start
apfs_module_start
A:卡在这个位置大部分都是 Z390 主板,需要添加一个 ACPI 补丁,内容如下:
Comment: Fix RTC _STA bug
Find: A00A9353 54415301
Replace: A00A910A FF0BFFFF
Q30:OCB:LoadImage failed - Unsupported
OCB:LoadImage failed - Unsupported
Halting on critical error
A:一般发生在进入 Recovery 时。解决方法是在 /EFI/OC/Drivers/ 目录下添加 HFSPlus.efi 或 VBoxHfs.efi,一般使用前者。
Q31:AppleUSBXHCI::interruptOccurred: clearing change bits on unused port...
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
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
其它解决办法:
- 检查镜像 md5;
- 将 U 盘换到 USB2.0 或 USB3.1 的接口;
- 添加解除 15 端口限制的补丁,或修改 config.plist→Kernel→Quirks→XhciPortLimit
Q32:VM Swap Subsystem is ON
VM Swap Subsystem is ON
A:修改 config.plist
Kernel→Quirks→ThirdPartyDrivers→ Off/False
Q33:Kernel Extensions in backtrace
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)[...]@...
A:这个错误基本是是由 Framebuffer 设置不当造成的,例如7代酷睿使用了9代酷睿的核显 Framebuffer。
解决方法:修改合适的核显 Framebuffer 信息,可先删除 DeviceProperties 下有关核显的数值。其它参考:驱动 Intel 核显。
Q34:OCSB: No suitable signature - Security Violation
OCSB: No suitable signature - Security Violation
OCB: Apple Secure Boot prohibits this boot entry, enforcing!
OCB: LoadImage failed - Security Violation
A:这是由于过时的 Apple Secure Boot manifests 导致的,如果你在 OpenCore 中设置了 SecureBootModel,就会导致加载失败,这些文件丢失的原因实际上是 macOS 中的 BUG。解决方法(任选其一):
- Misc→Security→SecureBootModel→ Default 或 Disabled
- 重新安装 macOS 到最新版本
- 从 /usr/standalone/i386 拷贝 Secure Boot manifests 到 /Volumes/Preboot/
/System/Library/CoreServices
Q35:[EB|`LD:OFS] Err(0xE) @ OPEN
[EB|`LD:OFS] Err(0xE) @ OPEN
(System\\Library\\PrelinkedKernels\\prelinkedkernel)
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 -
最后重启,注意你可能需要关闭 JumpstartHotplug。
Q36:OCS: No schema for EnableForAll at 0 index
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>!
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
Q37:OC: Driver AudioDxe.efi at 0 cannot be found!
OC: Driver AudioDxe.efi at 0 cannot be found!
Halting on critical error
A:在 config.plist 中指定了加载某些文件,实际路径里却不存在。只是此问题指的是 .efi 驱动。此案例中,请检查 /EFI/OC/Driver/ 目录下是否存在 AudioDxe.efi,不存在的话请添加。如果不想要这个驱动的话,请在 config.plist → UEFI → Drivers 中取消该文件,其它情况以此类推。
Q38:OsxAptioFix3Drv: Starting overrides for \System\Library\CoreServices\boot.efi
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 *
A:如果是 OpenCore,请不要使用 OsxAptioFix3Drv.efi 或其它类似的内存修复驱动,因为 OpenCore 已经自备了 OpenRuntime.efi 来解决内存问题。如果是 Clover,r5120 以下版本请使用 AptioMemoryFix.efi,r5120 及以上版本使用 OcQuirks.efi。
Q39:Failed to parse real field of type 1
Failed to parse real field of type 1
A:此错误一般是因为使用了 Xcode 造成,Xcode 把 HaltLevel 的 integer 值类型自动改成了 real,解决办法是不要使用 Xcode,把 HaltLevel 下的数字值类型修改回 integer:
#以下是错误的
\#修正为
<key>HaltLevel</key>
<integer>2147483648</integer>
Q40:Generation from SMC report as 2
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'
A:此错误一般 ssdt 相关,主要表现在笔记本机型上。在此案例中,当用户设备中具备 ACPI0008 (Light Sensor device) 时,macOS 会启动 AppleSMCLMU.kext 与该设备匹配并且需要 LightSensor 的 SMC 密钥。因此,删除 SSDT-ALS0.aml,或进一步补充 ssdt 内容完全屏蔽该设备,一般即可解决该问题。
Q41:IOConsoleUsers: gIOScreenLockState 3
IOConsoleUsers: gIOScreenLockState 3, hs 0, bs 0, now 0, sm 0x0
之后黑屏
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
Q42: Kernel Panic: Cannot perform kext summary
Kernel Panic: Cannot perform kext summary
Kernel Panic: Invalid frame pointer
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 一类的内核崩溃
Q43:Kernel Panic: Invalid frame pointer
Kernel Panic: Invalid frame pointer
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
- 部分硬件平台并不能很好的适应这个 Quirk,例如部分 Z390 和绝大部分的 X99 和 X299。它的工作方式是占用 MMIO 区域并删除运行时属性,使它们可用作存放内核的空间,注意这个 Quirk 在绝大部分的系统上并不要求一定要填写 MmioWhiteList,但在某些非常难安装的平台(例如:线程撕裂者 TRX40 19H 或 10300H),在启用此 Quirk 的同时还需设置 MmioWhiteList,使用 Debug 版 OpenCore 并开启 DevirtualiseMmio,你会在日志中找到类似以下内容:
-
将 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
- 确定有 MAT 支持时:
Q44:Kernel Panic: AppleIntelMCEReporter
Kernel Panic: AppleIntelMCEReporter
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 中有提供)。
Q45:SMCLightSensor alsd: @ No iterator
SMCLightSensor alsd: @ No iterator
AppleIntelLpssI2CController::_serviceMatchingTimeSubr: fTimerServiceMatching timed out, fNotifications 0
AppleIntelLpssI2CController::_serviceMatchingTimeSubr: fTimerServiceMatching timed out, fNotifications 0
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
Q46:选择 macOS Recovery 后,提示OCB: LoadImage failed - Not Found
OCB: LoadImage failed - Not Found
A:修改 config.plist 中 Misc → Security → DmgLoading → Any/Signed,建议修改为 Any。
Q47:启动时 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....
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 团队的开发堆栈里找到源文件;
Q48:跑码过程中出现禁止符号,然后字符变成乱码,如下:
A:此错误源头和 USB 强相关。首先检查 BIOS 设置:
- 开启 USB XHCI Handoff 和 Legacy USB Support,如果安装到 SATA 接口硬盘,把 SATA 模式设置为 AHCI;
接下来有两种选择: - 第一种是把 U 盘插到纯 2.0 接口(外观上一般为黑色 4 针);
- 第二种是先在 Windows 对 USB 接口进行定制,具体原因和方法见「黑苹果 Windows 定制 USB」,完成后使用定制好的 USB 文件再尝试安装;
Q49:安装 macOS Big Sur 11.3 及以上版本时,跑完进度条后见到如下界面:
A:此问题的源头来自 macOS 系统本身。苹果自 macOS Big Sur 11.3 开始修改了 USB 映射方式,导致 OpenCore 依赖的 Quirks 特性 XhciLimitPort 失效(Clover 自 r5123 开始完全是 OC 内核,因此同理)。截止 OpenCore 0.7.6 开发版,Acidanthera 团队仍未修复,估计也不太可能修复了。
简单来说,就是此时 macOS 没有找到任何键盘/鼠标/妙控板等操控设备,它以为自己运行在白苹果电脑上,于是提示用户打开秒控鼠标/妙控板的开关。至于没有检测到的原因就说来话长了,具体可参考「黑苹果 Windows 定制 USB」的前言部分。
知道原因后解决问题就比较简单,把你的鼠标键盘插到纯 USB2.0 接口(外观上一般为黑色 4 针)即可,有的机型甚至重新插拔一下都可以。进入系统后建议优先考虑定制 USB 接口。
Q50:ifnet_attach: All kernel threads created for interface en0 have been scheduled at least once. Proceeding.
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'
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。
Q51:关于 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 的方法」;
其他部分
Q52:如何关闭 OpenCore 输出到 ESP 分区下的日志文件?
A:修改 config.plist
Misc→Debug→Target→ 0
- 0:关闭日志记录
- 3:允许屏幕输出日志
- 19:允许屏幕输出 UEFI 变量日志
- 65:在 ESP 分区根目录生成日志文件 opencore-年-月-日-时分秒.txt,但屏幕上不显示日志
Q53:macOS 安装界面是俄语?
修改 config.plist:
NVRAM → 7C436110-AB2A-4BBB-A880-FE41995C9F82 → prev-lang:kbd
- 改类型为 data 值,内容为 7A682D48 616E773A 323532
- 或类型为 string 值,内容为 zh-Hans:252
Q54:硬盘提示 BIError Domain 3
A:修改 config.plist:
SMBIOS 改机型为 iMacPro1,1 或 MacBookPro16,1 等 2018年及以后的机型。
Q55:卡在“找不到安装器资源”?
A:这个问题的原因可能是多种多样的:
- 检查镜像的 md5 值是否相符
- 某些版本的镜像是特定机型使用的,例如 Catalina 19H4 就是特定机型版本,此类情况请更换镜像系统版本
- 对于 High Sierra 和 Mojave,需要使用终端修改时间,并断开网络
- 对于 Catalina,请用终端验证一下系统时间是否和真实时间相差 8 小时,如果是,使用终端改为真实时间
- 删除 drivers/UEFI 目录下的 EmuVariableUefi.efi(此项针对 Clover 用户)
- 修改机型为最近三年,比如 MacBookPro14,1、MacBookPro15,1、iMac17,1 等等
- 如果是双硬盘,拔掉那个不安装 macOS 的,待安装完后再插回去
Q56:进入安装界面后,找不到硬盘。
A:此问题大多数情况下是因为使用了 VBoxHfs.efi,这个驱动在某些机型上(主要是笔记本和品牌台式机)无法读取本地硬盘,解决方法是换用 HFSPlus.efi。另一种可能,请检查硬盘是否处在 RAID 模式,RAID 状态无法正常安装 macOS。
Q57:进入 macOS 后,无法挂载 EFI 分区,无论使用命令行或配置工具都不行。
A:笔者曾经遇到过这个问题,在试过无数方法后,发现是格式化硬盘的时候忘记格式化 ESP 分区😂,请用命令行或 Diskgenuis 等工具格式化 ESP 分区为 FAT32 即解决问题。
Q58:首次安装跑完代码界面后,进入一个灰色的屏幕,鼠标可以移动,但是其它什么都不显示。
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 接口以及各类转接头。
Q59:升级到 Big Sur beta 11.0.1 后,右上角图标栏有大约三个图标的空白。
A:在此案例中,是搜狗输入法未能很好适配 Big Sur 造成的,升级搜狗输入法到最新版本可解决问题。
Q60:反复检查,设置都对,但 macOS 就是一直黑屏。
A:此现象有多种原因。在 AMD 平台的案例中,请在 BIOS 中关闭 Serial Port。
Q61:进入登陆界面后,macOS 卡住,屏幕中间显示一个半透明状态 图标,类似下图:
[
](https://oss.heipg.cn/2020/07/1607584065-eb479605271a1f0.png)A:此问题一般由不同步的处理器 TSC 造成,对于大部分处理器,添加 CpuTscSync 一类的 Kext 即可解决问题(VoodooTSCSync 或 CpuTscSync)。
Q62:OpenCore 更新到 0.6.8 之后,主题失效,还有系统选择界面光标“打滑”怎么办?
A:第一部分主题失效,是因为开发团队大刀阔斧修改了主题服务文件,需要搭配新的主题文件才能开启图形界面,可以从官方下载也可以下载黑苹果星球打包好的文件:
将解压后的 Resources 文件夹覆盖到 /EFI/OC/ 目录下的同名文件夹。OpenCore 0.7.0 需要将 PickerVariant 输入为 Acidanthera\GoldenGate 或其它你下载的主题名称。
第二个主题界面光标“打滑”现象修改以下选项即可解决。
[
](https://oss.heipg.cn/2021/04/1619617543-232d08b94ad5010.png)
Q63:进入安装程序后,在安装界面弹出“未能安装所需的固件更新”。
A:主要出现在安装 macOS Monterey 12.0.1 的过程中,有两种解决方法:
-
第一,修改 config.plist 文件 → PlatformInfo → Generic → AdviseFeatures → 修改为 True/勾选;
-
如果第一种方法无效,第二种方法是升级 OpenCore 的版本,安装 12.0.1 建议 OpenCore 从 0.7.4 起步,升级可参考「升级引导工具的方法」;## 目标
去除 iconfinder 上 icon 的水印 -
原理
利用水印像素点和原图像素点颜色合并的原理,如果拥有加过水印的图片和水印图片,就可以反向推出原图原像素点的颜色;前提是你得拥有他的水印图片