twitterのTLでインターネット老人会というハッシュタグが流行してたので、過去の思い出に浸ろうとノートPCを起動してみたり。そしてHDD取り出したほうがいいんじゃねと思い、ノートPC(NEC LaVie NX, PC-LW33H82D)にあったHDDを摘出した。裏のネジ3本*1を外した後カバーの一部を外すと2.5インチIDE-HDDが見えるのでネジなりケーブルなりいろいろ外せば摘出完了。ちょうどIDE-USBアダプタがあったのでこれを使って中身を覗いてみたり、Ubuntu機でディスクイメージを作成するなどした。過去の黒歴史がァァ! あとはUbuntu機でWine使ってHDDにあったゲームを動かしてみたりしたのは秘密。
・・・Ubuntu機でディスクイメージを作成、マウントした時のメモは続きを読むから。
ディスクイメージ作成
mountコマンドなどでどのデバイスなのか予め確認。ここでは当該デバイスを/dev/sdbとして進める。
アンマウントしておき、ddコマンドでさくっとやってみる。
$ sudo dd if=/dev/sdb of=/path/to/image.img
しかし、使っていたHDDには不良セクタがあったため、途中でエラーとなり停止してしまった。そこでconv=sync,noerrorを付けてエラーが発生してもそのまま続行するように設定。エラーとなった部分はNULパディングされる。
$ sudo dd if=/dev/sdb of=/path/to/image.img conv=sync,noerror
約6.4GBのHDDで約20分近く掛かった。他の作業をしながらやっていたし512バイト単位で処理していたから仕方ないか。
マウント
ループバックデバイスを利用してマウントする。
参考ページの通りに/etc/modprobe.d/loop.confにループバックデバイスの設定を書いて反映。もしループバックデバイスが足りない時はmax_loop=8の8の部分を書き換えればOK。
$ sudo vi /etc/modprobe.d/loop.conf $ cat /etc/modprobe.d/loop.conf options loop max_part=63 max_loop=8 $ sudo modprobe loop
空いているループバックデバイスにHDDイメージを接続。
$ sudo losetup -f /path/to/image.img $ sudo losetup -a /dev/loop0: [fc00]:11017913 (/path/to/image.img)
しかしパーティションである/dev/loop0p*が無くこのままではマウントできないので、kpartx*2を使って/dev/mapper以下にパーティションをマッピングしマウントできる状態にしてから、目的のパーティションをマウントする(fdisk -lで確認する)。
なお、環境によってはマッピング後、ファイルマネージャからマウントできる状態になっているのでそこからマウントしてもOK。
$ sudo fdisk -l /dev/loop0 ディスク /dev/loop0: 6495 MB, 6495068160 バイト (中略) デバイス ブート 始点 終点 ブロック Id システム /dev/loop0p1 * 63 6305039 3152488+ b W95 FAT32 /dev/loop0p2 6305040 12670559 3182760 5 拡張領域 /dev/loop0p5 6305103 12670559 3182728+ b W95 FAT32 $ sudo kpartx -a /dev/loop0 $ sudo mkdir /mnt/vhd $ sudo mount /dev/mapper/loop0p1 /mnt/vhd
使用が終わったらアンマウント後、マッピングを解除しループバックデバイスからHDDイメージを切り離す。
$ sudo umount /mnt/vhd $ sudo kpartx -d /dev/loop0 $ sudo losetup -d /dev/loop0