MRTプロセスの暴走を止める方法

2020/10/22 16:43更新 カテゴリ: Apple

2020.11.01追記
Appleから修正版MRT1.69.3がリリースされました。
「システムデータファイルとセキュリティアップデートをインストール」のチェックを戻したところ、数時間後にはサイレントアップデートされていました。
今の所MRTの暴走などは起きていません。
以下は1.69.3リリース前の対処方法です。

数日前から突然「MRT」なるプロセスのCPU専有率が爆上がり。
常に100%オーバーというわけではありませんが30%くらいから150%くらいで上下してる。
強制終了してもすぐ復活してくる。

いろいろ試して有効な方法がわかりましたのでまとめておきます。

1. MRT.appを古いバージョンに戻す
2. MRT.appのロードを止める
3. MRT.appをリネームする

それぞれ説明します。

1. MRT.appを古いバージョンに戻す

この症状は2020/10/20に「MRTConfigData」が1.67から1.68アップデートされたことで一部のMacで起きています。
このアップデートは告知されず自動的に行われる「サイレントアップデート」です。

「MRTConfigData」はマルウェア削除ツールで、最新版であることが望ましいですがCPUを占有されては困ります。
そこでAppleがこの不具合の対処をしてくれるまでの間、元のバージョン1.67に戻すのもよいかと思います。

MRT.appの在り処は、

"起動ディスク"/システム/ライブラリ/CoreServices/MRT.app

です。

また、古いバージョンに戻すのは有効なのですが、数時間後再びサイレントアップデートで1.68に戻されていました。

これを避けるために、まずは「システム環境設定」の「App Store」で「システムデータファイルとセキュリティアップデートをインストール」のチェックを外します。

次に、MRT.appを古いバージョンに戻す方法ですが、MRT.appは削除したり名前を変えたりは出来ません。古いバージョンに戻すのも同様です。
これをやるには「システム整合性保護(System Integrity Protection)」を一時的に止める必要があります。
その手順は次のとおりです。

Macの起動時(再起動でも可)にリンゴマークが出る前に「コマンド+Rキー」を押しっ放しにして「リカバリーモード」で起動します。
(無線キーボードの場合は起動前に有線接続しておく必要があります)
リカバリーモードのメニューバー「ユーティリティ」から「ターミナル」を起動。

csrutil disable

と入力してEnter。
これで再起動するとシステム整合性保護(System Integrity Protection)無効となります。
しかし私のMac(OSX El Capitan 10.11.6)では

csrutil command not found

と表示されました。
「コマンド+Rキー」のリカバリーモードで古い「ユーティリティ」が起動する場合があるそうです。 この場合はもう一度Macを再起動します。
今度はリンゴマークが出る前に「コマンド+option+Rキー」を押しっ放しにします。
このとき以下のキャプチャのような地球のマークが出ればOKです。 この地球マークの状態が長く続く場合もあるようですが、私の場合は数分でした。
地球マークが消えた後リンゴマークが出て、通常のリカバリーモードが起動されるような流れです。
これで最新の「ユーティリティ」でリカバリーモードが起動するようです。

もう一度「リカバリーモード」のメニューバー「ユーティリティ」から「ターミナル」を起動。

csrutil disable

今度は

Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.

と出て、無事に無効化できました。
次は通常の再起動をします。

再起動したらTime MachineなどでMRT.appを古いバージョン(1.67かそれ以前)に置き換えます。
(古いバージョンが手許にない場合は「2. MRT.appのロードを止める」または「3. MRT.appをリネームする」を参照ください)

Time Machineに入れないときは以下の記事を試してみてください。
Time Machineに入れない時の簡単な対処法

MRT.appを古いバージョンに置き換えたら、再度「リカバリーモード」で起動し、

csrutil enable

と入力してEnter。
これで「システム整合性保護(System Integrity Protection)」が有効となります。

これで完了ですが、AppleからMRT.appの修正版がリリースされたら、「システム環境設定」→「App Store」で「システムデータファイルとセキュリティアップデートをインストール」のチェックを入れるのを忘れずに。

2. MRT.appのロードを止める

Time Machineを使っていないなどで古いバージョンに置き換えられない場合の対処方法です。
「リカバリーモード」で「システム整合性保護(System Integrity Protection)」を無効に(disable)して通常の再起動するまでは同じです。

再起動したら「ターミナル」を起動します。
(「ターミナル」はアプリケーションのユーティリティ内にあります)
今度は次のように入力します。

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.MRTd.plist

パスワードを要求するキーマークが出ますので、管理者権限のパスワードを入力。 (パスワードはタイプしても何も見えません)
これでバージョンに関係なく、MRTは止まります。

この方法は有効ですが、Macを再起動すると戻ってしまいます。
「システム整合性保護(System Integrity Protection)」を元に戻さず(disableのまま)にしておけば、再起動などでMRT.appが作動してしまっても「ターミナル」で

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.MRTd.plist

とすることですぐ止まります。

「システム整合性保護(System Integrity Protection)」を有効に(enableに)戻してしまうと再起動のたびに「リカバリーモード」からの一連の作業が必要です。

再起動ではなく手動でMRT.appが作動するように戻すには「ターミナル」で

sudo launchctl load /System/Library/LaunchDaemons/com.apple.MRTd.plist

とすればOKです(MRT.appの修正版がリリースされた時など)。

3. MRT.appをリネームする

どうせ修正版がリリースされるまでMRT.appのロードを止めるのであれば、2.の方法よりもこちらの方が良いかもしれません。

「リカバリーモード」で「システム整合性保護(System Integrity Protection)」を無効に(disable)して通常の再起動するまでは1.、2.と同じです。

再起動したらMRT.appを名前を変えるか別の場所に退避させるなどします。
これでロードされなくなるはずです。

その後は1.と同様に再度「リカバリーモード」で起動し、

csrutil enable

と入力してEnter。
「システム整合性保護(System Integrity Protection)」を有効に(enableに)戻して完了です。

この場合も、AppleからMRT.appの修正版がリリースされたら、「システム環境設定」→「App Store」で「システムデータファイルとセキュリティアップデートをインストール」のチェックを入れるのを忘れずに。

「システム整合性保護(System Integrity Protection)」の現状の設定を知るにはターミナルで

csrutil status

とすればわかります。

System Integrity Protection status: enabled.

と出れば有効。

System Integrity Protection status: disabled.

なら無効です。
あるいは「Appleメニュー」→「このMacについて」→「システムレポート」で左の一覧から「ソフトウェア」をクリックすると確認できます。

Sponsored Link