本部分適用於無法引導OpenCore,macOS 或 macOS 內部有問題的用戶。 如果您對卡在 macOS 引導過程中的確切位置感到困惑,請閱讀 macOS引導過程[1] 頁面可以幫助您了解精簡信息。
卡在 no vault provided!將 config.plist 配置文件中的 Misc -> Security -> Vault 設置為:
如果已經執行過sign.command,則由於已插入256位元組RSA-2048籤名,因此需要還原OpenCore.efi文件。可以在此處獲取OpenCore.efi的新副本: OpenCorePkg[2]
注意:Vault和FileVault是兩個獨立的東西,有關更多詳細信息,請參閱 Security and FileVault[3]
卡在 OC: Invalid Vault mode這可能是一個拼寫錯誤,在選擇的 OpenCore 是區分大小寫,因此,請務必仔細檢查,Optional 是進入其下的正確方法 Misc -> Security -> Vault
卡在 EndRandomSeed幾個問題:
ProvideConsoleGop可能會丟失,因為這是過渡到下一個屏幕所必需的,它最初是 AptioMemoryFix 的一部分,但由於此問題現在已在 OpenCore 中。可以在 UEFI -> Output 下找到缺少 內核補丁[4] (僅適用於AMD CPU,請確保它們是 OpenCore 補丁,而不是 Clover。Clover 中的 MatchOS在 OpenCore 具有MinKernel和Maxkernel時使用Maxkernel)IgnoreInvalidFlexRatio缺少,這對於Broadwell和更老的人是必需的。不適用於AMD和Skylake或更高版本AppleXcpmExtraMsrs可能需要,這通常是指macOS本身不支持的奔騰,HEDT和其他奇怪的系統。不要在AMD上使用SetupVirtualMap 可能取決於固件需要,通常應避免這種奇怪現象,但是大多數技嘉用戶和較舊的硬體(Broadwell和更早版本)將需要這種奇怪現象來引導。RebuildAppleMemoryMap 可能不喜歡您的固件,因此不建議禁用此功能,但某些筆記本電腦和某些臺式機可能需要禁用此功能另一個可能的問題是,某些用戶會忘記或無法禁用BIOS中的CFG-Lock(特別是與用於電源管理的鎖定0xE2 MSR位有關,顯然更安全地關閉CFG-Lock)。**請注意,這僅適用於Intel用戶,不適用於AMD。**發生這種情況時,有幾個可能的解決方法:
Enable AppleXcpmCfgLock和AppleCpuPmCfgLock,PKG_CST_CNFIG_CONTROL分別在XNU和AppleIntelCPUPowerManagement中禁用。不建議使用長期解決方案,因為這可能會導致不穩定。卡在 [EB|#LOG:EXITBS:START]實際上這是完全相同的錯誤,EndRandomSeed因此所有相同的修復都適用(10.15.4及更高版本更改了那些好奇的調試協議):
ProvideConsoleGop可能會丟失,因為這是過渡到下一個屏幕所必需的,它最初是AptioMemoryFix的一部分,但由於此問題現在已在OpenCore中。可以在UEFI->輸出下找到缺少內核補丁[6](僅適用於AMD CPU,請確保它們是OpenCore補丁,而不是Clover。Clover MatchOS在OpenCore具有MinKerneland時使用Maxkernel)IgnoreInvalidFlexRatio缺少,這對於Broadwell和更老的人是必需的。不適用於AMD和Skylake或更高版本AppleXcpmExtraMsrs可能需要,這通常是指macOS本身不支持的奔騰,HEDT和其他奇怪的系統。不要在AMD上使用SetupVirtualMap 可能取決於固件需要,通常應避免這種奇怪現象,但是大多數技嘉用戶和較舊的硬體(Broadwell和更早版本)將需要這種奇怪現象來引導。RebuildAppleMemoryMap 可能不喜歡您的固件,因此不建議禁用此功能,但某些筆記本電腦和某些臺式機可能需要禁用此功能另一個可能的問題是,某些用戶會忘記或無法禁用BIOS中的CFG-Lock(特別是與用於電源管理的鎖定0xE2 MSR位有關,顯然更安全地關閉CFG-Lock)。**請注意,這僅適用於Intel用戶,不適用於AMD。**發生這種情況時,有幾個可能的解決方法:
Enable AppleXcpmCfgLock和AppleCpuPmCfgLock,PKG_CST_CNFIG_CONTROL分別在XNU和AppleIntelCPUPowerManagement中禁用。不建議使用長期解決方案,因為這可能會導致不穩定。看不到macOS分區要檢查的主要內容:
ScanPolicy 設置為 0 將顯示所有驅動器
具有正確的固件驅動程序,例如HfsPlus (注意ApfsDriverLoader不應在0.5.8中使用)
在 config.plist UEFI-> Quirks中將UnblockFsConnect設置為True。某些HP系統需要
設置
UEFI -> APFS
為查看基於APFS的驅動器:
選擇器選擇後黑屏這是由於缺少 ConsoleGOP,請在您的配置下啟用它:
UEFI -> Output -> ProvideConsoleGop如果這沒有幫助,試試換用Debug[8]的OpenCore.efi,並將BOOTx64.efi複製到你的EFI中替換。這將顯示有關您的Hackintosh實際卡住位置的更多信息。
卡在 OC: OcAppleGenericInput... - Success這實際上不是錯誤,相反,OpenCore 不會向您顯示所有調試信息。這是在內核加載之前/之時,因此我們需要檢查以下內容:
CFG鎖在BIOS中禁用或 AppleCpuPmCfgLock與AppleCpuPmCfgLock在內核中啟用- > quirkRyzen/Threadripper(17h)[9]Bulldozer/Jaguar(15h/16h)[10]確認您已向配置中添加了正確的內核補丁(請記住,使用OpenCore補丁MinKernel,MaxKernel而 Clover中使用 MatchOS 值)如果這沒有幫助,試試換用Debug[11]的OpenCore.efi,並將BOOTx64.efi複製到你的EFI中替換。這將顯示有關您的Hackintosh實際卡住位置的更多信息。
卡在 OCB: OcScanForBootEntries failure - Not Found這是由於 OpenCore 無法使用當前的 ScanPolicy 找到任何驅動器,設置為0將允許顯示所有引導選項
Misc -> Security -> ScanPolicy -> 0卡在 OCB: failed to match a default boot option與修補程序相同OCB: OcScanForBootEntries failure - Not Found,OpenCore 無法使用當前的 ScanPolicy 找到任何驅動器,設置為0將會顯示所有引導選項
Misc -> Security -> ScanPolicy -> 0卡在 OCABC: Memory pool allocation failure - Not Found這是由於錯誤的BIOS設置或錯誤的Booter值。確保 config.plist Booter-> Quirks 是正確的,並驗證您的BIOS設置:
CSM已禁用(啟用Windows8.1 / 10 WHQL模式可以在某些板上執行相同的操作)BIOS是最新的(Z390和HEDT的固件寫得不好)卡在 OCS: No schema for DSDT, KernelAndKextPatch, RtVariable, SMBIOS, SystemParameters...這是由於將 Clover 配置與 OpenCore 一起使用,或者是由於使用了Mackie的 Clover 和 OpenCore Configurator 之類的配置器。您需要重新開始並進行新的配置,或者弄清楚需要從配置中刪除的所有垃圾。這就是為什麼我們不支持配置器的原因,它們以這些問題而聞名
卡在 OC: Driver XXX.efi at 0 cannot be found確認你的 EFI/OC/Drivers 與你的 config.plist UEFI -> Drivers 是匹配的
請注意,這些條目區分大小寫。
卡在 Buffer Too Small卡在 Plist only kext has CFBundleExecutable key丟失或者 Executable path 執行路徑不正確
收到 "Failed to parse real field of type 1"將一個值設置為real不應設置的值,通常是Xcode HaltLevel意外轉換的:
<key>HaltLevel</key>
<real>2147483648</real>
要修復, 將 real 和 integer 交換下:
<key>HaltLevel</key>
<integer>2147483648</integer>
當 SMBIOS 是一個不被當時 MacOS 所支持,確保值在設定發生這個錯誤PlatformInfo->Generic與Automatic啟用。提示支持的SMBIOS:
Couldn't allocate runtime area errors參閱 Fixing KASLR slide values[17]
沒有添加SSDT因此,對於OpenCore,在ACPI文件周圍添加了一些額外的安全檢查,尤其是表長度標頭必須等於文件大小。實際上,這是編譯文件時iASL的錯誤。如何找到它的示例:
* Original Table Header:
* Signature "SSDT"
* Length 0x0000015D (349)
* Revision 0x02
* Checksum 0xCF
* OEM ID "ACDT"
* OEM Table ID "SsdtEC"
* OEM Revision 0x00001000 (4096)
* Compiler ID "INTL"
* Compiler Version 0x20190509 (538510601)
該Length和checksum值是我們所關注的,所以如果我們的SSDT其實就是那麼347個字節,我們要改變Length對0x0000015B (347)(該015B是HEX)
真正解決這個問題最好的辦法就是抓住的IASL或Acidanthera的副本新副本MaciASL[18]和改造的SSDT
引導OpenCore重新引導至BIOSEFI文件夾結構不正確,請確保所有OC文件都位於ESP(EFI系統分區)上的EFI文件夾中Directory Structure from OpenCore's DOCOCABC: 不兼容的OpenRuntime r4,要求r10已過時的 OpenRuntime.efi,請確保 BOOTx64.efi,OpenCore.efi和OpenRuntime都來自完全相同的構建。任何不匹配的內容都會中斷啟動
注意:FwRuntimeServices已在0.5.7及更高版本中重命名為OpenRuntime。【未完待續】
參考資料[1]macOS引導過程: ./troubleshooting/boot.md
[2]OpenCorePkg: https://github.com/acidanthera/OpenCorePkg/releases
[3]Security and FileVault: ./post-install/security.md
[4]內核補丁: https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore
[5]修正CFG Lock: /extras/msr-lock.md
[6]內核補丁: https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore
[7]修正CFG Lock: https://github.com/dortania/OpenCore-Desktop-Guide/blob/master/extras/msr-lock.md
[8]Debug: https://github.com/acidanthera/OpenCorePkg/releases
[9]Ryzen/Threadripper(17h): https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/17h
[10]Bulldozer/Jaguar(15h/16h): https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/15h_16h
[11]Debug: https://github.com/acidanthera/OpenCorePkg/releases
[12]修補MSR E2: https://github.com/dortania/OpenCore-Desktop-Guide/blob/master/extras/msr-lock.md
[13]OpenUsbKbDxe: https://github.com/acidanthera/OpenCorePkg/releases
[14]OpenUsbKbDxe: https://github.com/acidanthera/OpenCorePkg/releases
[15]OpenUsbKbDxe: https://github.com/acidanthera/OpenCorePkg/releases
[16]OpenUsbKbDxe: https://github.com/acidanthera/OpenCorePkg/releases
[17]Fixing KASLR slide values: ./extras/kaslr-fix.md
[18]MaciASL: https://github.com/acidanthera/MaciASL/releases