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

  • By Christopher Kielty, last updated May 8, 2018

This guide covers the verbatim copying of a DMG image to a USB thumb drive using only Linux (no need to find a Mac). If the DMG was intended to be bootable then the resulting USB will 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.

See also: How to work with DMG files in Linux

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.

~$ lsblkNAMEsdasda1sda2sda5sdbsdb1sdb2sdb3sr0MAJ:MIN8:08:18:28:58:168:178:188:1911:0RM000011111SIZE20G18G1K2G7.3G30K4.5G6K1024MRO000000000TYPEdiskpartpartpartdiskpartpartpartromMOUNTPOINT/[SWAP]sdb is the actual diskthis is what we wantthese representpartitions within thedisk (don't use these)

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/<PATH TO MOUNTED DRIVE>

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.