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のディスクユーティリティーを起動しても同じ事が出来るのかも。