OpenCore一般故障排除[持續更新中]

2021-02-14 黑果小兵的部落閣
OpenCore一般故障排除

本部分適用於無法引導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>

在OpenCore上選擇macOS分區後卡住CFG鎖未關閉(僅適用於Intel用戶),有幾種解決方案:Enable AppleXcpmCfgLock和AppleCpuPmCfgLock,PKG_CST_CNFIG_CONTROL分別在XNU和AppleIntelCPUPowerManagement中禁用。不建議使用長期解決方案,因為這可能會導致不穩定。禁用PollAppleHotKeys並啟用KeySupport,然後從您的 config.plist UEFI -> drivers 中刪除OpenUsbKbDxe[13]如果上述方法不起作用,請反向操作:disable KeySupport,然後將OpenUsbKbDxe[14]添加到您的 config.plist UEFI -> drivers 中無法在選擇器中選擇任何內容禁用PollAppleHotKeys並啟用KeySupport,然後從您的 config.plist UEFI -> drivers 中刪除OpenUsbKbDxe[15]如果上述方法不起作用,請反向操作:disable KeySupport,然後將OpenUsbKbDxe[16]添加到您的您的 config.plist UEFI -> drivers 中卡在 This version of Mac OS X is not supported: Reason Mac...

當 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

相關焦點

  • OpenCore一般故障排除2[持續更新中]之macOS引導及安裝錯誤
    OpenCore一般故障排除2[持續更新中]之macOS引導及安裝錯誤卡在 `RTC...`, `PCI ConfigurationBegins`, `Previous Shutdown...`, `HPET`, `HID: Legacy...`[1]"Waiting for Root Device" 或禁止籤名錯誤[2]卡在或靠近 `IOConsoleUsers
  • OpenCore一般故障排除3[持續更新中]macOS安裝後及其它問題
    >[22]Windows啟動盤看不到 APFS 驅動器: /troubleshooting/troubleshooting.md#windows-startup-disk-cant-see-apfs-drives[23]OpenCore 的解析度不正確: /troubleshooting/troubleshooting.md#incorrect-resolution-with-opencore
  • 交換機故障分類與排除故障步驟的原因
    1交換機故障分類  由於交換機在公司網絡中應用範圍非常廣泛,從低端到中端,從中端到高端,幾乎涉及每個級別的產品,所以交換機發生故障的機率比路由器,硬體防火牆等要高很多,這也是為什麼我們首先討論交換機故障的分類與排除故障步驟的原因。
  • 電氣故障的排除方法
    電氣故障的排除是維修人員的一項重要工作,要徹底排除故障,必須清楚故障發生的原因,更重要的是能從理論上分析、解決故障發生,要具有一定的專業理論知識
  • 空氣減壓閥的常見故障及故障排除辦法
    產生這一故障的原因和排除方法如下:① 因主閥芯上或閥體孔沉割槽稜邊上有毛刺或者主閥芯與閥體孔之間的間隙裡卡有汙物,或者因主閥芯或閥孔形位公差超差,產生液壓卡緊,將主閥芯卡死在較大開度(max)的位置上,由於開口大,油液不減壓。此時可根據上述情況分別採取去毛刺、清洗和修復閥孔和閥芯精度的方法予以排除。
  • 電腦故障排除方法大全
    電腦故障排除方法主要有觀察法、最小系統法、逐步添加去除法、隔離法、替換法、比較法、升降溫法、敲擊法、插拔法、清潔法十種。通過這些方法可以容易地解決一些常見的電腦故障。三、逐步添加去除法逐步添加法以最小系統法為基礎,每次只向系統添加一個部件/設備或軟體,來檢查故障現象是否消失或發生變化,以此來判斷並定位故障部位。註:逐步添加去除法一般要與替換法配合,這樣才能較為準確的定位故障部位。
  • Big Sur安裝常見問題【持續更新】
    ,那麼如何判斷fs0目錄下面就是EFI呢,可以這樣驗證:Shell> ls fs0:如果顯示有`EFI`的目錄,那麼就繼續執行Shell> ls fs0:\efi顯示`BOOT`和`OC`或者`BOOT`和`CLOVER`目錄,那麼可以確定這是你需要操作的位置Shell> bcfg boot add 0 fs0:\efi\oc\opencore.efi
  • 排除電腦故障十大方法
    電腦故障排除方法主要有觀察法、最小系統法、逐步添加\去除法、隔離法、替換法、比較法、升降溫法、敲擊法、插拔法、清潔法十種。通過這些方法可以容易地解決一些常見的電腦故障。  一、觀察法  觀察法就是通過看、聽、聞、摸等方式檢查比較典型或比較明顯的故障。
  • 電腦故障排除的10種方法
    電腦故障排除方法主要有觀察法、最小系統法、逐步添加去除法、隔離法、替換法、比較法、升降溫法、敲擊法、插拔法、清潔法十種。通過這些方法可以容易地解決一些常見的電腦故障。一、觀察法觀察法就是通過看、聽、聞、摸等方式檢查比較典型或比較明顯的故障。
  • 瀏覽器實驗中的故障排除
    初步分類在初始報告之後,我們進行了典型的故障排除分類過程。我們向客戶索取了一些案例,並在Twilio和我們的平臺上啟用了RTP跟蹤。我們開始尋找作業系統版本、發布更新、瀏覽器、硬體、驅動程序版本之間的共性.最終,我們有太多變量來真正縮小問題的範圍。在這一點上,我們知道這不是典型的WebRTC本地網絡擁塞,而是在更大範圍內打破了某些東西。深入分析在對大量誤報案例分類後,我退一步試圖重新定義核心問題並隔離定義事件的「籤名」。
  • CPU問題引起的電腦故障排除方法詳解
    如果CPU出現故障就會造成電腦處於癱瘓狀態,比如:不開機、黑屏、死機等電腦故障現象。這些由於CPU問題導致的電腦故障排除的方法有很多種,下面小編針對此類電腦故障排除講解一下我的解決方法,以供參考。
  • 40種電腦故障的排除技巧你知道多少?
    這種問題只能通過更換顯卡或由專業維修人員才能排除。05 電腦故障顯示器出現問題的原因電腦故障顯示器如果出現問題,則無法對電腦進行正常的操作。顯示器發生問題的原因一般有以下幾種:v 磁場會使顯示器局部出現色塊,會導致顯示器的顯示效果受到很大影響。因此必須將顯示器放在遠離電磁場的地方,如遠離冰箱、彩電等大功率電器。
  • 網絡故障排除工具 | 快速定位網絡故障
    網絡故障排除對於網絡技術專家和網絡工程師是頗具挑戰的工作。每當添加新的設備或網絡發生變更時,新的問題就會出現,而且很難確定問題出在哪裡。每一位網絡工程師或專家都有自己的經驗和必備工具,能讓他們快速定位網絡故障。以下的這些工具,是否是你的工具箱中的選項。
  • 三大原因排除故障
    如果出現了自動重啟,你是如何排除故障的呢?電腦出現自動重啟一定是硬體故障嗎?對於電腦的自動重啟可能是我們都所遇到過的電腦故障,學校的機房和我們自己的電腦都可能出現過電腦自動重啟的現象。電腦出現自動重啟可能是軟體的故障,也可能是硬體的故障。一般情況下我們先排除軟體的故障,再排除硬體的故障。
  • 內存故障排除秘訣,並非插拔內存條那麼簡單哦!
    一般的內存條在裝入電腦後系統會自動地檢查其設置,但是一些人為的參數設置不正確將導致內存不能正常工作。即購買的內存質量不合格,或者由於使用不當造成的損壞。但事實上,在使用的過程中出現所謂的「內存故障」,大部分都是假故障或軟故障,我們可以使用交換法排除內存條物理損壞。
  • 內存常見故障排除 硬碟常見故障
    內存常見故障現象:(1)電腦加電後,只有電源燈亮,無其它任何反應。(2)啟動過程中死機。排除故障的方法:(1)檢查BIOS中的內存參數設置。(2)檢查內存條的接觸是否良好。.(3)用替換法,更換一個同類型號的內存條。(4)檢查電腦是否傳染病毒。(5)檢查內存條與主板的兼容性。
  • 如何通過科學的方式對 Docker 進行故障檢測和排除?
    除此之外,比較理想的是,我們應該通過一種科學的方式對Docker進行故障檢測和排除。本文將通過三個方面對此進行論述,主要是使用docker exec來檢查容器、對docker的外部進行調試、通過其他的工具和組件進行檢測。同時列舉了多個案例來描述了使用Docker過程中遇到的常見的問題,如啟動時、運用中的一些場景。
  • 微軟推出Windows錯誤代碼故障排除網站
    如果您在使用Windows系統的過程中,大部分用戶都會遇到錯誤代碼跳出提示問題。例如「錯誤代碼:0x80070422?」這到底意味著什麼。
  • 手把手教你排除HDMI轉VGA常見故障
    手把手教你排除HDMI轉VGA常見故障最近幾年出產的筆記本、電玩、網絡盒子等設備基本都配備了最新的HDMI高清接口,而對於仍然在使用舊電視
  • 經驗丨如何提高維修電工故障排除技能
    1.故障排除需要具備的基本技能對電路故障進行徹底的排除,需要長期的工作積累,以及準確的定位分析,這一切都建立在對故障實際情況的全面了解和掌握基礎之上。眾所周知,電氣是一個複雜的、具有較高技術性的設備,因此,電氣的維修技術水平也應該是一個技術與經驗積累的過程,它需要漫長的時間。