禁用 PCIe 設備的教學(OC版)

前言

有些用戶使用黑蘋果雙系統,在主板上安裝雙顯卡(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
《禁用 PCIe 設備的教學(OC版)》

使用 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 所做的示範,歡迎大家多多利用!

点赞
Share