What I usually do (and tried is something like this:)
- Have a look with fdisk -l into the image where the partitions are (fdisk -l img)
- Take the offset of the partition I want, multiply by the block size and use that to mount it, e.g.
mount -t hfsplus -o ro,loop,offset=209736192 mbabackup /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
This apparently is a bug in the hfs(plus) driver, since the exact same approach works with everything else.
In comes kpartx:
kpartx -l imgshows us the table of partitions (-g for force gpt if in doubt)
kpartx -av imgcreates new loop block devices which you can then just mount
mount -o ro -v /dev/mapper/loop1p2 /mnt/
That's actually a lot easier than before, great.