How to write a DMG image to a USB thumb drive with Linux

This guide is for anyone who wants to make an exact copy of a DMG image to a USB thumb drive using Linux. Afterward, if the DMG image was intended to be bootable, the resulting USB drive should be bootable.

Convert to ISO

Linux doesn’t much care for DMG files. Sure, it’ll play nice with them. But we don’t just want to play nice. We want to copy a DMG image to a USB drive and keep it as verbatim as computationally possible. In order to do this, we’re first going to convert the image to a format that’s a little more universal: ISO.
We’re going to use dmg2img to convert the DMG to an ISO image. If you already have dmg2img, great. If not, install it using your distribution’s native package management system.
On Ubuntu, you’d do it like this:

sudo apt-get install dmg2img

Once you have dmg2img installed, begin converting the DMG file:

dmg2img file.dmg

After a few minutes, you should have a second file called image.img. This file can be used like an ISO. All we have to do is change the extension. Use mv to do this:

mv image.img image.iso

Make sure you specified “image.img” and not “image.dmg”! Working with three different file extensions can get kind of confusing.
Ok, so we should now have a file called “image.iso” which is just “image.img” with a different extension.
lsblk
Now we want to write “image.iso” to our USB drive. I used “lsblk” to figure out how the system was identifying my drive. The lsblk command lists all disks connected to the system. It’s usually pretty easy to figure out which disk is which based on their size. Just be sure you’re sure. This process is going to overwrite the target disk with the contents of our DMG image file. Any preexisting files on the target disk will be lost. As usual, make sure you have a proper backup.
Make sure the target drive isn’t mounted. Unmount the drive with your distribution’s GUI.
Or you could just unmount it from the terminal:

sudo umount /media/

Most systems seem to mount external drives in /media. Sometimes the drive might be mounted in /mnt or elsewhere.
Write the ISO image to the USB drive like this:

sudo dd bs=4M if=image.iso of=/dev/sdX %% sync

Replace “X” with the appropriate letter. For example “/dev/sdb”. Be sure to use the drive directly and not a partition within the drive. For example, don’t use “/dev/sdb1”.
This will probably take a little while to complete. I’m using a Kingston DataTraveler DTSE9 and it took about 24 minutes 30 seconds to write 4.9GB.
Your new USB stick should now be bootable, assuming that was the intended purpose of the DMG.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s