「コンピュータに問題が発生している可能性があることが検出されました」
というダイアログパネルが先週唐突に現れました。Mojaveにアップデートしてからだいたい1週間目のことです。正確には604,800秒後のことです。
Appleのサポートに公式の説明があります。
このメッセージは、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にアップデートしたことと関係がありそうです。
Table of Contents
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を使う
コメントで紹介していただいた
でRehabManさんが配布しているEFICheckDisabler.kextを使ってみました。これをESPに入れるだけでも、エラーメッセージは止まりました。
メッセージが出ないこともある
原因は不明ですが、このエラーメッセージが一向に出ないマシンもあります。何が違うのかよくわからないのですが(ご存知でしたらコメントでお知らせください)、メッセージが出ないなら、上記の対応をしなくても良いと思います。
追記:いつからかこの問題は発生しなくなりました。少なくともCatalinaでは経験していません。なので古い情報です。(2020/3)