At Element 84 it’s pretty common for us to “just handle it” when something doesn’t go the way we wanted. That’s what happened this week with the recent MacBookPro refresh. A couple of us were ready for new laptops and were really itching for the rumored 16GB SSD + HD and higher resolution for the 13” MBPro. Obviously it didn’t happen, though the new Sandy Bridge configurations look amazing. Anyway, faster CPUs/GPUs really weren’t what we were after so instead of replacing our machines we decided to sit this refresh out and take things into our own hands.
Really what we wanted was an insanely fast SSD for the OS and Applications and a truckload of storage for our data. An SSD + HD fits the bill nicely. We undertook this expedition on two of our machines, a Late 2008 MacBook 2.4GHz (MacBook 5,1) and a Late 2008 MacBookPro (MacBookPro 5,1). It should go without saying that you shouldn’t do this without taking a full backup first. Seriously. I’m not just saying this. I really did back everything up. Do it.
Before we did anything else we wanted to bump up our RAM. Officially the machines support 4GBs but there are plenty of forum posts discussing being able to take both of these machines to 6GBs. We ordered the appropriate ram from Other World Computing and dropped 6GBs into each of our machines without incident. Technically you’ll lose Dual Channel support because of the mismatched sizes, but benchmarks seem to show minimal performance differences for the kind of work we do.
On to storage
Next was the SSD + HD solution. A little bit of Googling and you can find there are a number of kits available that let you swap out your SuperDrive for a 2.5” mounting bracket to mount an additional SATA HD or SSD. We did a bit of research on SSDs and ended up back at Other World Computing again looking at their 120GB Mercury Extreme Pro SSD.
OWC sells their 120GB SSD bundled with the mounting bracket for $279 at the time of this post. That’s a lot cheaper than a new Mac.
Making the swap
The OWC bundle comes with a fantastic set of instructions along with a set of screwdrivers and a spudger. All this time we’ve been writing code and we had no idea we needed a spudger.
Anyway, the bracket itself is lightweight metal and fits perfectly. It has two standard 2.5” HD mount points on one side that attaches to the SSD or any other 2.5” HD. There’s some discussion on the web as to whether it’s better to move your internal HD into this bracket and mount the SSD where the HD was or to put the SSD here. I’m not sure it makes a whole lot of a difference but there does seem to be a little more sound and vibration insulation around the existing HD so we decided to leave the HD where it was and put the SSD in this bracket.
The instructions that came with the kit were excellent and walk you through, screw by screw, disassembling your MacBook and removing the SuperDrive. I won’t recap the instructions here, the ones that came with the kit were excellent and iFixit has a set online if you go with a different bracket. The whole process was painless and took about 30 minutes. There are a couple of tiny connectors and delicate cables to work around and lots of very tiny screws but nothing particularly terrifying. Reassembly went great and a reboot later we started breathing again. Next came the hard part though, moving our data around and making this whole thing work.
Moving data around
Before anything else, you need to format the SSD. Simply launch Disk Utility, select the SSD then partition and format it. We named it Macintosh SSD.
Now comes the hardest part of the process. The existing HD was a 650GB Toshiba 2.5” drive loaded with about 400GBs of data. Going back to our original goals (and the fact that we only had 120GB SSDs) we wanted to move the OS and applications over the SSD and leave our user data on the HD. To do this we used Carbon Copy Cloner. We simply did an incremental backup from Macintosh HD to Macintosh SSD except for most of the subdirectories in my home directory. The important thing here is that you copy at least some of your home directory over. We’ll sort out the missing data in a minute. Doing this big backup obviously takes a while so let it churn and come back later.
Once the copy finishes you can reboot and hold down “Option” to select to boot off of the new SSD. It’ll be snappy(TM), but more on that in a minute. Once you’re all booted up go into System Preferences -> Accounts and create a new local administrator. Log out and log in as that Admin.
Now that you’re logged in as a new administrator you can sort out your old home directory. I renamed my old Macintosh HD to be Data before going any further. This means I now have my old 650GB (with all of the original data) mounted on
/Volumes/Data. Now comes the cool part. Snow Leopard uses directory services (OpenDirectory) to store user information, including the user’s home directory path. The trick is to find the dialog. Open up System Preferences -> Accounts and click the lock at the bottom to unlock it. Next, right click on your username and select Advanced Options. This will bring up another dialog with advanced directory settings for the account.
Be careful here! You can hose your account pretty good in this dialog. All you want to change is your home directory to point to your original home directory on your old HD, for example
Make that change, hit ok and then select “Show All” then “Startup Disk”. This is the disk your machine will boot off of by default. Select Macintosh SSD. Almost there.
Finally, fire up a terminal. From here we’re going to move that little bit of a home directory we copied over out of the way:
cd /Users sudo mv your_username your_username.old
If everything looks good you can come back and delete that later. That’s it! Reboot and you should be set.
So was it worth it?
Now that it’s all done, was it worth it? Well, first, some Xbench numbers:
In practice, what does this mean? Power button to fully usable desktop went from 58s to 32s. It’s hard to tell what applications are running versus which are launching for the first time – most applications just appear almost instantly. While installing applications or doing IO heavy work on the SSD I can get peaks of 190+MB/s. Once you’ve started using an SSD it’s really hard to go back to a regular HD without everything feeling a little slow.
Once you’re happy with everything you can delete the left over home directory copy (your_username.old) in /Users and remove everything but /Users on your Data drive. There are also a couple of options for cases that will turn your now disembodied SuperDrive into a USB SuperDrive. I haven’t found one I like yet though.
Overall, I’m thrilled with the upgrade. For about $370 my machine has the performance and storage space I wanted. If only there was a way to jam a few aftermarket pixels into my display…
Updated Mar 6, 2011
Unfortunately there appears to be a bug with SandForce SSD controllers at the time of this writing with hibernation. This doesn’t appear to be constrained to OWC SSDs but any SSDs with SandForce 1200 series controllers. It seems to particularly affect OS X users. There are rumors of a Q1 2011 firmware update that might fix it, but in the mean time there’s a workaround.
OS X’s power settings are controlled by a command line utility called pmset. By default, OS X laptops are setup to write memory to a hibernation fie when entering sleep but keep power going to your actual DRAM for quick resume. In the even the battery reaches a critical level, OS X shuts off the power to memory and will resume from the disk based hibernation file at next startup. The controller issue seems to be triggered by this hibernation setup.
To work around the issue you can disable the disk based hibernation for the time being. Obviously this means that if you run your battery all the way to 0 then you’re in a bad way so make sure you shutdown if you’re about run out of power. For the rest of the time (normal sleep, resume cycles) this seems to work fine.
To check your current power settings run the following in a terminal:
That will get the current settings and you’ll see that
hibernatemode is set to 3. That’s the default. To disable hibernation entirely, run the following command:
sudo pmset -a hibernatemode 0
When the firmware is released, you can restore things back to normal with:
sudo pmset -a hibernatemode 3
Hope that helps…