MacのOSがEl Capitan(OSX10.11)になってからというもの、マシンがスリープするたびに外付けハードディスクが勝手にアンマウントされてしまい、スリープから復帰するときに「ディスクの不正な取り出し」というメッセージが表示されるようになって非常に困っていた。
最初は外付けハードディスクの省エネモードが悪さをしているのかと思ったが、いろいろ調べてみるとハードディスク側の問題ではなくOSXのバグらしい。自分のケースではEl Capitanにアップデートしてから発生するようになったのだが、Marverick(OSX10.9)のころから確認されていた現象らしい。しかも、単純にスリープしたときに起きるのではなく、「スリープ時」に「iTunesが立ち上がっている」ときだけに起こる現象らしい。なんじゃこりゃ。
最近のアップルのOSはOSXだけでなくiOSなんかでもそうなんだけれど、多くの人がかなりシリアスなバグを指摘しているにもかかわらず、長期にわたってそれが修正されないケースがよくある。この外付けハードディスクにまつわるバグもMavericksのころからあるらしいから、いつになったら修正されるのか判らない。それを待っているわけにも行かないのでとりあえず対策を考えた。
幸い、スリープ時にiTunesが立ち上がっていなければ起きないようなので、スリープを検知してスリープする前にコマンドを実行できるようなツールがあればiTunesを殺して現象を回避できそう。
Google先生に”run script before sleep mac”でおたずねしたところかなり近いことのできるGUIツールを発見。
ControlPlaneというアプリケーション。これ、どういうツールかというと、Macのネットワーク接続やその他種々のマシン状態から「コンテキスト」を定義して、それぞれにコンテキストに切り替わったときにいろんなことを自動で行わせることができる。たとえばWindowsマシンでネットワーク切り替えを自動でやってくれるようなツールに近いイメージだが、ネットワーク設定の変更だけじゃなくてさらにいろんなことができる。
たとえ、「IPアドレスが○○になったら」→「デフォルトプリンタを××」に設定するとか「USBデバイス○○が接続されたら」→「××アプリケーションを立ち上げる」というようなことが可能になる。このトリガー条件の中に「マシンがスリープしたら」というのがあるので、今回はそれを使ってみる。
ControlPlaneをインストールして環境設定を開きまずContextタブでコンテキストを定義する。今回はスリープするときのコンテキストなので、”OnSleep”とでも名付ける。
次に Evidence SourceタブでSleep/Wake Eventにチェックを入れておく。
そして、Rulesタブで+ボタンをクリックして”Add ‘Sleep/Wake Event’ Rule”を選び、System going to で”Sleep”を、Contextには先ほど上で定義した”OnSleep”を選ぶ。ここでConfidenceはスライダを右いっぱいに寄せて100%にしておく。(そうしないと、スリープ時にもイベントがトリガーされないことがある。)
最後にActionタブで+ボタンをクリックして”Application Actions” → “Quit Application”を選ぶ。設定ダイアログでは、Quit application with this nameのテキストボックスに”iTune”と記入し、先ほどと同じようにOnSleepをコンテキストに選び、さらにいつ発動するかについては”On arrival”を選んでおく
以上でマシンがスリープしようとするとOnSleepコンテキストが発動してiTunesを終了してくれる。今のところスリープしても「ディスクの不正な取り出し」現象はないのでなんとかこれで回避できているんだろう。
めでたしめでたし、、、じゃねーよ、、、とっととこんな下らないバグ直してくれよ! アップルさんよぉ。
(2017年1月11日:追記)
自分の環境下では、上記方法で「ディスクの不正な取り出し」を回避することはできているが、たまーになにかが失敗してするのか、サスペンドから復帰すると外付けHDDがアンマウントされてしまっているケースがある(月数回の頻度)。この場合「ディスクの不正な取り出し」メッセージは出ていません。HDDの電源Off/Onで再認識してくれるが、ちょっと気持ち悪い。
外付けHDDをMac本体ではなくUSBハブ経由でつなぐと「ディスクの不正な取り出し」を回避できるという解説をしている所もあるようだけれど、自己の環境下ではそれは全く効き目がなかった。原因についても色々なのだろうか。
Marvericksあたりから始まった現象のようだけれど、MacOS Sierraになってもこういうシリアスな問題がいまだ解決されないのは困ったもの。
「macOS El Capitanの「ディスクの不正な取り出し」を回避するための備忘録」への1件のフィードバック