#11 不安定な Mac を安定させるコツ

  macOS  [公開]
icon 古場 正行 が 2020/06/16 1:35 に投稿 ( icon 古場 正行 が 2020/06/23 0:02 に編集 <更新履歴> )

はじめに

  • 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 が発生してしまう場合は、以下を疑ってかかるとよい。
    1. いずれかのストレージで読み書きがうまくできない不良セクタが発生している。
      • 筆者の場合、kernel panic で突然の再起動を繰り返す iMac から取り外した外付け USB HDD を Windows の WD Data Lifeguard Diagnostic で QUICK SCAN してみたら "Too many bad sectors detected." と出た。恐らくこれがシステムが不安定な原因の一つである。
    2. RAM で読み書きエラーが発生している。
    3. 本体のロジックボードが故障している。

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 バージョン 10.15.5 でも解決されていない。
  • 以下の対策を実施することで、macOS Catalina が kernel panic を引き起こす頻度を減らすことができる。
    • システム環境設定の「省エネルギー」を開き、「Power Napを有効にする」と「可能な場合はハードディスクをスリープさせる」のチェックを外す。
    • 4K 動画を極力再生しないようにする。

参考資料

 添付ファイル     - [0]


 コメント追加