How To Mount DMG Files from Command Line in Mac OS

DMG files are proprietary disk image files used for software distribution in Mac OS. Providiing both password protection and bzip2-like compression, these files are perfect packaging medium.

Usually DMG files are opened automatically when you click them in Finder. They appear as a folder with files, but actually Finder mounts each DMG file as a separate filesystem and then shows you its contents. If you’re observant enough, you’ll see that in the left side panell of Finder you have all the active DMG filesystems listed and ready to be ejected once you finish copying the files or installing new software.

Sometimes you may want to download and mount DMG file using Mac OS command line, and in this post I’ll show you how to do it

Why would you want to mount DMG files manually?

I’ve been business traveling quite a bit lately which means I’m most of the time away from my home computer. Naturally, I have configured Remote Desktop access so that I can use my iPad to access my desktop whenever I need, but sometimes it takes forever to do some simple things just because of the graphics environment overhead.

If you’re like me, you’ll probably find Remote Desktop over 3G to be pretty boring, and will want to do as much as you can via command line.

Mounting DMG with hdiutil command

In order to manually mount DMG file, you’ll need to use hdiutil command. You don’t have to be a privileged user, so can do it as your own user.

For this example, I’m going to use the command line interface (CLI) for the excellent HandBrake tool, which is great for converting all sorts of videos into iPad and iPhone friendly resolution and mp4 format

Let’s mount the image from my dmg file:

MacPro:~greys$ hdiutil attach /Users/greys/HandBrake-0.9.8-MacOSX.6_CLI_x86_64.dmg/dev/disk4 Apple_partition_scheme/dev/disk4s1 Apple_partition_map/dev/disk4s2 Apple_HFS /Volumes/HandBrake-0.9.8-MacOSX.6_CLI_x86_64

As you can see from this output, the mount was successful and you now have the filesystem from DMG package available under the /Volumes/HandBrake-0.9.8-MacOSX.6_CLI_x86__64 directory.

Don’t want to to take my word for it? Let’s use the standard mount command to confirm that indeed we now have an new filesystem mounted:

MacPro:~ root# mount | grep HandBrake/dev/disk4s2 on /Volumes/HandBrake-0.9.8-MacOSX.6_CLI_x86_64 (hfs, local, nodev, nosuid, read-only, noowners)MacPro:~ root# cd /Volumes/HandBrake-0.9.8-MacOSX.6_CLI_x86_64/MacPro:HandBrake-0.9.8-MacOSX.6_CLI_x86_64 root# ls.Trashes HandBrakeCLI doc

Ejecting mounted DMG images from command line

Once you are done with whatever you were trying to do, there’s no longer a reason to keep your DMG image mounted, so you should unmount it. While it’s possible to use umount command, I think it makes more sense if you use the same hdiutil tool that helped you mouunt the DMG image in the first place.

Here’s how you can eject the DMG image using hdiutil:

MacPro:~ greys$ hdiutil eject /Volumes/HandBrake-0.9.8-MacOSX.6_CLI_x86_64/"disk4" unmounted."disk4" ejected.


That’s it for today, hope you liked the post! Let me know!