MacBook AirのHDDが起動しなくなった際のデータ引き上げ


MacBook AirがHDDのパーティションのB-tree破損で起動し
なくなった際のデータ引き上げの記録 2010/3/5。
用意したもの:
(i) Max OS X インストールディスク(役に立たず)
(ii) Knoppix 6.0.1 Live CD (600MB CD版、DVD版ではない)
(iii) 純正USB DVDドライブ
(iv) 他のMacbook(役に立たず)
(v) Fedora 11 Linux マシン
(vi) 外付けUSB HDD (ともに容量80GB以上) 2台

1. まず、Mac OS XのインストールDVDを試した。
純正DVDドライブをつなぎ、ディスクを入れ、
起動時にCommand+Cを押しつづけてDVDからブートする。
ディスクユーティリティーを起動してHDDを検証、修復
しようとしたが、Invalid B-tree node sizeというエラ
ーを吐いた。他の方法を探すことにして電源を切った。

2. ここで困ったことに、DVDが取り出せない。なんとか
Appleの情報にたどり着いて取り出す方法が分かった。
起動時にトラックパッドのボタンを押しつづけることで
取り出せた。
3. 続いて、Knoppix 6.0.1 Live CDを試した。
純正DVDドライブをつなぎ、ディスクを入れ、
起動時にCommand+Cを押しつづけてCDからブートする。
"boot:"のコマンドとして"knoppix toram"を入れる。
これで、メモリ上にKnoppixのイメージがおかれた状態
で起動する。
とりあえず、内蔵HDDがマウントできるか試してみる。

mount -t hfsplus /dev/hda2 /mnt/hda2

駄目であった。
ここで、DVDドライブを取り外し、代わりに、容量が
内蔵HDDの容量80GB以上の外付けUSB HDDをつなぐ。
Knoppixのターミナル上で、以下のコマンドを打って
HDD丸ごとバックアップする。(USB HDDの元のデータは消える。)

dd if=/dev/hda of=/dev/sda bs=4096 conv=noerror,sync

エラーがでるが、読めないセクタがあるのは致し方ない。
読めなかった部分は代わりにゼロで埋められたバックアップ
になる。約2時間でディスク丸ごとUSB HDDにコピーできた。
コピー先のパーティションはマウントできるかと思ったが、

mount -t hfsplus /dev/sda2 /mnt/sda2

はエラーとなった。Knoppixを終了し、シャットダウンする。
4. さて、せっかく作ったバックアップのUSB HDDであったが、
これを他のMacにつないでも、マウントできない。これは、
壊れたディスクイメージのままコピーしたから当然と言えば
当然である。そこで、ターミナルから、このUSB HDDにfsckを
かけてみる。

fsck_hfs -rf /dev/disk1s2

しかし、やはりB-Treeエラーでどうしようもない。
5. データの引き上げ失敗かと思われたが、ふと思い立って
このUSB HDDをFedora 11 (kernel 2.6.30.10-105.2.23)の入っ
たLinuxマシンにつないでみると、問題なく自動で
/media/Macintosh\ HDにマウントされ、データも読める。どうも、
B-Treeが壊れたHFS+ファイルシステムでも、最近のLinuxのドライ
バはある確率でマウントできるようである。おそらく、最近のkernel
では今回のように、USBコントローラの相性によっては読める可能性
がある。

6. ということで、Fedora 11ではデータが読めるので、この
データを、MacがマウントできるHDDにコピーすれば良い。
もう一台、外付けHDDをLinuxマシンにつなげると、/media/HD-UUU
に自動マウントされた。以下のコマンドでデータをコピーする。

rsync -a /media/Macintosh\ HD /media/HD-UUU/

これで、Macから読める外付けバックアップディスクができた。
7. [2012/1/4 追記] 上述の方法ではデータ引き上げに失敗する場合、
上記3.で作ったバックアップのUSB HDDに対してTestDisk
(http://www.cgsecurity.org/wiki/TestDisk)という評判の良い
フリーソフトウェアを試してみるのが良い。
戻る