IdlePhysicist

Mounting Macintosh Drives

Date: 2019-04-08
Last Updated: 2019-04-08
#OSX

So this March I decided it was time to give my MacBook Pro a new lease of life. It still had its original 500GB HDD that it had come with. I had not updated my version of OS X since Yosemite in 2015, and that is because I used Apple’s Aperture for processing my photographs and Yosemite was the last version of OS X to support Aperture. This of course had the knock on effect of making it harder and harder to use HomeBrew as time wore on.

So in a bout of frustration I went out and decided to buy an SSD with the idea being that I could swap my HDD out do a fresh install of MacOS, as it is now, and if worst came to worst and I wanted Aperture back then I could wipe the SSD and clone the old HDD to it.

The install of Mojave took a scenic route via Mountain Lion (yes you read that correctly), but the fun came when I tried to load my old HDD as an external drive. Strangely my MacBook couldn’t mount the drive. I happened to be at work while I was trying to do this, and my colleague suggested putting it into his Ubunutu workstation to see if it showed up. One apt-get install hfsprogs later and we could see the system and the partitions that my Macs (personal & work) say don’t exist. Later we tried to mount it using an Arch workstation and the SATA to USB adapter I had borrowed for the task, and it couldn’t be mounted.

We then decided that we should clone the drive before messing with it any further, to do that we pulled out my old Debian workstation, and put an Arch live USB in it and, when saw that the three partitions were showing up there we decided to try an mount the drive. We had some limited constraints from the live USB, and needed to do some arithmetic and sector counting in order to be able to mount the drive.

It was this superuser article that enabled us to figure out what the hell was going on and how to mount the drive on Arch. We needed to calculate N, the volume size of what’s to be mounted.

[ N = logicalSectorSize \times sizeOfTheVolume ]

We do that by getting the logical sector size from fdisk and the size of the volume from testdisk

Flow

  • fdisk -l /dev/sda Get the logical sector size
  • testdisk /dev/sda
    • Select EFI GPT
    • Select Analyse
    • Then Quick Search Note down the size in sectors of sda2.
  • mount -t hfsplus -o ro,sizelimit=N /dev/sda2 /Volumes