概述
本文最後更新:2021年11月3日
本文內容主要針對正在遷移到 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。下載 kext 可以看看 黑蘋果星球整理的月度 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
全選
複製
以上 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
全選
複製
- 將 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。
- 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
- 更多參閱 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 (或其它你下載的主題)
- Boot
- UEFI
- Drivers
- 載入 OpenCanopy.efi
- Drivers
下載 OcBinaryData,點此直達官方地址;或下載黑蘋果星球整理的文件包:
當前隱藏內容被隱藏
已有86975次閱讀
將解壓后的 Resources 資料夾覆蓋到 /EFI/OC/ 目錄下的同名資料夾。
Q4:如何固定選擇啟動項?
A:修改 config.plist:
Misc→Security→AllowSetDefault→True/Yes
在啟動介面選擇想要設置的項,按下 Ctrl + Enter,即可。
Q5:
OCB: OcScanForBootEntries failure - Not Found
全選
複製
A:這是由於 OpenCore 無法根據當前的 ScanPolicy 設置找到任何驅動器,此項設置為 0 將允許顯示所有引導選項
修改 config.plist:Misc→Security→ScanPolicy→ 0
Q6:
OCB: failed to match a default boot option
全選
複製
A:原因及解決方法同 Q5。
Q7:
OCB: StartImage failed - Aborted
Halting on critical error
全選
複製
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
全選
複製
A:這個一般出現在安裝 macOS 11.0 Big Sur 的過程中,其實並沒有卡住,注意觀察硬碟燈,耐心等待,一般3-5分鐘就會過。
Q9:
SetMulticastList() ===>
SetMylticastList() <===
全選
複製
A:同 Q8。
Q10:
OCB:OcScwfurBootEntries failure - not found
Halting on critical error
全選
複製
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
全選
複製
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
全選
複製
A:默認的 OpenCore 不含 HFSPlus.efi 文件,需要添加到 /EFI/OC/Drivers 目錄下。
Q13:
OCB:StartImage failed - Already started
Halting on critical error
全選
複製
A:一般發生在引導項選擇時選擇了 EFI 分區。解決方法:不要選擇 EFI 分區,請直接選擇系統分區。
Q14:
OCUI: Failed to load images
Halting on critical error
全選
複製
A:開啟了 OpenCore 的 UI 介面,但是沒有配置 OC 的 Resource 文件,請下載並複製到 /EFI/OC/Resource/ 文件。
下載 OcBinaryData,點此可直達官方地址;或下載黑蘋果星球整理的文件包:
當前隱藏內容被隱藏
已有86975次閱讀
Q15:卡在主板 LOGO 介面
A:常見於 GA 主板,修改 config.plist→UEFI→Drivers 取消 AudioDxe.efi,刪除或在名稱前添加 # 號,暫時禁用。另一種方案,斷電並拔掉電池靜置 5-10 分鐘,再開機。
Q16:
OC: Invalid Vault mode!
全選
複製
A:修改 config.plist 中:
Misc→Security→Vault→Optional
大概率是拼寫錯誤,將 Vault 值設置為 Optional,注意大小寫敏感。
Q17:
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,這樣會提示更多資訊。
Q18:
OCABC: Memory pool allocation failure - Not Found
全選
複製
A:這是由於錯誤的 BIOS 設置 和/或 錯誤的 Booter Quirks 值,請確認 Booter→Quirks 設置正確,並驗證 BIOS 設置:
- 開啟 Above 4G Decoding
- 關閉 CSM
- 升級 BIOS 到最新版本
Q19:
OCS: No schema for DSDT, KernelAndKextPatch, RtVariable, SMBIOS, SystemParameters...
全選
複製
A:這基本上是配置文件結構不正確造成的,請勿使用 Clover 的 config.plist 引導 OpenCore,以及版本不匹配的 OpenCore Configurator 配置 config.plist。
建議是,能學會樹形目錄編輯器就盡量學,例如 ProperTree。
Q20:
apfs_module_start
全選
複製
A:卡在這個位置大部分都是 Z390 主板,需要添加一個 ACPI 補丁,內容如下:
Comment: Fix RTC _STA bug
Find: A00A9353 54415301
Replace: A00A910A FF0BFFFF
全選
複製
Q21:
OCB:LoadImage failed - Unsupported
Halting on critical error
全選
複製
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
全選
複製
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
Q23:
VM Swap Subsystem is ON
全選
複製
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)[...]@...
全選
複製
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
全選
複製
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
Q26:
[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。
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>!
全選
複製
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
全選
複製
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 *
全選
複製
A:如果是 OpenCore,請不要使用 OsxAptioFix3Drv.efi 或其它類似的記憶體修復驅動,因為 OpenCore 已經自備了 OpenRuntime.efi 來解決記憶體問題。如果是 Clover,r5120 以下版本請使用 AptioMemoryFix.efi,r5120 及以上版本使用 OcQuirks.efi。
Q30:
Failed to parse real field of type 1
全選
複製
A:此錯誤一般是因為使用了 Xcode 造成,Xcode 把 HaltLevel 的 integer 值類型自動改成了 real,解決辦法是不要使用 Xcode,把 HaltLevel 下的數字值類型修改回 integer:
# 以下是錯誤的
<key>HaltLevel</key>
<real>2147483648</real>
# 修正為
<key>HaltLevel</key>
<integer>2147483648</integer>
全選
複製
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'
全選
複製
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
之後黑屏
全選
複製
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
全選
複製
Q33:
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 一類的內核崩潰
Q34:
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
全選
複製
- 將 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 支持時:
Q35:
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 中有提供)。
Q36:
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
全選
複製
Q37:選擇 macOS Recovery 后,提示以下程式碼,並返回引導介面:
OCB: LoadImage failed - Not Found
全選
複製
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....
全選
複製
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.7.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'
全選
複製
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 卡住,螢幕中間顯示一個半透明狀態 圖標,類似下圖:
[
](https://oss.heipg.cn/2020/07/1607584065-eb479605271a1f0.png)A:此問題一般由不同步的處理器 TSC 造成,對於大部分處理器,添加 CpuTscSync 一類的 Kext 即可解決問題(VoodooTSCSync 或 CpuTscSync)。
Q11:OpenCore 更新到 0.6.8 之後,主題失效,還有系統選擇介面游標「打滑」怎麼辦?
A:第一部分主題失效,是因為開發團隊大刀闊斧修改了主題服務文件,需要搭配新的主題文件才能開啟圖形介面,可以從官方下載也可以下載黑蘋果星球打包好的文件:
當前隱藏內容被隱藏
已有86975次閱讀
將解壓后的 Resources 資料夾覆蓋到 /EFI/OC/ 目錄下的同名資料夾。OpenCore 0.7.0 需要將 PickerVariant 輸入為 Acidanthera\GoldenGate 或其它你下載的主題名稱。
第二個主題介面游標「打滑」現象修改以下選項即可解決。
[
](https://oss.heipg.cn/2021/04/1619617543-232d08b94ad5010.png)
Q12:
進入安裝 程式后,在安裝介面彈出「未能安裝所需的固件更新」。
A:主要出現在安裝 macOS Monterey 12.0.1 的過程中,有兩種解決方法:
- 第一,修改 config.plist 文件 → PlatformInfo → Generic → AdviseFeatures → 修改為 True/勾選;
- 如果第一種方法無效,第二種方法是升級 OpenCore 的版本,安裝 12.0.1 建議 OpenCore 從 0.7.4 起步,升級可參考「升級引導工具的方法」;