Mac信者のHackintosh修行

惑星で一番美しいOSが1台でも多くのマシンで動くことを目指します。

バージョンを誤魔化してNVIDIAドライバを入れる

f:id:siroanko:20181106231456p:plain

 これはMojaveでNvidiaのドライバを動かす方法ではありません。Mojave対応ドライバが待ち望まれている時節柄紛らわしい記事ですみません。この方法でWebドライバがMojaveで動かなくはないらしいですが、性能が全く出ないらしいです。

経緯

MojaveではNvidiaドライバが動かないので、Nvidiaを搭載したマシンはHigh Sierraで使っていました。先日、それにうっかりPublic Beta版のセキュリティアップデートを当ててしまいました。これです。

f:id:siroanko:20181105140704p:plain

通常盤のアップデートだと勘違いしました。ベータ版配布をoffにしておくべきでした。

siroanko.hatenablog.com

アップデートしたことでmacOSのビルトが上がりました。17G4005です。

f:id:siroanko:20181105141020p:plain

配布されているWebドライバの最新版は17G3025用なのでバージョンチェックで動かなくなってしまいました。そこで、17G3025用のドライバを、無理やり17G4005にインストールして動かすことにしました。

バージョン違いのドライバをインストールする

17G3025用のドライバを入手しても、バージョンが違うと、そもそもインストールできません。

f:id:siroanko:20181105141524p:plain

そこで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というメッセージが出てしまいます。そこでパッチを当てます。

f:id:siroanko:20181105144749p:plain

ドライバにパッチを当てるためのスクリプトが、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とタイプします。そして再起動します。無事動くようになりました。

f:id:siroanko:20181105145135p:plain

ここまで、SIPは有効のままでも問題なく作業を進められました。