Windows で CompactFlash (複数のパーティションを含む) をディスクイメージ化

結論としては,Cygwin 版 dd でいけた (当然,UNIX 系 OS は付属の dd でいけるはず).

背景

ANS-9010 のバックアップ先の CompactFlash の内容 (Windows 7 のインストールイメージ) をディスクイメージとして取り出す目的で.
Windows 7 のインストール先ドライブの先頭 100MB にはシステム予約の別パーティションが作成されるため,バックアップ先の CompactFlash には 2 パーティションが含まれてしまう.この CompactFlash をメディアリーダーで Windows に認識させると,先頭 100MB だけにドライブレターが割り当てられる.それ以外の領域に「ディスクの管理」でドライブレターを割り当てようとしたが,下記のエラーが出て無理だった.

ディスクの管理コンソールのビューが最新の状態でないため、操作を完了できませんでした。タスクの最新の情報に更新を使ってビューを最新の情報に更新してください。問題が解消されない場合は、ディスクの管理コンソールを閉じてからディスクの管理またはコンピューターを再起動してください。

Cygwin 版 dd を用いた方法

対象 CompactFlash のデバイス名を調べ,dd や cat で取り出す.

rero@carnelian ~
$ cat /proc/partitions
major minor  #blocks  name

    8     0  14913023 sda
    8     1    102400 sda1
    8     2  14808064 sda2
    8    16 488386584 sdb
    8    17 488384001 sdb1
    8    32 1465138584 sdc
    8    33 1465136001 sdc1
    8    48  15761088 sdd  ← これが対象の CompactFlash
    8    49    102400 sdd1
    8    48  14808064 sdd

rero@carnelian ~
$ time dd if=/dev/sdd of=/cygdrive/d/win7_20091219_1.img bs=1M
dd: reading `/dev/sdd': No space left on device
15391+1 records in
15391+1 records out
16139354112 bytes (16 GB) copied, 913.007 s, 17.7 MB/s

real    15m13.093s
user    0m0.140s
sys     0m19.031s

rero@carnelian ~
$ time cat /dev/sdd > /cygdrive/d/win7_20091219_2.img

real    15m20.641s
user    0m2.406s
sys     0m25.093s

rero@carnelian ~
$ ls -l /cygdrive/d/win7_20091219_*.img
-rw-r--r-- 1 rero None 16139354112 Dec 20 01:20 /cygdrive/d/win7_20091219_1.img
-rw-r--r-- 1 rero None 16139354112 Dec 20 01:40 /cygdrive/d/win7_20091219_2.img

rero@carnelian ~
$ diff /cygdrive/d/win7_20091219_*.img

rero@carnelian ~
$ (両者に差分無し)

なお,Cygwin をあらかじめ「管理者として実行」しておかないと下記エラーメッセージで失敗する.

rero@carnelian ~
$ dd if=/dev/sdd of=/cygdrive/d/win7_20091219_1.img bs=1M
dd: opening `/dev/sdd': Permission denied

rero@carnelian ~
$ cat /dev/sdd > /cygdrive/d/win7_20091219_2.img
cat: /dev/sdd: Permission denied

試してみて駄目だった方法

DDforWindows (Silicon Linux による GUI 版)

http://www.si-linux.co.jp/wiki/silinux/index.php?DDforWindows
「ディスク選択」で対象 CompactFlash を選べないため不可.

dd for Windows (chrysocome.net 版)

http://www.chrysocome.net/dd
dd --list で先頭 100MB のパーティションしか候補に挙がらなかったため不可.

Check Flash

http://www.forest.impress.co.jp/article/2008/11/04/checkflash.html
Access type が As logical drive ではドライブレター付きパーティションしか選べず,As physical drive では候補が全く表示されないため不可.

EASEUS Todo Backup

http://www.forest.impress.co.jp/docs/review/20090827_310851.html
リムーバブルディスクが候補に挙がらなかったため不可.

EASEUS Disk Copy

http://www.forest.impress.co.jp/article/2008/08/26/easeusdiskcopy.html
上のソフトと作者が同じ.ブータブル iso イメージによる配布だったので,めどくて試していない.

Disk2vhd

http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx
物理ディスクを VHD 形式の仮想ディスク (Virtual PCHyper-V の使用形式) に変換できるマイクロソフト提供ツール.
VHD 形式は標準で Windows 7 からマウントできるらしい.
しかし,リムーバブルディスクが候補に挙がらなかったため不可.
また,仮に CompactFlash から読み出せたとしても,もう一度 CompactFlash に書き出せるのか不明確だった.

Windows 7 の標準機能 (「ディスクの管理」や diskpart)

http://technet.microsoft.com/ja-jp/windows/dd875657.aspx
そもそも,VHD 仮想ディスクを新規作成する機能であり,物理ディスクからの変換はできない模様.