MacOSで dd コマンドを使う

MacOS 10.6のターミナルから dd コマンドを使ってUSBメモリに書き込みをしようとしたところ、ちょっと手間取ってしまったので、次回に備えてメモを残すことにしました。

背景

USBメモリーから FreeBSD を起動してインストールを行うためファイルシステムを作るために、freebsd.org から、FreeBSD-8.3-RELEASE-amd64-memstick.img をダウンロードしてきました。

さて、どのマシンでコピー作業をしようかと考えてみると、高負荷稼働中だったりUSBポートが1.1(コピーに30分くらい掛かる)だったりで意外と作業できるFreeBSDマシンが空いていません。やむなくMacMiniで作業することにしました。

作業内容

MacMiniにUSBメモリを差し込むと、フォーマット済みの場合、自動的にマウントされてしまい、使用中としてマークされてしまいます。ターミナルウィンドウを開いて df で確認すると、/dev/disk4s1 にマウントされています。つまり、/dev/disk4 がデバイスファイル名。s1はスライス1(パーティション1)の意味。

[mini3:~/Downloads] % df
Filesystem 512-blocks Used Available Capacity Mounted on
/dev/disk0s2 976101344 641543536 334045808 66% /
devfs 242 242 0 100% /dev
map -hosts 0 0 0 100% /net
map auto_home 0 0 0 100% /home
/dev/disk4s1 3944184 1240 3942944 1% /Volumes/Untitled

構わずイメージコピーのための dd コマンドを発行すると、

dd if=FreeBSD-8.3-RELEASE-amd64-memstick.img of=/dev/disk4 bs=64k
dd: /dev/disk4: Resource busy

となり、書き込めません。マウントされているから駄目みたいです。当然と言えば当然。OSが勝手にumount してくれる訳ではありません。いろいろ試して、次のようになりました。

% sudo umount /Volumes/Untitled
unount(/Volumes/Untitled): Resource busy -- try 'diskutil unmount'

ディスクユーティリティーコマンドを使えということのようです。指示に従って、

[mini3:~] % diskutil umount /Volumes/Untitled
Volume (null) on disk4s1 unmounted

と、diskutil umount コマンドを試すと、umount され、USBメモリはOSから見える状態に遷移したので、dd コマンドを発行。

イメージコピーコマンド dd を発行

dd if=FreeBSD-8.3-RELEASE-amd64-memstick.img of=/dev/disk4 bs=64k

このメモを書いている間に、コピーが無事に終了。

17300+1 records in
17300+1 records out
1133813760 bytes transferred in 683.283352 secs (1659361 bytes/sec)

めでたしめでたし。コマンドラインからじゃなくて、GUIのディスクユーティリティーを起動しても同じ事が出来るのかも。

コメントを残す