前言
有些用戶使用黑蘋果雙系統,在主板上安裝雙顯卡(A/N 卡),N卡在macOS 10.14+以後戲圖版本都不支援了,或是使用筆電黑果以獨立N卡的設備,要如何在不拆機的情況下,禁用這一類的設備,以下為簡單的教學。
Disabling GPU
如何禁用不受支持的 GPU?有下列三點:
- Boot Flag
- Disables all GPUs except the iGPU
- DeviceProperties
- Disables GPU on a per-slot basis
- SSDT
- Disables GPU on a per-slot basis
必須在 BIOS 中關閉 CSM 才能使欺騙正常工作,尤其是在基於 AMD CPU 的系統上。
Boot Flag
最簡單的方式莫過於在引導參數加入以下代碼 boot-arg:
-wegnoegpu
請注意,這將禁用除 iGPU 之外的所有 GPU。
設備屬性方法
用gfxutil找到PCI路由後,採取欺騙的方式創建一個新的 DeviceProperties 部分:
path/to/gfxutil -f GFX0
輸出將導致類似的結果:
DevicePath = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
With this, navigate towards Root -> DeviceProperties -> Add
並添加具有以下屬性的 PCI 路由:
Key | Type | Value |
---|---|---|
disable-gpu | Boolean | True |

使用 SSDT 禁用設備的方法
找到設備路徑的方法有很多,但一般來說,最簡單的方法是進入windows下的設備管理器,找到PCI路徑。在 Mac 底下 可使用 hackintool 工具。
假設該禁用的設備路徑為:\_SB.PCI0.PEG0.PEGP
:
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "spoof", 0x00000000)
{
External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
Method (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized)
{
If ((!Arg2 || !(_OSI ("Darwin"))))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x0A)
{
"name",
Buffer (0x09)
{
"#display"
},
"IOName",
"#display",
"class-code",
Buffer (0x04)
{
0xFF, 0xFF, 0xFF, 0xFF
},
})
}
}
可以在此處找到此 SSDT 的副本:Spoof-SSDT.dsl 編譯這個修護檔。請你務必記住,這.aml
是設定好的文件,.dsl
是源代碼。您可以通過選擇 File -> Save As -> ACPI Machine Language 使用 MaciASL 進行編譯。
資料來源:CorpNewt
結論
使用 SSDT 禁用設備的方法,可以用在 主板內建的網卡、音效卡或者是其他的擴展卡設備,因為 macOS 在跑代碼的同時,會自檢PORT 主機上所有的設備。假設你的主機上有很多的設備例如音效擴展卡之類的,但在macOS 底下卻無驅動支援,但被系統一直想要被激活的動作時,有可能會造成系統卡卡的情況,那麼除了拆除設備以外,就是使用SSDT 修護檔來禁用。
以上這是在openCore 所做的示範,歡迎大家多多利用!