経緯
MojaveではNvidiaドライバが動かないので、Nvidiaを搭載したマシンはHigh Sierraで使っていました。先日、それにうっかりPublic Beta版のセキュリティアップデートを当ててしまいました。これです。
通常盤のアップデートだと勘違いしました。ベータ版配布をoffにしておくべきでした。
Public Betaが出たのでMojaveを試してみたけど問題なく動いたのでひとまず安心。新機能も気に入った… もうmacOSベータ版は要らないと思ったあなたに - Boot macOS |
アップデートしたことでmacOSのビルトが上がりました。17G4005です。
配布されているWebドライバの最新版は17G3025用なのでバージョンチェックで動かなくなってしまいました。そこで、17G3025用のドライバを、無理やり17G4005にインストールして動かすことにしました。
バージョン違いのドライバをインストールする
17G3025用のドライバ(こんなアイコンです)
をダウンロードサイト
Download drivers for NVIDIA products including GeForce graphics cards, nForce motherboards, Quadro workstations, and more. Update your graphics card drivers today. NVIDIA DRIVERS Quadro & GeForce macOS Driver Release 387.10.10.10.40.108 - |
から入手しても、バージョンが違うと、そもそもインストールできません。そこで17G3025用ドライバのパッケージを開いて、設定を変更します。まずは、パッケージユーティリティを使って展開します。
pkgutil --expand (pkgへのパス) (展開先ディレクトリ)
例えば
pkgutil --expand WebDriver-387.10.10.10.40.108.pkg exp
とします。こうするとexpというディレクトリに内容が展開されます。この中に、Distributionという名前のテキストファイルがあります。これを開いて、インストールチェックをしているところ
function InstallationCheck() { if (!validateSoftware()) return false; return true; }
をコメントアウトします。
function InstallationCheck() { //if (!validateSoftware()) return false; return true; }
もしくは、後ろの方にvalidateSoftware()関数の定義がありますので、そこのビルト番号を書き換えても良いです。つまり、
function validateSoftware() { var supportedOSVer = "10.13.6"; var supportedOSBuildVer = "17G3025";
というところを、
function validateSoftware() { var supportedOSVer = "10.13.6"; var supportedOSBuildVer = "17G4005";
とします。
次に、以下のコマンドでパッケージし直します。
pkgutil --flatten exp webdriver.pkg
これは上の例でexpという名前のフォルダを作った場合です。このパッケージを使ってWebドライバをインストールします。
バージョン違いのドライバを動かす
インストールはできましたが、バージョンが合わないのでドライバが動きません。Not compatibleというメッセージが出てしまいます。そこでパッチを当てます。
ドライバにパッチを当てるためのスクリプトが、benjamin.dobellさんによって配布されていまう。以下のコマンドで入手できます。
curl -O https://raw.githubusercontent.com/Benjamin-Dobell/nvidia-update/master/nvidia-update.sh
こうしてできたnvidia-update.shを実行可能にして起動します。
chmod a+x nvidia-update.sh ./nvidia-update.sh
最初の質問(ダウンロードするか?)にはN、次の質問(パッチを当てるか?)にはYとタイプします。そして再起動します。無事動くようになりました。
ここまで、SIPは有効のままでも問題なく作業を進められました。