OSXでの ddによる書き出し

あらかじめやっておくこと


diskutil list で書き出し先ディスクを確認する.

MBP:/ user$ diskutil list
 (略)
/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.7 GB    disk3
   1:             Windows_FAT_32 boot                    62.9 MB    disk3s1
   2:                      Linux                         3.9 GB     disk3s2

外付け SDカードリーダーを使用しているが,disk3になっていた.パーティション構成から想像が付く方もいるかもしれないが,Raspberry Piである.

接続した際に自動的にマウントされるが,このまま ddを走らせてもエラーになるのでアンマウントする必要がある.

単一のパーティションを umountする diskutil unmountでも ディスクそのものを認識させなくする diskutil ejectでもなく, diskutil unmountDiskを用いること.

MBP:/ user$ diskutil unmountDisk /dev/disk3
Unmount of all volumes on disk3 was successful

ddについて


ディスク名の先頭に rを付けることにより Unbuffered Modeになる.

また bs=1m などでブロックサイズを 1m程度で設定すること.

この二つを設定しないと,とてつもなく遅くなる.

MBP:/ user$ sudo dd if=some_image_file.img of=/dev/rdisk3 bs=1m

dd中の進行状況の確認方法.

別コンソールを用意するなどして killallでシグナル INFOを送ると dd側のプロセスでログを吐く.

OSX以外では USR1らしい.

MBP:/ user$ sudo killall -INFO dd

73+0 records in
72+0 records out
75497472 bytes transferred in 11.541480 secs (6541403 bytes/sec)

もしくは Ctrl-T.別コンソールが要らないのでこっちの方がお手軽か.

書き込み完了後


マウント可能な場合は自動的にマウントされ,OSX独自の隠しファイルが作成されてしまう.

念のため消した上で,今度は diskutil ejectする.

MBP:/ user$ rm -rf /Volumes/DISK_NAME/.*
rm: "." and ".." may not be removed
MBP:/ user$ diskutil eject /dev/disk3
Disk /dev/disk3 ejected

以上.