OpenCoreに移行したら再起動するたびに「safe modeでPOSTしたのでF1キーを押してsetupしてね」と言われるようになりました。config.plistでDisableRtcChesksumをtrueにすると治りました。
追記:当初、対策2と対策3の内容で対応していましたが、コメントでTakさんからDisableRtcChesksumで対応できることを教えていただきましたので、対策1として追記しました。
Table of Contents
OpenCore移行したらPOSTエラー発生
ASUS ROG MAXIMUS HERO WIFI (Z390) をOpenCoreに順調に移行できたかに見えました。
ASUSのZ390マザーボードと9900Kの組み合わせでmacOSを動かしているマシンのブートローダーを、CloverからOpenCoreに移行しました。OpenCoreのconfig.plistはCloverに比べて複雑ですが、親切なページと便利なツールがあったので円滑に移行できました。OpenCoreのガイドとツールYoutubeのビデオOpenCoreを使ってみた、という程度の記事を書きました。OpenCoreの基礎知識に関してはこちらをご覧ください。この当時は、OpenCoreは、Cloverに比べてconfig.plistがややこしくて面倒という印象でした。設定項目が多いだけでなく、kextやSSDTや... ASUS Z390 + Coffee LakeのブートローダをOpenCoreにする - Boot macOS |
でも再起動をすると、POSTのエラ〜メッセージが出て、SETUP画面を起動しないと先に進めなくなりました。エラーメッセージは、
システムはセーフモードでPOSTしました。
これはシステムが不安定なために前回のPOSTの試みが失敗したこと、または、電源ボタンが長押しにより強制終了されたことが原因かもしれません。
もしUEFI設定を変更した後にPOST失敗したのでしたら、安定した設定に戻したいと希望されているでしょう。F1キーを押してSETUPを起動してください。
との表示です。この後、F1キーを押してSETUPに入り、そこから起動を選ぶと、今度は正しく起動します。なので大して困る状況ではないですが、次の再起動でまたこの画面になり、対応が面倒です。
Cloverの時はこのような現象はありませんでした。OpenCoreでシャットダウンして、Cloverを起動する場面でも発生します。なので、OpenCoreでシャットダウンするときに、何かしらの不具合が発生しているのかもしれないです。
ASUSでよくあること?
検索してみたところ、同様の現象は多数報告されています。今回と同様に、CloverからOpenCoreに移行したらこうなったという人も多いです。でも過去には、Cloverでも発生していたようです。発生はしていたけど、Cloverのバージョンが上がったら治ったという報告もありました。ということで、よくある現象のようです。
対策1:DisableRtcChecksumをtrueにする
対策2以降の記事を書いたところ、コメントでTakさんから教えていただきました。この方法で解決しました。OpenCoreコミュニティのおすすめの解決方法のようですので、対策2以降は無視していただいて良いです。config.plistのKernel, Quirksの場所にあるDisableRtcChesksumを、以下のようにtrue(デフォルトはfalse)に設定すれば治ります。OpenCore 0.5.8から可能になった方法です。
<key>Kernel</key> <dict> (中略) <key>Quirks</key> <dict> (中略) <key>DisableRtcChecksum</key> <true/>
この問題はリアルタイムクロック (RTC) が関係する問題だそうです。macOSのAppleRTC.kextが、シャットダウンするときにチェックサム値をファームウェア(電池バックアップされたマザーボード上のCMOSメモリ?)に書き込むようです。おそらくはそのことでマザーボードのデータを壊してしまうらしく、次のPOSTで失敗を引き起こしているようです。チェックサムを書き込む場所が0x58~0x59(番地?)で、DisableRtcChesksumをtrueにするとそこへの書き込みを禁止してくれるようです。以下にも説明があります。
この説明によると、DisableRtcChesksumをtrueにしてもまだ問題が発生するようなら、RTCMemoryFixup.kextを入れて、ブートオプションで、
rtcfx_exclude=00-FF
のようにして、0x58~0x59以外の領域も保護するようにすると良いようです。これでうまくいった場合は、ブートオプションを変更して、保護する範囲を狭めると良いようです。
対策2:BIOSで設定する
追記:対策1が簡単で根本的なのでおすすめです。
有効な対策の一つが、このメッセージを出さないようにBIOSで設定する方法です。メッセージをよく読むと、「BIOS設定を間違って失敗した場合は、元に戻したいと思うから、F1キーでSETUPにすぐに入れるようにしておいてあげたよ。」という意味の内容が書いてあります。どうやらsafe modeでPOSTしたこと自体は大した問題ではなくて、利便性のためにF1キーですぐにSETUPに入れるよう配慮してくれているようです。今回はBIOS設定を間違えたわけではありませんので、この「親切機能」をoffにしても良いと思います。
BIOSの設定では、Boot, Boot Configurationの中に、Wait For ‘F1’ If Errorという項目があります。これが「POSTに不具合あったらF1キーを待つ」という設定です。デフォルトではEnabledなので、これをDisabledにします。これで問題なく起動するようになりました。
とはいえ、大元の原因は解決できていないので、応急措置な感じは拭いきれません。探したところ、もう少し根本的な対策もあるようです。
対策3:AppleRTCにパッチを当てる
追記:対策1の方が簡単です。そちらをおすすめします。
こちらで対策が紹介されていました。
I migrated my build from Clover to OpenCore, and now every time I boot my system I get the screen attached. What is really weird is that macOS itself works fine: except from native NVRAM everything (boot, reboot, power off, sleep, USB and connected devices, GPU acceleration, Audio, WIFI, Bluetoot... OpenCore causes UEFI to POST in safe mode - InsanelyMac |
ここで紹介されているパッチをOpenCoreのconfig.plistのKernel, Patchに追加したところ、この現象は発生しなくなりました。config.plistをテキストエディタで開いて、パッチを挿入します。Patchという項目は、ACPIの項目にもあるので、間違えないように注意です。(最初は間違えてしまってパッチが効きませんでした。)パッチを施したconfig.plistを以下に置いておきます。もしこのconfig.plistを使用する場合は、SystemSerialNumber、SystemUUID、MLB、ROMの値を必ず置換えてください。
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time. OpenCore config.plist for 9900K - Pastebin.com - Pastebin |
まとめ
OpenCoreにしたらsafe modeでPOSTする症状が出ました。ASUSではよくあることらしいです。SETUPに入ることを求められるので面倒です。config.plistでDisableRtcChesksumをtrueにして、シャットダウン時にmacOSがチェックサムを書き込まないように設定すると治りました。ということでOpenCoreの問題ではなくて、macOSとマザーボードの相性の問題のようです。Cloverで発生していなかったのは、単にデフォルトで対策されていただけなのかもしれないです。