eficheckにファームウェアが違うと注意されました

f:id:siroanko:20181007151835p:plain

コンピュータに問題が発生している可能性があることが検出されました

というダイアログパネルが先週唐突に現れました。Mojaveにアップデートしてからだいたい1週間目のことです。正確には604,800秒後のことです。

Appleのサポートに公式の説明があります。

support.apple.com

このメッセージは、Mac に実際にインストールされているファームウェアと、macOS で必要とされるファームウェアとの間に違いが認められた場合に表示されます。

(略)
macOS High Sierra 10.13 から、Mac はファームウェアが変更されていないか定期的にチェックし、そうした変更点について Apple に情報を送信できるようになりました。

そういえば1年以上前、High Sierraのベータ版が出た頃にこの新機能が話題になっていました。このチェックを定期的に行なっているのはeficheckというプログラムです。本体は、

/usr/libexec/firmwarecheckers/eficheck/eficheck

にあります。

MacのEFIファームウェアのチェックサムを、Apple社の何処かにあるデータベースと比較して、違っている場合には安定性やセキュリティに問題があると判断して、警告を出してくれるプログラムだそうです。Hackintoshの場合は、当然のことながらEFIファームウェアは本物のMacと違うので、警告出まくりになるだろうと、当時は話題になっていました。でも一度も警告は出たことがなく、すっかり忘れていました。ネットで調べても、警告が出たという報告はすごく少ないです。私も初めてです。なんで出たのか不明ですが、Mojaveにアップデートしたことと関係がありそうです。

eficheckの動く仕組み

eficheckはコンピュータに常駐して動き続けるデーモンと呼ばれるタイプのプログラムです。macOSではデーモンの起動と設定を、

/System/Library/LaunchDaemons/

ディレクトリで行います。この中に一つのデーモンを設定する.plistファイルを置くと、Macの起動時に動くようになります。今回のeficheckを設定しているのは、

/System/Library/LaunchDaemons/com.apple.driver.eficheck.plist

というファイルです。書き換えて遊んでみましょう。

ただ、SIPを有効にしている場合、/System以下のファイルはSIPで保護されています。sudoコマンドでも書き換えることができません。その場合は、SIPを無効にしてから作業します。書き換え作業した後はSIPを有効に戻しても大丈夫です。

com.apple.driver.eficheck.plistの中身を見てみましょう。以下は抜粋です。

<key>ProgramArguments</key>
<array>
<string>/usr/libexec/firmwarecheckers/eficheck/eficheck</string>
<string>--integrity-check-daemon</string>
</array>

略

<key>com.apple.driver.eficheck</key>
<dict>
<key>Interval</key>
<integer>604800</integer>
</dict>

最初の方に、eficheckへのフルパスと、起動の引数が書かれています。真ん中あたりに、間隔が604,800と書かれています。単位は秒です。割り算してみると、ちょうど7日間になります。つまり、1週間ごとにEFIが正しいものであるかどうかをチェックして、警告を出してくれるようです。

1週間待って次の警告が出るかどうか確認するのは大変でしたので、

<key>com.apple.driver.eficheck</key>
<dict>
<key>Interval</key>
<integer>180</integer>
</dict>

と書き換えて再起動してみました。3分くらいで警告が出ました。やはりこのまま毎週警告が出てしまうようです。

eficheckを止める

なんにせよ厄介なので、起動しないようにしてみました。

cd /System/Library/LaunchDaemons/
sudo mv com.apple.driver.eficheck.plist com.apple.driver.eficheck.plist.org

としました。オリジナルというつもりでorgという拡張子に変更しましたが、oldでもbackupでもなんでも好きな名前で良いです。いずれにせよ、plistという拡張子ではなくなったので、多分大丈夫なはずです。結果は来週以降報告します。 plistという拡張子ではなくなったことで起動しなくなります。1週間後、2週間後にも起動しませんでした。

EFICheckDisabler.kextを使う

コメントで紹介していただいた

www.insanelymac.com

でRehabManさんが配布しているEFICheckDisabler.kextを使ってみました。これをESPに入れるだけでも、エラーメッセージは止まりました。

メッセージが出ないこともある

原因は不明ですが、このエラーメッセージが一向に出ないマシンもあります。何が違うのかよくわからないのですが(ご存知でしたらコメントでお知らせください)、メッセージが出ないなら、上記の対応をしなくても良いと思います。

追記:いつからかこの問題は発生しなくなりました。少なくともCatalinaでは経験していません。なので古い情報です。(2020/3)

12件のコメント

  1. 私も同じ現象が出ていまして、対応を調べていました。
    結果はどうなりましたでしょうか?
    お教えいただければ幸いです。

  2. 早速のご回答ありがとうございます。
    kurukuru様ありがとうございます。
    皆様のご意見を参考にさせていただきまして、対応したいと考えております。

  3. codeless kextの方法でメッセージが出なくなりました。
    ありがとうございました。

  4. ども、boot macOSさん、

    >原因は不明ですが、このエラーメッセージが一向に出ないマシンもあります。
    T2チェップ搭載の iMac ProのSMBiosだったとかなんですかね?

    下記の記事を読んだらNotesにそれっぽい記載があったので気になりました。。。

    How High Sierra checks your EFI firmware
    https://eclecticlight.co/2018/06/02/how-high-sierra-checks-your-efi-firmware/

    Note: eficheck doesn’t work on T2-equipped Macs such as the iMac Pro or the MacBook Pro 2018, which receive their firmware updates by a different mechanism

    皆さんはSMBiosのFirmwareとかはメンテされてんのかなとかも気になりますね。私はCLover ConfiguretorでSMbiosをLatestにしたというようなコメントがあったら、その時に手作業でSMBiosを内容を更新してたりしますけど、一応、これはめんどくさいですけどHackintoshで日常運用的にしといた方が良いことですよね。。。

    1. 情報ありがとうございました。いつの頃か、この問題は発生しなくなったようで、EFICheckDisabler.kextも外してしまっています。少なくともCatalinaでは出ないようです。

      SMBIOSのfirmwareのバージョンなどは、項目を書かないでおけば、Cloverが自動的に最新情報を書いてくれるらしいと、どこかで読みました。なので最近ではSMBIOSには、機種モデル、シリアル番号、ボードシリアル, UUIDくらいだけを書くようにしています。

      1. ども、Boot macOSさん、お疲れさまです。

        >項目を書かないでおけば、Cloverが自動的に最新情報を書いてくれるらしいと、
        >どこかで読みました。
        おぉ!そうなんですね。いいこと聞けました。

        ちょっと確認してみます。ありがとうございました。
        そうゆうこと知らないので、ちまちま手動でUpdateしてました。。。
        Cloverが自動的にしてる動きが確認できたら、そこのメンテは省けるので助かります!

  5. mojaveのmacの別パーティションにcatalinaをインストールして間も無く、mojaveのパーティションの方でログインして放置している時にこのメッセージが出ました。

  6. Big Surで試したところファイル名の変更ができないようですが、できますでしょうか?

    1. Catalina以降(Big Surでも)この問題は発生していないので、試していないです。

返信を残す

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