FreeBSDでddで吸い出したHDDイメージをマウントする

概要

FreeBSDでdd等で作ったイメージをマウントするにはmdconfig実行後にデバイス名がたぶんmd0とかで出てくるのでそのmd0を普通にマウントするとよい
以下例

# mdconfig -a -t vnode -f hdd.img
md0
# mount_ntfs -C CP932 /dev/md0 /mnt

HDDが死んだ\(^o^)/オワタ

自分のメインPCのHDDが突然壊れました。
ATOKが急に動かなくなったー!再起動しよう!と思って再起動したらOSすら起動しない。
HDDから異音がするのに気がついて翌日新HDDを買ってきてOS再セットアップしました

旧HDDへの未練

まぁ仕事データはサーバに置いてるし写真も2010年分までは外付けHDDにおいてるし4月からの写真はデジカメ内のSDカードにあるしgoogle chromeのデータはなんか同期したらほとんど戻ったし*1失ったデータは幼稚園の父母会の書類と、3月までの写真だけだから旧HDDの中身は別にいいやー
と思っていたのですが!今年の1月に幼稚園の誕生会イベントの写真を撮ったのにバックアップして無かったのを思い出したり、IS01用の諸々データや、お宝画像*2が失われたことに気がつき、何とか復旧できないだろうか!と思った次第

Windowsから認識しないパーティション

しょっちゅう重要なデータを消したりするのでファイナルデータとか買って持ってたりするので、旦那の予備PCがリムーバブルカートリッジとかついてて作業がしやすいので旧HDDをUSB変換ケーブルにつけて
WindowsからHDDが認識できれば何とかなるでしょーと思ったらWindowsからCドライブとsystem reservedになってたパーティションしか見えませんorz重要なのはDドライブにしてたパーティションなのに!
ファイナルデータにも探させたけどだめだった\(;o;)/

Linuxではどうだ

ubuntuのCDを焼いて起動すると目当てのパーティションが/dev/sddとして認識しました!認識したところでddでイメージを吸い出し。元々150GBのパーティションだったのにイメージが60GBしか無くて、これしか吸えなかったのかーと思ったらddのオプションがいろいろ不適切でした。

$ sudo dd if=/dev/sdd conv=sync,noerror of=/media/なんたら/hdd.img 

として吸い出しやりなおし。
全部で36時間くらいかかったけど、150GB位のイメージを吸い出せた。
bsが小さい方がエラーのあるHDDはよいらしいという情報を得てbs指定しなかったんだけど、obsは指定した方が早かったのかもしれない。

得たイメージをFreeBSD鯖にコピー

旦那が帰って来る前にPCを開けないといけなかったので、150GBのイメージをネットワーク経由で自分が自由に使えるFreeBSD鯖にコピー。
ssh鍵を生成して自分のホームページに一旦公開鍵おいて、それから鍵束の入ってる自分のPCでブラウザから鍵をコピペしてauthorized_keysに追加したー

Linuxext4においてあるイメージはバックアップのためにいじらないでおこうと思った。

で、FreeBSDNTFSのイメージがマウントできない

やっと概要の話題。
ddでとったHDDイメージをマウントしようとおもって

# mount -o ro,loop hdd.img /mnt

とかやったけど当然エラーな訳で…あーこれLinuxのmountだよなー、FreeBSDでループバックマウントってどうやるんだろう?と思ってman mountやらman mount_ntfsやらしてみたり、googlefreebsd ループバックマウントとかfreebsd imgとかしてみたけどいまいちよくわからず
もう遅いから旦那が明日会社に行ったらまたPC借りて作業しよう

と思ってつぶやいたら、助けの手が!
私、@koie氏には前にも何かFreeBSDで助言してもらってる様な気がします。ありがたい!

できたできた!

とりあえず当初の目的の幼稚園のお誕生日会の写真と動画を救えました!*3
が!幼稚園の父母会資料とポケモンいろいろの入ったUsers\nyomoフォルダが見当たらないorz
うーんこれはイメージを実HDDに書いてファイナルデータにかけて見るべきなんだろうかー

*1:細かい設定とかstylishcss無くなったけど

*2:エロじゃないよポケモンとかだよ

*3:フォルダ名が文字化けするけどまぁ問題ない