ASUSマザーボードがPOST失敗してF1対応を促される

OpenCoreに移行したら再起動するたびに「safe modeでPOSTしたのでF1キーを押してsetupしてね」と言われるようになりました。config.plistでDisableRtcChesksumをtrueにすると治りました。

追記:当初、対策2と対策3の内容で対応していましたが、コメントでTakさんからDisableRtcChesksumで対応できることを教えていただきましたので、対策1として追記しました。

OpenCore移行したらPOSTエラー発生

ASUS ROG MAXIMUS HERO WIFI (Z390) をOpenCoreに順調に移行できたかに見えました。

でも再起動をすると、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の方が簡単です。そちらをおすすめします。

こちらで対策が紹介されていました。

ここで紹介されているパッチをOpenCoreのconfig.plistのKernel, Patchに追加したところ、この現象は発生しなくなりました。config.plistをテキストエディタで開いて、パッチを挿入します。Patchという項目は、ACPIの項目にもあるので、間違えないように注意です。(最初は間違えてしまってパッチが効きませんでした。)パッチを施したconfig.plistを以下に置いておきます。もしこのconfig.plistを使用する場合は、SystemSerialNumber、SystemUUID、MLB、ROMの値を必ず置換えてください。

まとめ

OpenCoreにしたらsafe modeでPOSTする症状が出ました。ASUSではよくあることらしいです。SETUPに入ることを求められるので面倒です。config.plistでDisableRtcChesksumをtrueにして、シャットダウン時にmacOSがチェックサムを書き込まないように設定すると治りました。ということでOpenCoreの問題ではなくて、macOSとマザーボードの相性の問題のようです。Cloverで発生していなかったのは、単にデフォルトで対策されていただけなのかもしれないです。

9件のコメント

  1. お疲れさまです。
     OCは、テスト程度に使ってみてるのですが、この問題とPioneer BDのパッチが効かずに動かなくなるので、今の所様子見状態です。

  2. bootmacosさま、
    いつも記事を参考にさせてもらっています。ありがとうございます。

    このF1問題、ずいぶん悩まされましたが、最新のOC 0.5.8でconfig.plistのKernel->Quirksに:
    DisableRtcChecksum Boolean True
    のエントリを追加することで解決しました。これ、0.5.8で追加されたものです。詳細はOCの最新マニュアルに書かれています。ちなみにMBはASUS ROG STRIX Z390-I GAMING、最新BIOSです。

    それまでは、patch、checksumを上書きする(?)PRAM設定の追加(?)などで対応していましたが、それらなしでも上記エントリ追加で解決するようです。(スミマセン、色々とconfig.plistをいじっていたので、ちょっと自信がないのですが…)

    この問題、以下で色々と議論されていて参考にしました。
    https://github.com/acidanthera/bugtracker/issues/765

    今みたら、DisableRtcChecksumのこと、OpenCore Vanilla GuideのGeneral Trouble Shootingに書かれていました。
    https://dortania.github.io/OpenCore-Desktop-Guide/troubleshooting/troubleshooting.html#bios-reset-or-sent-into-safemode-after-rebootshutdown

    1. 有用な情報をありがとうございます!
      手元の環境でもDisableRtcChecksumを試してみて、問題が発生していた状況が、この設定だけで解決することを確認しました。本文に追記しておきました。

  3. サイトを参考にしてOCの設定をさせていただきました。ありがとうございます。
    現在下記の構成で稼働しているのですが、biosブート時のF1問題が解決できません。
    CPU 10900K
    マザーボード asus x490-F
    o.c.0.6.6

    DisableRtcChecksumも試してみたのですが解決できませんでした。
    またカーネルへのパッチ(AppleRTC)も試して見たのですが変化はありませんでした。
    https://dortania.github.io/OpenCore-Post-Install/misc/rtc.html#finding-our-bad-rtc-region
    で紹介されているRTCMemoryFixupを使った方法でも改善は見られませんでした。

    7C436110-AB2A-4BBB-A880-FE41995C9F82
    boot-args -v keepsyms=1 rtcfx_exclude=00-FF

    この他に考えられる問題点はありますでしょうか?

    1. 見当つかないです、すみません。
      BIOSの設定で、Boot、Boot Configuration、Wait For ‘F1’ If ErrorをDisabledにするしかないのかな。

    2. >この他に考えられる問題点はありますでしょうか?

      一番多いのが電池切れ。

      「F1 押せ」の前に表示されているエラーメッセージには何と書いてありますか?

      1. 返信ありがとうございます。その後マザーボードから全て外し組み直したら何故かF1にならなくなりました。どこかのコネクターがハマっていなかったのかもしれません。ご報告遅くなり申し訳ありませんでした。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です