ASUSのZ390マザーボードで作ったHackintoshのその後の報告です。
久々に最新パーツで組んでみたところ、macOSがすんなり動きました。インテルの第9世代CoreプロセッサCoffee Lake-S Refresh搭載のZ390チップセットマザーボードです。スロット数で選んだマザーボード最新パーツでHackintoshを作る上で、マザーボードは選択肢が豊富なパーツです。市販の300シリーズチップセット搭載マザーボードのほとんどでHackintosh可能です。拡張スロット構成、SATA/USB/m.2コネクタ構成、追加機能、色とデザインなど考慮して、各人の目的や好みに合わせて自由に選んで良いです。だいたいどれでもちゃんと動... 9900K搭載Z390マザーボードでHackintoshを作る - Boot macOS |
シャットダウンが不完全な問題を解決すべく試行錯誤したところで、EmuVariableUefi-64.efiを使うことで解決しました。あまりにも呆気ない結末なのですが、EmuVariableUefi-64.efiがshutdownに関係するのは知りませんでしたし、もしかして困っている人がいるかもしれないので紹介します。
Table of Contents
シャットダウンの症状
症状が出たマザーボードは、Z390チップセット搭載マザーボードのASUS ROG MAXIMUS XI HERO です。macOSのメニューバーから「システム終了…」を選んでシャットダウンしようとすると、そのままの画面で止まってしまいます。Cloverを-vオプションで立ち上げた状態でシャットダウンしようとすると、画面が暗くなった後に、右上に以下のようなメッセージが出ます。
vm_map_delete: map <ptr> [0x1003c1000...0x1003c2000] nothing at 0x1003c1000 Man Jan 21 21:29:26 2019 hoge.local com.apple.xpc.launchd[1] <Notice> Generating report ... Man Jan 21 21:29:26 2019 hoge.local com.apple.xpc.launchd[1] <Notice> Report generation in 1 seconds. bash: /private/var/install/shutdown_installer_tasks: No such file or directory bash: /private/var/install/deferred_install: No such file or directory Man Jan 21 21:29:26 2019 hoge.local com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice> Userspace teardown took: 5032 ms Man Jan 21 21:29:26 2019 hoge.local com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice> Will be calling reboot(2) with flags: 0x0
スリープの時も同様です。-vオプションなしでは、画面が止まってしまい、-vオプションで起動していると、黒くなった画面右上に同じメッセージが出て反応がなくなります。
後からわかったのですが、このメッセージは異常を示すものではなく、ここで処理が停滞して止まっているだけのようです。実はこのマシンを組み上げた直後は、スリープもシャットダウンも正常に動いていた気がしていました。これも後からわかったのですが、気のせいではなかったようです。
シャットダウン問題解決
色々な方法を試したのですが、結局は最初に書いた通り、Clover の drivers64UEFI フォルダに、 EmuVariableUefi-64.efi を入れることですんなり解決しました。 EmuVariableUefi-64.efi は、macOSからATXマザーボード上のNVRAMがうまく読めない場合に、NVRAMのふり(エミュレーション)をしてくれるefiドライバーです。
NVRAMは不揮発性メモリの意味で、電源を落としても記憶が消えないメモリーのことです。マザーボード上にもありボタン電池などでバックアップされています。コンピュータ機器では、音量とか起動ディスクなどの情報が記憶されています。昔のMacではPRAM (パラメータRAM) と呼ばれていたこともありますが、NVRAMと同じものです。本物のMacのハードウェアにも、ATXマザーボード上にも、どちらにもNVRAMはあります。しかしHackintoshでは、macOSからATXマザーボード上のNVRAMがうまく読めないこともあるようです。そこで使われるのがEmuVari... NVRAMのエミュレーション - Boot macOS |
マザーボード上のNVRAMがmacOSから利用できていればEmuVariableUefi-64.efiは不要なのですが、ASUSのこのマザーボードの場合は必要だったようです。NVRAMが機能しない場合は、
- NVIDIAのWeb driverが動かない(Web driverを使用するかどうかをNVRAMに書き込んでいる)
- 音量などの値が保存されない
などの症状が出ることは知っていましたが、スリープ、シャットダウンで固まってしまう現象が起こりうるとは知りませんでした。多分、シャットダウン時にNVRAMに情報を書き込もうとして、それができなくて処理が止まっていたと考えられます。
実のところ、最初にこのマシンを組んだ時には、EmuVariableUefi-64.efi を入れていてうまく動いていました。その後、試しに外しても動くようなので、マザーボードのNVRAMにアクセスできていると思い込んで、外していました。EmuVariableUefi-64.efi を外してから、シャットダウンに影響が出るまで時間がかかるので、因果関係に気づきにくいです。
Sleep問題
追記:この問題は10.14.4で発生しなくなりました。
ということで、一時は解決したかに思ったのですが、スリープの問題が発生していました。スリープに入って15秒くらいまではキーボード操作などで画面復帰するのですが、それ以降では画面が暗くなったままです。RX 580で発生しているようです。解決策見つかったら報告します。
(追記) こちらの方法で解決しました。
更新:ここで紹介した対策は10.14.4で不要になりました。以下は10.14.3以前の情報です。不要になった理由は、9900K CPUがmacOSでサポートされるようになったからだと思われます。10.14.4以降では、以下で説明しているデバイスIDも9900Kの本来の値で問題ありません。本来の値はWhateverGreen.kextが自動で設定してくれますので、config.plistにデバイスIDを書く必要がありません。ASUSのZ390マザーボードで作ったHackintoshのその後の報告です。sleep/shutdownが全て完璧に動くようになりました。最初の記事はこちらです。(今回の対策... 9900Kのsleep問題〜原因はiGPUのデバイスID - Boot macOS |
Sleep/shutdown対策のまとめ
スリープ、シャットダウンできない不具合はHackintoshでよくあるトラブルです。ただ、様々なことが原因で発生するので、対策も多岐に渡ります。一般的な解決策、ASUSの類似マザーボード案件を探して見つかった解決策、今回の解決策を列挙しておきます。
- config.plistでFixShutdownをtrueにする。一番一般的な解決策です。だいたいこれで解決します。
- config.plistでFixShutdown_0004をtrueにする。Cloverのマニュアルにも書かれているASUSマザーボード対策です。古くからの方法なので今は効かないかもしれません。今回も関係ありませんでした。
- Cloverの起動オプションで、darkwake=0またはdarkwake=1とする。ASUSマザボの問題が解決したという報告がありましたが、今回は無効でした。
- macOSのシステム環境設定でPower Napを無効にする。今回は関係ありませんでした。
- BIOS設定で、Advanced / AMP Configuration / Power On By PCI-E/PCIをEnabledにする(出荷時設定はDesable)。ASUSマザボの問題が解決したという報告がありましたが、今回は無効でした。
- EmuVariableUefi-64.efiもしくはEmuVariableUefi.efiを入れる(今回のシャットダウン解決策)。
- CloverブートメニューでF11を押してnvramをリセットする。
- /Library/Preferences/com.apple.PowerManagement.*ファイルを消す。これを消してもmacOSが自動作成してくれます。
sudo rm /Library/Preferences/com.apple.PowerManagement.*
- スリープからの復帰で画面が暗いままな状況はグラフィックスの問題でした。iGPUのデバイスIDを指定したら治りました。
- いただいたコメントによると、ディスプレイを接続しているカードのコネクタを変えると治ることもあるようです。HDMIではダメだったけどDPにしたらスリープ解決したそうです。