A colleague had an iMac (about 4 years old, I guess) which was suffering from some transient problems with the graphic card. My first checks showed me that the Windows 7 x64 which was running on it had no Boot Camp drivers installed. Fortunately, the iMac still had its original OS X partition.
So I went on, booted into OS X, upgraded the OS to the latest version and downloaded the drivers using the Boot Camp tool. I then switched back to Windows, installed the drivers, and voilà.
While doing so, I decided to upgrade the hardware a bit. Adding memory was easy: there is a small cover at the lower side of the screen, secured by three screws. Unscrew, take cover off, firmly push two 4GB SO-DIMMs into place, put cover and screws back. Done.
Upgrading the HDD to an SSD proved to be … interesting.
I had ordered a 512GB SDD before Christmas, and so I was expecting to be able to just swap out the old hard disk and insert the SSD in its place. Boy, was I wrong.
Challenge 1: Open the iMac
Have you ever wondered how you get access to the internals of an iMac? You need two suction cups to remove the glass protecting the display, which has a magnetic attachment.
Fortunately, ifixit has a great step by step description of what needs to be done to get the iMac open. Several cables need to be disconnected so that the display itself can be moved aside enough to reach the screws which are securing the HDD.
Challenge 2: Copy the data
I was expecting the copy of the data from the internal HDD to the SSD to be as easy as on a laptop PC. Nope. The tools I had used to migrate laptop HDDs to SSDs were not meant to migrate an OS X partition.
Here is, after lots of trial and error, what worked for me:
- Attach SSD to an external USB adapter.
- Boot the iMac into recovery mode (easiest is to press Alt on power on, then select the 10.10 recovery partition).
- Use the Disk Utility to partition the SSD and copy the OS X partitions over. This is supported natively. Attach an additional disk and copy an image of the boot camp partition to it.
- Reboot into the OS X installed on the external SSD.
- Use Boot Camp to partition the SSD and start installing Windows 7 on it. As soon as the Mac reboots, turn it off.
- Disconnect the HDD power and data cables, and connect them to the SSD. Since the HDD is a giant 3.5 inch device, just hide the tiny SSD under the HDD. There is enough room for it.
- Boot back into recovery mode, on the SSD.
- Disable System Integrated Protection (SIP) with
csrutil disable
so that the MBR and partition info can be modified. See stackexchange. - Boot back into OS X on the SSD.
- Purchase WinClone Standard.
- Mount the boot camp image created previously on the additional disk.
- Use WinClone to copy the mounted boot camp image over to the empty boot camp partition on the SSD.
Challenge 3: Replace the HDD
There is one last challenge: getting rid of the original HDD. It happens to have three cables attached to it:
- The SATA (data) cable.
- The power cable.
- The thermal sensor cable.
Yay, the thermal sensor is mounted onto the HDD PCB! Disconnecting it would produce incorrect temperature reports, which would in turn trigger maximum fan speed, and make a noisy iMac.
I could have ordered a sensor from a spare parts vendor, or installed a tool to control the fan speed (only available for OS X). I chose to be lazy and simply keep the old HDD in the iMac, continuing to use its thermal sensor. And as I said earlier, the SSD can be tucked under the HDD without trouble.
Happy end
The iMac works fine now. Windows 7 x64 boots nicely thanks to WinClone doing some magic with the partition table (all my attempts to do it manually with the Disk Utility were unsuccessful and the time I lost in my attempts does not justify the savings I’d have made by not purchasing WinClone).
And it was really worth it. The iMac feels snappy and fast, even when its antivirus is turned on. I did not measure the speed difference, but it is about an order of magnitude better than before (i.e. some programs start in under 2 seconds, whereas on the HDD it took about 25 seconds for them to start).