はじめに
- Mac は、たまに、以下のような感じで不安定になってしまうことがある。
- アプリを使っていると、特に理由もなくそのアプリが突然落ちる。最新の状態にアップデートしたアプリなのに、なぜかこの現象が頻繁に発生してしまう。
- アプリを使っていると、突然 kernel panic で Mac が再起動してしまう。
- 何もしないで放置しているのに、気がつくと kernel panic で Mac が再起動している。
- この現象は、macOS の環境をかなり昔のメジャーバージョンから長い期間アップグレードし続けていると、ある日突然発生する可能性がある。
- このような現象が発生してしまったら、以下の対応を順番に実行することをお勧めする。
⇒ なお、本ナレッジの解説は macOS Catalina (バージョン 10.15) を前提としている。
Mac を安定させるコツ
① 全てのストレージに First Aid をかける
- 復旧パーティションから起動 (起動時にリンゴマークが出るまで command + R を押しっぱなしに) し、ディスクユーティリティを呼び出して全てのボリューム (ストレージ) に First Aid をかける。
- 要は「ストレージに UNIX 系の fsck をかける」と思えばいい。
APFS ボリュームを First Aid にかける時の注意事項
- ボリュームのファイルフォーマットが APFS (APple File System) になっている状態で Time Machine を使ったバックアップを実行していると、APFS のローカルスナップショットが自動的に作成されてしまう。このスナップショットの内容は First Aid や後述するセーフブートの時に一つ一つチェックされるので、ローカルスナップショットが多数存在すればするほど First Aid の完了やセーフブートに時間がかかってしまうことになる。
- First Aid やセーフブートの実行前に全ての APFS ローカルスナップショットを消しておきたい場合は、ターミナル上で以下のスクリプトを実行するとよい。
【スクリプトファイル:deletelocalsnapshots】
【実行例】#!/bin/csh -f tmutil listlocalsnapshots / foreach i (`tmutil listlocalsnapshots / | grep com.apple.TimeMachine`) set timemachine_stamp = `echo $i | sed 's/^com.apple.TimeMachine.//' | sed 's/.local$//'` sudo tmutil deletelocalsnapshots $timemachine_stamp end
$ ./deletelocalsnapshots Snapshots for volume group containing disk /: com.apple.TimeMachine.2020-06-18-030721.local com.apple.TimeMachine.2020-06-18-040720.local com.apple.TimeMachine.2020-06-18-050700.local : com.apple.TimeMachine.2020-06-19-020516.local com.apple.TimeMachine.2020-06-19-030508.local Password: Deleted local snapshot '2020-06-18-030721' Deleted local snapshot '2020-06-18-040720' Deleted local snapshot '2020-06-18-050700' : Deleted local snapshot '2020-06-19-020516' Deleted local snapshot '2020-06-19-030508' $ _
② セーフブートで起動する
- セーフブートで起動 (起動時にリンゴマークが出るまで shift を押しっぱなしに) し、ログイン画面が出たら CPU が落ち着くまで何もしないでしばらく放置。その後、余計なことをしないで再起動する。
- セーフブートを実行すると、積りに積もった様々なキャッシュを削除してくれる。
③ NVRAM / PRAM をリセットする
- 起動直後に option + command + P + R を押しっぱなしにし、起動音が二回鳴ったらキーから手を離す。
- 起動音が鳴らないモデルも存在するので、そのようなモデルを使っている場合は、15秒間キーを押し続ける。
- NVRAM / PRAM リセットは kernel panic が発生した時に実行することが推奨されている。
④ SMC をリセットする
- 以下の解説を参考にすること。
⑤ 動的ライブラリキャッシュを再生成する
- アプリケーション ⇒ ユーティリティ ⇒ ターミナル を起動する。
- 以下のコマンドを入力する。
sudo update_dyld_shared_cache -root /
⑥ カーネル拡張モジュール (KEXT) のキャッシュを再生成する
- ターミナルで以下のコマンドを入力する。
sudo kextcache -system-caches
それでも安定しない場合は…
- それでも kernel panic が発生してしまう場合は、以下を疑ってかかるとよい。
- いずれかのストレージで読み書きがうまくできない不良セクタが発生している。
- 筆者の場合、kernel panic で突然の再起動を繰り返す iMac から取り外した外付け USB HDD を Windows の WD Data Lifeguard Diagnostic で QUICK SCAN してみたら "Too many bad sectors detected." と出た。恐らくこれがシステムが不安定な原因の一つである。
- RAM で読み書きエラーが発生している。
- 市販の RAM を増設している場合は、一度くらいは Memtest86 で RAM に問題がないことを確認しておくことを推奨する。
- 本体のロジックボードが故障している。
- 以下の手順で本体の故障を診断できる。
⇒ Macの問題を診断する
- 以下の手順で本体の故障を診断できる。
- いずれかのストレージで読み書きがうまくできない不良セクタが発生している。
macOS Catalina (バージョン 10.15) 固有の問題
- macOS Catalina は“userspace watchdog timeout: no successful checkins from com.apple.WindowServer”という kernel panic を引き起こしてしまう以下のような問題を抱えていると言われており、筆者も 27インチ 5K iMac でその現象に遭遇している。
- 最新の macOS Catalina において「いくつかの GPU との組み合わせで WindowServer のフリーズによる kernel panic を AppleGVA.framework が引き起こす可能性があるように見える」という報告がある。
- Navi GPU は、間違いなくこの問題を引き起こす GPU アーキテクチャの1つである。
- このフリーズは、4K 動画を再生したり macOS Catalina がスリープしたりする時に発生することが多い。
- 最新の macOS Catalina において「いくつかの GPU との組み合わせで WindowServer のフリーズによる kernel panic を AppleGVA.framework が引き起こす可能性があるように見える」という報告がある。
- この問題は、最新の macOS Catalina バージョン 10.15.5 でも解決されていない。
- 以下の対策を実施することで、macOS Catalina が kernel panic を引き起こす頻度を減らすことができる。
- システム環境設定の「省エネルギー」を開き、「Power Napを有効にする」と「可能な場合はハードディスクをスリープさせる」のチェックを外す。
- 4K 動画を極力再生しないようにする。