Monday, May 13, 2013

Using dd on a Mac to copy an ISO file

I downloaded a Fedora ISO file and needed to copy it to a USB memory stick to install on another machine, but the Mac user interface is just enough different from Linux to be annoying:

Hermans-MacBook-Pro:Downloads herman$ sudo dd if=Fedora-18-i686-Live-LXDE.iso of=/dev/disk2
dd: /dev/disk2: Resource busy

Now what?  Some googling later...

Hermans-MacBook-Pro:Downloads herman$ sudo diskutil umountDisk /dev/disk2
Unmount of all volumes on disk2 was successful

Of course, you can also use Disk Utility to unmount the thing.
Hermans-MacBook-Pro:Downloads herman$ sudo dd if=Fedora-18-i686-Live-LXDE.iso of=/dev/disk2

Even Data Definition is different and Ctrl-T will show the dd progress as records in/out.

Raspberry Pi SD Card Images

After copying a RPi image to a SD card, it may be necessary to edit the /etc/rc.local or wpa_supplicant.conf file on the SD card.  To do that, you need to mount the SD card in a Linux virtual machine, since a Mac cannot handle the ext4 file system.  However, when I launched a VM, I found that it cannot connect to the SD card - it isn't visible to the virtual machine.

Solving this is a bit of a headache.  What I eventually did, was to create a special vmdk file that points to the SD card device, then mounted that special virtual disk file in the Linux VM, as described below.

On the Mac, plug the SD card in and run the Disk Utility and unmount the SD card, if it is mounted.  You may need to do this multiple times, so keep it open.

Go to the place where you keep your Virtualbox vmdk files, open a terminal and make a special virtual disk file:
$ sudo VboxManage internalcommands createrawvmdk -filename ./sdcard.vmdk -rawdisk /dev/disk2
$ sudo chmod 777 /dev/disk2
$ sudo chmod 777 ./sdcard.vmdk

If you get a busy error, unmount it again (and again...) as shown up above.

Now open VirtualBox Manager and in the SATA Controller, add an existing hard drive and choose the sdcard.vmdk file.

Launch the Linux virtual machine and mount the rootfs partition /dev/sdb2.  If you are lucky, it will be mounted automatically by the desktop environment.  Now you can edit files on the SD card.

After going through the above, I thought that it may be easier to mount the original ISO image in a Linux VM and fix it, before writing it to the SD card - next time!

No comments:

Post a Comment

On topic comments are welcome. Junk will be deleted.