NVIDIA GeForce KeplerをMontereyで動かす

NVIDIAのKeplerアーキテクチャは、macOSで長らくサポートされていましたが、とうとうMontereyからサポートされなくなりました。でもBig Sur以前のドライバをインストールすれば動きます。

Keplerが動かない

久しぶりに古いKeplerアーキテクチャのグラボ、GTX 770を使ってみたところ、macOSで動かなくなってました。低解像度で表示はされますが、グラフィックス加速が効いてなくて、動きがギクシャクします。試したのは、ASRock Z690 + Intel 12700K + macOS Monterey 12.0.1の構成です。調べたところMontereyからKeplerのサポートが終了しているようです。ちなみにこれまでmacOSで動くとされていたKeplerのグラボは、以下です。Montereyから、これらが動かなくなったようです。(正確にはMonterey beta 6まではドライバがあったらしいです)

  • GTX Titan (GK 110 Maxwell core)
  • GTX Titan Black (GK 110 Maxwell core)
  • GTX Titan Z
  • GTX 780/Ti
  • GTX 770
  • GTX 760/Ti
  • GT 740
  • GT 730 (GK208 variant)
  • GT 720
  • GT 710
  • GTX 690
  • GTX 680
  • GTX 670
  • GTX 660Ti
  • GTX 660(MUST BE RUNNING A GK 104 core, NOT GK 106)
  • GTX 650(GK 107 core)
  • GT 640(Kepler edition, GK 107/208 core)
  • GT 630(Kepler edition, GK 107/208 core)
  • Quadro 410
  • Quadro K420
  • Quadro K600
  • Quadro K2000/D
  • Quadro K4000/D
  • Quadro K4200
  • Quadro K5000
  • Quadro K5200
  • Quadro K6000

ちなみに、NVIDIA自体も2021年10月の最新ドライバでKeplerのサポートを終了したそうです。なのでmacOSのKeplerサポート終了は、仕方のないことでしょう。

kextが無い

なのでMontreyにはKeplerをサポートする拡張ファイルが無くなりました。Keplerは、macOSでサポートされていたNVIDIA唯一のアーキテクチャだったので、これでNVIDIA製品が完全にサポートされなくなりました。

kextが無くなったことを確認するために、macOS 11.2.1 Big Sur (20D74)の/S/L/Eの中身を調べてみました。NVDAで始まるファイルとして、以下が見つかります。

  • /System/Library/Extensions/NVDAGF100Hal.kext
  • /System/Library/Extensions/NVDAGK100Hal.kext
  • /System/Library/Extensions/NVDAResman.kext
  • /System/Library/Extensions/NVDAStartup.kext

同様にGeForceで始まるファイルとして以下がありました。

  • /System/Library/Extensions/GeForce.kext
  • /System/Library/Extensions/GeForceAIRPlugin.bundle
  • /System/Library/Extensions/GeForceGLDriver.bundle
  • /System/Library/Extensions/GeForceMTLDriver.bundle
  • /System/Library/Extensions/GeForceVADriver.bundle

一方で、macOS 12.0.1 Monterey (21A559)にはこれらが存在していません。

古いKextを使う

Kextが無くなってしまったのなら、古いmacOSから持って来れば良いです。ただ、システムに必須のディレクトリは保護されていて、手作業でkextを持ってくるのは面倒です。なので、それを自動化してくれるツールがありました。

前述の9個のkextとbundleをインストールしてくれます。

ただし、システムファイル用のディレクトリに手を加えるのでSIP (System Integrity Protection) を無効にする必要があります。通常は、

csrutil status

で確認できるように、SIPが有効になってます。Macの実機だと、リカバリーモードで起動してcsrutilコマンドでSIPを解除するのですが、hackintoshならconfig.plistで変更できます。NVRAM/Add/7C436110-AB2A-4BBB-A880-FE41995C9F82/csr-active-configの値(大抵は00000000のはずです)をEF0F0000に変更します。この数値はGeforce Kepler patcherで指示されます。

Runボタンを押すと、インストールが開始されます。インストール先のボリュームを指定して、その中のDATAになっているAPFSのボリュームを指定するステップを経て、インストール終了です。

csr-active-configの値は、kext類をインストールした後もそのままにしておく必要があるようです。SIPを有効に戻してしまうと、起動しなくなりました。また起動ボリュームの名前が、Monterey-DISKに変更されます。

動きました

再起動すると、高解像度の画面で表示されていました。macOSで認識されているようです。Geekbench 5も動くようになりました。でもOpenCLのテストはなぜか途中で中断します。Metalのテストは最後まで動きます。スコアは以下のようでした。

古いGPUですからこんなものでしょうか。M1 Maxの1/10くらいです。

まとめ

NVIDIA GeForce KeplerはMontereyからサポート外になってました。古いmacOSのkextをインストールすることで使えるようになります。古いカードですのでそれなりの性能でした。