原文出處: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
。