Macos – I’m unable to mount a DMG, getting a “no mountable filesystems” error

disk-imagedmg-imagehdiutilmacos

I downloaded a DMG of some commercial Mac software (CSSEdit) but I found that the DMG wouldn't mount. I tried another image from the same company, and then a number of images I had laying around from other software. About half of them mount and half don't. The error is always "no mountable file systems"

My google-foo reveals only some isolated incidents, and the repeated suggestion to reboot (I have, twice). The disk will not mount from Disk Utility either (nor does attempting to verify or repair it from there have any effect). I've also tried re-downloading this image several times using several different programs.

I recently updated to 10.5.8 in case that's relevant.

Here's a paste of what I get when I try to mount the DMG from the command line.

loki:Downloads peter$ hdiutil attach CSSEdit\ 2.6.dmg -Verbose
Initializing…
DIBackingStoreInstantiatorProbe: interface  0, score      100, CBSDBackingStore
DIBackingStoreInstantiatorProbe: interface  1, score    -1000, CBundleBackingStore
DIBackingStoreInstantiatorProbe: interface  2, score    -1000, CRAMBackingStore
DIBackingStoreInstantiatorProbe: interface  3, score      100, CCarbonBackingStore
DIBackingStoreInstantiatorProbe: interface  4, score    -1000, CDevBackingStore
DIBackingStoreInstantiatorProbe: interface  5, score    -1000, CCURLBackingStore
DIBackingStoreInstantiatorProbe: interface  6, score    -1000, CVectoredBackingStore
DIBackingStoreInstantiatorProbe: selecting CBSDBackingStore
DIBackingStoreInstantiatorProbe: interface  0, score      100, CBSDBackingStore
DIBackingStoreInstantiatorProbe: interface  1, score    -1000, CBundleBackingStore
DIBackingStoreInstantiatorProbe: interface  2, score    -1000, CRAMBackingStore
DIBackingStoreInstantiatorProbe: interface  3, score      100, CCarbonBackingStore
DIBackingStoreInstantiatorProbe: interface  4, score    -1000, CDevBackingStore
DIBackingStoreInstantiatorProbe: interface  5, score    -1000, CCURLBackingStore
DIBackingStoreInstantiatorProbe: interface  6, score    -1000, CVectoredBackingStore
DIBackingStoreInstantiatorProbe: selecting CBSDBackingStore
DIFileEncodingInstantiatorProbe: interface  0, score    -1000, CMacBinaryEncoding
DIFileEncodingInstantiatorProbe: interface  1, score    -1000, CAppleSingleEncoding
DIFileEncodingInstantiatorProbe: interface  2, score    -1000, CEncryptedEncoding
DIFileEncodingInstantiatorProbe: nothing to select.
DIFileEncodingInstantiatorProbe: interface  0, score      900, CUDIFEncoding
DIFileEncodingInstantiatorProbe: selecting CUDIFEncoding
DIFileEncodingNewWithBackingStore: CUDIFEncoding
DIFileEncodingNewWithBackingStore: instantiator returned 0
DIFileEncodingInstantiatorProbe: interface  0, score    -1000, CSegmentedNDIFEncoding
DIFileEncodingInstantiatorProbe: interface  1, score    -1000, CSegmentedUDIFEncoding
DIFileEncodingInstantiatorProbe: interface  2, score    -1000, CSegmentedUDIFRawEncoding
DIFileEncodingInstantiatorProbe: nothing to select.
DIDiskImageInstantiatorProbe: interface  0, score        0, CDARTDiskImage
DIDiskImageInstantiatorProbe: interface  1, score        0, CDiskCopy42DiskImage
DIDiskImageInstantiatorProbe: interface  2, score    -1000, CNDIFDiskImage
DIDiskImageInstantiatorProbe: interface  3, score     1000, CUDIFDiskImage
CRawDiskImage: data fork length 0x000000000022EE83 (2289283) not a multiple of 512.
DIDiskImageInstantiatorProbe: interface  5, score     -100, CRawDiskImage
DIDiskImageInstantiatorProbe: interface  6, score     -100, CShadowedDiskImage
DIDiskImageInstantiatorProbe: interface  7, score        0, CSparseDiskImage
DIDiskImageInstantiatorProbe: interface  8, score        0, CSparseBundleDiskImage
DIDiskImageInstantiatorProbe: interface  9, score    -1000, CCFPlugInDiskImage
DIDiskImageInstantiatorProbe: interface 10, score     -100, CWrappedDiskImage
DIDiskImageInstantiatorProbe: selecting CUDIFDiskImage
DIDiskImageNewWithBackingStore: CUDIFDiskImage
DIDiskImageNewWithBackingStore: instantiator returned 0
Verifying…
Verification completed…
Error 0 (Unknown error: 0).
expected   CRC32 $DA5349F2
Attaching…
DI_kextWaitQuiet: about to call IOServiceWaitQuiet...
DI_kextWaitQuiet: IOServiceWaitQuiet took 0.000008 seconds
2009-08-06 21:48:36.456 diskimages-helper[1607:381b] -serveImage: attaching drive
{
    autodiskmount = 1;
    "hdiagent-drive-identifier" = "921062E3-5965-477A-85C8-C93979468CF9";
    "unmount-timeout" = 0;
}
2009-08-06 21:48:36.462 diskimages-helper[1607:381b] -serveImage: connecting to myDrive 0x00004707
2009-08-06 21:48:36.463 diskimages-helper[1607:381b] -serveImage: register _readBuffer 0x0x468000 with myDrive 0x0x0
2009-08-06 21:48:36.463 diskimages-helper[1607:381b] -serveImage: activating drive port 0x0x4807
2009-08-06 21:48:36.463 diskimages-helper[1607:381b] _serveImage: set cache enabled=TRUE returned SUCCESS.
2009-08-06 21:48:36.464 diskimages-helper[1607:381b] _serveImage: set on IO thread=TRUE returned SUCCESS.
2009-08-06 21:48:36.464 diskimages-helper[1607:381b] -serveImage: starting server loop - myPort is 0x0x4807
Volume check completed…
Mounting…
^[[Adiskimages-helper: DI_kextDriveGetRequest returned 0x00000025 (37) ((os/kern) object terminated).
Attaching…
Error 109 (no mountable file systems).
Finishing…
DIHLDiskImageAttach() returned 109
hdiutil: attach failed - no mountable file systems


loki:Downloads peter$ hdiutil imageinfo CSSEdit\ 2.6.dmg -Verbose
hdiutil: imageinfo: processing "CSSEdit 2.6.dmg"
DIBackingStoreInstantiatorProbe: interface  0, score      100, CBSDBackingStore
DIBackingStoreInstantiatorProbe: interface  1, score    -1000, CBundleBackingStore
DIBackingStoreInstantiatorProbe: interface  2, score    -1000, CRAMBackingStore
DIBackingStoreInstantiatorProbe: interface  3, score      100, CCarbonBackingStore
DIBackingStoreInstantiatorProbe: interface  4, score    -1000, CDevBackingStore
DIBackingStoreInstantiatorProbe: interface  5, score    -1000, CCURLBackingStore
DIBackingStoreInstantiatorProbe: interface  6, score    -1000, CVectoredBackingStore
DIBackingStoreInstantiatorProbe: selecting CBSDBackingStore
DIFileEncodingInstantiatorProbe: interface  0, score    -1000, CMacBinaryEncoding
DIFileEncodingInstantiatorProbe: interface  1, score    -1000, CAppleSingleEncoding
DIFileEncodingInstantiatorProbe: interface  2, score    -1000, CEncryptedEncoding
DIFileEncodingInstantiatorProbe: nothing to select.
DIFileEncodingInstantiatorProbe: interface  0, score      900, CUDIFEncoding
DIFileEncodingInstantiatorProbe: selecting CUDIFEncoding
DIFileEncodingNewWithBackingStore: CUDIFEncoding
DIFileEncodingNewWithBackingStore: instantiator returned 0
DIFileEncodingInstantiatorProbe: interface  0, score    -1000, CSegmentedNDIFEncoding
DIFileEncodingInstantiatorProbe: interface  1, score    -1000, CSegmentedUDIFEncoding
DIFileEncodingInstantiatorProbe: interface  2, score    -1000, CSegmentedUDIFRawEncoding
DIFileEncodingInstantiatorProbe: nothing to select.
DIDiskImageInstantiatorProbe: interface  0, score        0, CDARTDiskImage
DIDiskImageInstantiatorProbe: interface  1, score        0, CDiskCopy42DiskImage
DIDiskImageInstantiatorProbe: interface  2, score    -1000, CNDIFDiskImage
DIDiskImageInstantiatorProbe: interface  3, score     1000, CUDIFDiskImage
CRawDiskImage: data fork length 0x000000000022EE83 (2289283) not a multiple of 512.
DIDiskImageInstantiatorProbe: interface  5, score     -100, CRawDiskImage
DIDiskImageInstantiatorProbe: interface  6, score     -100, CShadowedDiskImage
DIDiskImageInstantiatorProbe: interface  7, score        0, CSparseDiskImage
DIDiskImageInstantiatorProbe: interface  8, score        0, CSparseBundleDiskImage
DIDiskImageInstantiatorProbe: interface  9, score    -1000, CCFPlugInDiskImage
DIDiskImageInstantiatorProbe: interface 10, score     -100, CWrappedDiskImage
DIDiskImageInstantiatorProbe: selecting CUDIFDiskImage
DIDiskImageNewWithBackingStore: CUDIFDiskImage
DIDiskImageNewWithBackingStore: instantiator returned 0
Format: UDZO
Backing Store Information:
    Class Name: CUDIFEncoding
    Backing Store Information:
        Name: CSSEdit 2.6.dmg
        URL: file://localhost/Users/peter/Downloads/CSSEdit%202.6.dmg
        Class Name: CBSDBackingStore
    URL: file://localhost/Users/peter/Downloads/CSSEdit%202.6.dmg
    Name: CSSEdit 2.6.dmg
Partition Information:
    0:
        Checksum Value: $675BE18B
        Partition Number: 0
        Checksum Type: CRC32
        Name: gehele schijf (Apple_HFS : 0)
Checksum Type: CRC32
partitions:
    appendable: true
    partition-scheme: none
    block-size: 512
    burnable: true
    partitions:
        0:
            partition-length: 18432
            partition-synthesized: true
            partition-hint: Apple_HFS
            partition-name: whole disk
            partition-filesystems:
                HFS+: 
            partition-start: 0
Properties:
    Partitioned: false
    Software License Agreement: false
    Compressed: true
    Kernel Compatible: true
    Encrypted: false
    Checksummed: true
Checksum Value: $DA5349F2
Size Information:
    Total Bytes: 9437184
    Compressed Bytes: 2289283
    Compressed Ratio: 0.26906180417644582
    CUDIFEncoding-bytes-wasted: 0
    Sector Count: 18432
    Total Non-Empty Bytes: 8507904
    Total Empty Bytes: 929280
    CUDIFEncoding-bytes-in-use: 2289283
    CUDIFEncoding-bytes-total: 2289283
Class Name: CUDIFDiskImage
Format Description: UDIF read-only compressed (zlib)
udif-ordered-chunks: true
Segments:
    0: /Users/peter/Downloads/CSSEdit 2.6.dmg
Resize limits (per hdiutil resize -limits):
    16624   18432   18432
hdiutil: imageinfo: result: 0

Best Answer

I have just had the same problem, with a disk image created by Disk Utility itself. In my case, the disk image is whole disk image, i.e. it contains a bare filesystem, no partition map whatsoever. Neither Disk Utility nor hdiutil attach disk.dmg would work, both complaining about the dreaded "no mountable file systems" issue.

What helped was to mount it from the command line, in two easy steps:

hdiutil attach -noverify -nomount disk.dmg

This only creates the device node. Now run

diskutil list

and note the diskN part of your image, where N is a positive integer.

Finally, to mount the device, do

diskutil mountDisk /dev/diskN

where diskN is the device identifier you determined before.

Note that you are mounting the entire disk, whereas normally you would mount a slice, such as disk0s2.

Be aware that this helps if your problem is with a disk image similar to mine. Nonetheless, it should still work with partitioned disk images, see man diskutil.