Pimp my MacBook

c: | f: /

An episode in hardware upgrading for a mid-2012 MacBook Pro. The road is slightly rippled with a flat underside, but well worth it.

Solid State Disks really are fantastic, but I reckon the sweet spot of price-to-storage is still a little low for general usage. 256GB is the current best value, with 128GB too small and 512GB+ too expensive. Thus, combining an SSD as a boot/application drive with a bigger disk for data storage is a great compromise.

I’ve long since been an advocate of parallelism and have never fathomed why laptops only ship with one hard drive; lack of space inside notwithstanding. But with the gradual decline in CD/DVD storage as a medium in favour of thumb drives and streaming, some manufacturers are dropping drive bays from their product lines.

One would think they’d use the free space inside to pop a second hard drive into their ‘pro’ high end machines to make them more attractive, but so far that’s not been the case. Being a hacker at heart, and not using the Apple SuperDrive much, I wanted to see if I could reclaim the space inside for such a purpose.

Guided by a tip-off from a friend, and scouring the Internet, revealed a caddy for under a tenner that has a rectangle cut out for a 2.5-inch SATA drive to nestle. There are kits available that also include a USB enclosure for the extracted SuperDrive, but I plan to get an external USB BluRay combo writer when the prices drop a little more, so opted for just the plain caddy.

I shopped around for a 256GB SSD — the minimum I feel comfortable as an OS and app drive — and found one I liked, with an exceptional speed-to-price ratio, for about forty quid. I also picked up 16GB of Crucial RAM (2 × 8GB, for £50) to quadruple the stock memory in the machine, as it felt rude not to do that at the same time. Merely doubling the existing RAM would have been just ten pounds cheaper, so it was a steal in comparison. The official Apple spec says that the hardware can only support a maximum of 8GB, but reports around the web indicated otherwise. And they were right.

After backing up to an external Time Machine drive, I finally took the plunge to update from Mavericks (v10.9) to El Capitan (v10.11). Several hours later, it was done and booting into the shiny new flat-look OSX that I’d skipped with Yosemite amid non-retina font blurring fears.

Tonnes of boot warnings flew by in verbose mode (hold Apple-V during boot, or issue sudo nvram boot-args="-v" in a shell to always do so), which is apparently par for the course when upgrading. It transpires that only new installs work seamlessly. Regardless, it was ready at the login prompt in under ninety seconds, which isn’t half bad and about the same as my Mavericks boot. But I knew the machine could do better. A lot better.

OSX clone wars

Using an external USB-to-SATA adapter I had lying around, I plugged the new SSD into the USB port. OSX detected it (eventually) and allowed me to format it to a suitable partitioning scheme via Disk Utility. For reasons beyond my pay grade, it appears you need to do this even if doing a byte-for-byte clone of the disk surface.

Unfortunately Disk Utility wouldn’t clone my existing drive, even though I was only using 100GB of space out of the full 500GB. No amount of shuffling/reclaiming space, safe mode, or single-user mode hackery would do it. And I didn’t fancy going through the hassle of partitioning it to the same size as the SSD — because I’d have to reverse it afterwards — nor risking dd at the command line.

In the end I fell back on a third-party solution using Super Duper, which — even in its freeware incarnation — cloned the main drive to the SSD in under an hour. It also took care of all the nitty gritty stuff like making it bootable and checking permissions, etc.

I disconnected the SSD and then, armed with the above hardware, an array of screwdrivers with natty-shaped ends, and a few spudgers I flipped the MBP over and prepared to operate.

Replacing MacBook components

Popping the unibody aluminium case — surprisingly for Apple, with just a bog standard small-form cross-head screwdriver — revealed the innards, so familiar to me after having painstakingly cleaned an entire tumbler of gin & tonic from its circuitry three years beforehand. The new sticks of RAM were installed in under a minute.

The next part of the plan was to remove the original hard drive and the spinning SuperDrive (CD/DVD), put the old hard disk drive in the caddy, drop the SSD in the place where the HDD used to be, and slide the caddy in the place where the SuperDrive previously sat.

Sounds easy but, in practice, only sort of. Had to flip a few motherboard edge connectors off, unscrew and move the speaker out of the way, and fish around underneath it to locate the screws holding the SuperDrive in place — using a star-shaped screwdriver head. It’s a bit fiddly wiggling out the SuperDrive, but it all came out in the end — without even removing the battery.

Unscrewing the L-shaped clip from the SuperDrive and relocating it on the caddy, I dropped the HDD inside it, manoeuvred the caddy back under the speaker, slid and secured the SSD in place, screwed everything together in reverse order, and prayed.

Powering it on, the Apple chime greeted me — which was a welcome signal — shortly thereafter a choice of drives to boot. I chose the SSD. It was fast, but not fast enough. The reason for this was twofold:

  • The SSD needs to be explicitly set as the boot drive from System Preferences->Startup Disk.
  • The HDD needs to have the system files removed from it, or the Mac has a long think about things after the chime, before it begins booting. No idea why.

Clearing all the old OS files off was an exercise in annoyance as a lot of them were protected. Damn you System Integrity Protection in El Capitan! But I zapped most of the files, leaving just the data and the few files that OSX erroneously insisted were still vital.

Vice-versa, I cleaned off the data files from the SSD leaving just the OS and apps. And, more importantly, about 200GB of free space for future apps.

Next stop was to make the SSD use the second drive as its data storage medium. This was achieved through judicial use of symlinks. To do this I made a directory called Storage on the MacHDD to hold my user data, then dropped into Terminal and did the following for each place I wanted to stash files (Documents, Music, Downloads, Videos, etc) :

cd /Users/Stef/
rm -rf Downloads
ln -s /Volumes/MacHDD/Storage/Downloads Downloads
ls -l Downloads

And repeated the last three-command cycle for each location, checking each time that the contents were linked properly via the ls command. A word of warning: unless you’re super cautious, don’t take a shortcut and do what I did, using the command history to arrow-up to old commands and edit them. I did the above on the Music folder, arrowed-up three commands to run the ls -l and check it worked, but miscounted and ended up reissuing the rm command instead. Did it just remove the symbolic link? Hell no, it ditched the entire contents of my Music directory on the HDD before I could issue CTRL-C to stop it, d’oh. Thank goodness for my Time Machine backup.

Anyway, once that was all out of the way and I’d verified everything was working with the apps, I ran the third party freeware tool Clean My Mac to tidy up and optimise the boot process. It cleaned up a load of junk from old apps and fixed some boot problems left over from the upgrade to El Capitan. Sweet.

And the proof? From Apple chime to login screen: fifteen seconds. From login to usable desktop: two seconds. All my apps start in next to no time, and the added RAM makes everything swap a whole heap less. I can probably make it boot faster if I delve into the few remaining warnings and tinker with system commands to eradicate them. But for now… rockin’!

The upshot is that, for a shade under a hundred quid, I’ve got what feels like a brand new MacBook Pro and it outperforms the current crop of disk-based MBPs on the market by a few orders of magnitude. Happy happy bounce bounce.

Write it down


(required, never made visible)

(optional, linked with rel="nofollow")