未支援NVRAM主板的解方,終於出現了

原文出處:Posted by u/dracoflar這裏
德國黑蘋果論壇
在OpenCorePkg,的最新提交中,已添加了新的SSDT: SSDT-PMC.dsl. 該SSDT的作用是為B360,B365,H310,H370,Z390等主機板,重新帶回NVRAM。但為何之前主機板不支援NVRAM呢?原因是英特爾『忘記了』實際上將FW晶片聲明ACPI中的MMIO部分,因此XNU將忽略UEFI記憶體訪問聲明的MMIO區域。所以NVRAM SMM頁面錯誤出現在未映射的頁面訪問上。

解決的方法很簡單,它不需要配置,並且是即插即用的。加上它與OpenCore無關,Clover用戶也可以運行它。請注意,這需要LPCB,DSDT但這在Z390上非常常見,您可以通過搜索進行驗證PCI0.LPCB
要在macOS中進行編譯:

  • 使用 MaciASL 編譯

  • Open the SSDT, File -> Save As -> ACPI Machine Language

在Windows編譯:

  • Grab iasl: Windows

  • Open Command Prompt and run: path/to/iasl.exe path/to/SSDT-PMC.dsl

使用 Linux編譯:

  • Grab iasl: Linux

  • 打開終端並運行: path/to/iasl path/to/SSDT-PMC.dsl

編譯完文件後,您將獲得SSDT-PMC。AML。擴展名很重要,因為它是已編譯的版本,.dsl只是源代碼。製作完SSDT之後,請將其放入EFI / CLOVER / ACPI / patched或EFI / OC / ACPI(請記住,也要將其添加到配置中(如果您運行OpenCore))
在下載文件: SSDT-PMC.aml

要如何擺脫NVRAM仿真

如果安裝了RC腳本,Clover希望首先給您一個“操蛋”,因為您可能需要在關閉SIP的情況下將Catalina掛載為R / W,然後才能清理它的混亂。您需要清理哪些垃圾?好吧,請看以下內容:

  • /Volumes/EFI/EFI/CLOVER/drivers/UEFI/EmuVariableUefi-64.efi

  • /Volumes/EFI/nvram.plist

  • /etc/rc.clover.lib

  • /etc/rc.boot.d/10.save_and_rotate_boot_log.local

  • /etc/rc.boot.d/20.mount_ESP.local

  • /etc/rc.boot.d/70.disable_sleep_proxy_client.local.disabled

  • /etc/rc.shutdown.d/80.save_nvram_plist.local​

對於OpenCore用戶,您所需要做的就是在配置中禁用以下功能:

  • Booter -> DisableVariableWrite -> False

  • NVRAM -> LegacyEnable -> False

並且不要忘記刪除EFI根目錄上的nvram.plist

如何測試我的NVRAM是否正常工作?

Op打開終端並一次粘貼一行:

sudo -s
sudo nvram -c 
sudo nvram myvar=test
exit

然後重新啟動並運行此命令:

nvram -p | grep -i myvar

如果沒有任何返回,則您的NVRAM無法正常工作。如果包含myvar test返回的行,則您的NVRAM正在工作。
注意:nvram -c需要關閉SIP,另一種方法是在引導菜單上擦除NVRAM。對於三葉草,請按F11。對於OpenCore,選擇CleanNvram,提示您需要Misc -> Security -> AllowNvramReset -> YES

点赞
Share