さて、実はここしばらくわかっていたことなのですが、私のMacBook、ゴミ箱が空に出来ない状態が続いていたのです。で、昨日ふとディスクユーティリティでディスクをチェックしてみると…。
エラー:基になるタスクが終了時に失敗したことが報告されました
というメッセージが出て、ディスクユーティリティが検査を放棄!
ちなみにこのメッセージでGoogleを検索すると、
『ディスクユーティリティでボリュームを修復中に「基本タスクが失敗を報告しました」と表示される』
というページが引っかかる。このページによると…。
このまれな問題が発生した場合は、できる限り早急に問題を解決してください。
重要なデータやファイルをできる限りバックアップし、他社製のディスクユーティリティを使ってドライブの修復をお試しください。お使いの Mac OS X のバージョンで動作する他社製ディスクユーティリティを確認の上、ご利用ください。
重要なデータやファイルをできる限りバックアップし、問題のあるボリュームに Mac OS X を消去してインストールします。
あべし!
てなことで、冷静に考える。このような異常なメッセージは例のゴミ箱から消せないフォルダに原因があるに違いない。
このフォルダ、ちょっといじってみました。そうすると…こりゃやばいわ。完全にファイルシステムがぶっ壊れてます。なにしろ、こんな感じですから。
はい、原因はわかっています。以前、ファイル共有の検証をする際に、MacOSの限界に挑戦する!という感じの変なフォルダを山ほど作り、それをAFPでコピーしてみたり、いっぺんWindowsに移した末にCIFS経由で外から書き込んだり、ということをやっていたら出来てしまったフォルダなのです。
ここで、冷静に考えてみました。私はFileVaultを使ってホームディレクトリを暗号化しているので、結局これはFileVaultの中の問題です(FileVaultは、ディスクイメージをマウントする機構なので、中になんの矛盾があろうが、本体のディスク的にはファイル1個の中の問題で、最後の手段としてはそのイメージファイルを消せば直るはず)。
つまり、このフォルダが原因であれば、それ以外のホームディレクトリの内容を別の場所にバックアップを取り、いっぺん私のホームディレクトリをFileVaultのイメージファイルごと消去してもう一度作り直し、リストアすればいいのではないでしょうか?
そう思って、まずは一時ユーザを管理者権限で作成しました。
まずはこのユーザでディスクユーティリティ。相変わらず例のメッセージで失敗します。
なるほど、そうくるか、ということで、再度自分のユーザでログイン。
いつも、バックアップを取っているディスクはあるのですが、今回は念のため、別のディスクをUSB2.0で接続し、rsync を使ってバックアップを取ってみます(私はログインシェルがcshなので、cshでの書き方になります)。
% cd % mkdir /Volumes/外部ディスク名/backup % rsync -avEH --exclude .Trash {.??*,*} /Volumes/外部ディスク名/backup
単純コピーにrsyncを使うので、rsyncのオプションにuは不要です(uを付けると遅くなります)。それより、リソースフォーク(というよりExtended Attributes)とハードリンクのコピーもするため、EとHのオプションを忘れないようにしてください。
で、MacOSはFireWireのディスクから起動できるので、いざというときのための起動ハードディスクをFireWireで繋ぎ、再起動。起動時にOptionキーを押して、FireWireを選択します。
ここで、ディスクユーティリティを起動。そうすると…、なぜか今回は無事に修正できました。やった!
ということで、再度内蔵ディスクから起動。一時ユーザでログインします。「システム環境設定」から、遠慮なく私のアカウントを削除(ホームディレクトリも同時に消すオプションを付ける)します。FileVaultのため、ホームディレクトリは一枚のイメージファイルなので、瞬時に消去されます。
で、直後に同じユーザ名で自分のアカウントを再作成します。ちょっとUIDがどうなるか心配だったのですが、旧UIDと同じ501番で作成されました。よかった。
% id hosokawa uid=501(hosokawa) gid=501(hosokawa) groups=501(hosokawa), 81(appserveradm), 79(appserverusr), 80(admin)
ここで、もう一度新しい自分のアカウントでログインします。
今度は
% cd % rsync -avEH --exclude .Trash /Volumes/外部ディスク名/backup/{.??*,*} .
で、ファイルをリストアし、終了したらすぐにログアウトして、再度ログインします。やった、デスクトップその他も、消去前の姿に戻っています。アプリケーションの動作も問題なし!
ディスクユーティリティでも正常な状態に戻っています。
ということで、最後にFileVaultでホームディレクトリの暗号化ををかけ直して終了です。
今回は、FileVaultに、ファイルシステムが致命的に壊れた場合でも、イメージファイル一枚なので、その影響が局所化されるという、思わぬ利点があることがわかりました。これはいいかも。
ところで、MacOS Xのユーザになってそろそろ半年、トラブル対処力も結構着いてきた感じです。これにて一件落着、めでたしめでたし。