Building a Hackintosh

November 24th, 2011

For the past 4 years, I’ve been using a Mac Pro as my primary desktop.  It’s been a fantastic machine:  Ultra stable, fast, and reasonably expandable.  It’s getting old, though.  The whole Mac Pro line is getting old; Apple’s last update was almost 500 days ago (as of this writing, check the MacRumors Buying Guide for current info).  Intel has repeatedly delayed the Xeon CPUs used by Apple in the Mac Pros.  Today, an i7 MacBook Pro can easily outperform an entry-level Mac Pro.

So Use an iMac or MacBook Pro?

The writing is pretty clearly on the wall, and there are indeed rumors that Apple will indeed kill the Mac Pro line soon.  Thunderbolt, which is basically external PCI Express, is meant to supplant most use cases for a burly desktop.  iMacs and MacBook Pros both ship with i7s, and the new iMacs can support 16GB of memory.

I actually have an i7/SSD/HD 27″ iMac, which I use for work, and an i7/SSD/HD MacBook Pro, which I use for travel.  They’re both awesome devices, but they fail to meet my needs for a desktop in three primary areas:

  • Storage (my desktop has 4 internals drives and 8 external drives)
  • Gaming performance (the iMacs use laptop graphics cards)
  • >2 Display support

Enter Hackintosh

I use OS X as my primary operating system–I only boot to Windows for games–which puts me in a bit of a bind. Do I wait for a Mac Pro upgrade, and shell out a ridiculous premium once they launch?  Part of the price problem with the Pro line is that you’re paying for huge amounts of upgradability that you’re probably not going to use (massive power supply, dual socket motherboard, ECC memory, etc).  The Mac Pro line is meant to accomodate serious scientific computing and video production needs, but all I really want is a faster photo editing machine with decent graphics performance.

“Hackintosh” refers to running OS X on commodity hardware.  This has serious price advantages.  Let’s take a look at a higher-end build, as of November 2011.  Check the Kakewalk Builds page for current pricing:

Up agains a low-end Mac Pro, this is awfully appealing:

Hackintosh Downsides

Modern Hackintosh machines are actually pretty good.  You can certainly achieve stability with minimal hassle.  Still, the Hackintosh route is not nearly as painless as owning actual Apple hardware.  In short, you’ll be facing:

  • Complicated initial setup
  • Inconvenient minor/point updates for OS X
  • Painful major updates (ie Snow Leopard -> Leopard)
  • Potential compatibility problems with your workflow (ie MainStage)

My Build

Apple maintains a fairly minimal set of drivers in OS X itself.  A lot of hardware has 3rd-party support, but this means adding kernel extensions after initial install (.kext packages).  These 3rd-party kext files are what make updates tricky, especially since some hardware compatibility relies on replacing or patching existing Apple extensions.

I tried to minimize kernel hacking by selecting hardware with known/stable OS X compatibility.

(Note that I changed my network card configuration after taking this video)

Hardware List

These link to Amazon:

I moved most of my drives, but wanted new SSDs so I could sell the old Mac Pro with boot SSD intact:
GPU-wise, I went with two of these:
I needed FireWire 800 for my Drobo.  This card works out of the box:
Post-setup, onboard audio had a slight-but-annoying noise floor in OS X (but not Windows).  I added this USB 2.0 audio interface, which has been super awesome.  I run Audioengine A5 speakers and can definitely hear the difference:
Finally, this case is awesome and contains everything:

Setup Process

Now that I had a pile of hardware I had to get everything running!

Motherboard/BIOS Settings

Taking some steps from this guide, I made the following BIOS changes:

  • Reset to “Optimized Defaults”
  • Set SATA controller modes to ACHI instead of IDE
  • Changed HPET to 64-bit in power management
  • Disabled onboard FireWire
  • Later, I overclocked to a 42x multiplier

UniBeast (Initial Lion Install)

UniBeast is an amazing tool that creates a bootable USB drive with the Mac App Store version of Lion.  You need a working copy of OS X to create the bootable drive, and a purchased copy of Lion from the App Store in the form of the “Install Mac OS X Lion.app”.  Since I was already running Lion on all my machines, I need to redownload this.  Turns out you can hold option and click on “Purchases” to redownload Lion in the App Store application.  The App Store version of Lion was current (10.7.2).

The UniBeast guide on tonymac’s side was comprehensive and worked flawlessly.  As soon as my install was complete, I had a working version of Lion with 1024×768 display, bootable via the USB drive’s copy of Chameleon (a boot manager by the Hackintosh community).

MultiBeast (Post-Lion Drivers)

MultiBeast is an all-in-one installation tool designed to modify a clean Lion install with the necessary files, drivers, and settings to self-boot your copy of OS X.  I used the settings from the same guide I used for BIOs settings.  Note that you’ll need to download a DSDT file for your motherboard, which contains the proper lookup tables to map hardware features to the OS.

Dual Video Cards

If you’re looking at a Hackintosh build, and don’t need crazy multi-monitor support or high-end gaming performance, you should stick to one of the video cards supported by OS X out of the box (there’s a great list on the tonymacx86 blog).

This is where things got tricky.  The GTX5xx series of cards are not officially supported, which means you need to do a bit of technical muckery to get things working.  I booted with a single GTX560Ti connected and ran this GT5xx Enabler.  This produced native resolutions with the one card.

To support two cards, I poked around this thread.  This gist is that you must pass in all graphics cards parameters into your boot.plist file as a hex-encoded EFI string, since auto-detection will fail.  You also need to probe your PCI addresses for both slots independently (boot one card, probe, boot second card, probe).

My input plist looks like this.  The first two addresses are for my onboard Ethernet and PCI slot.  I’m not sure if I still need these, to be honest.  After encoding hex with gfxutil, here’s my full /Extra/org.chamaleon.Boot.plist.

Network Setup

My initial setup used an out out of the box-supported network adapter (this Rosewill PCIe card).  However, this meant I had to use a PCI FireWire adapter, since the two GPUs cover some of my slots.  It turned out that whatever was in this PCI slot failed to re-initialize after sleep.  I wanted to preserve sleep, so I rearranged my hardware to use a PCIe FireWire card and onboard network.  Apparently onboard ethernet is flakey for some people, but it’s been fine for me.  I used the official RealTek drivers available in MultiBeast.  Gigabit speeds are great, it recovers from sleep; everything seems fine.

Juggling my network cards around meant changing my MAC address.  Definitely do all App Stores purchases after you’ve figured your network setup out.  I had to reinstall Apps due to Apple’s DRM.  I was unable to login to the App Store initially, too, with a “could not be verified” error (this has to due with default calls to discovering your MAC address failing).  If you find yourself in that position, this guide worked perfectly!

Sleep and CMOS Reset

Apparently this motherboard will reset CMOS/BIOS settings on sleep.  I applied this fix without testing that I had the problem.  Sleep has been fine, so it was either a solution or a benign change.

TRIM Support

OS X now supports TRIM for SSDs, although Apple has hardcoded specified device IDs into their support.  You can patch in general support for all SSDs.  I did this (and was running this before on my Mac Pro without any ill effects).

“Fermi Freeze”

Apparently Lion has much better overall support for NVIDIA’s “Fermi” GT100 architecture (via its official GTX4xx drivers, which is what you’re patching into with GTX5xx support).  Still, I experienced two graphics freezes/corruption.  Most of the information out there appears to be people experiencing issues with Snow Leopard.  Two fixes were suggested that I applied:  Disabling hardware acceleration in Flash, and upping my base clock/bus speed from 100MHz to 103Mhz.  The theory on the clock change has something to do with GPU idle states.

I’m not sure if my freezes were random, and will return, but as of this writing I’ve had 4 days of uptime (partly to run a gigantic Time Machine backup), during which I’ve edited a photo set in Lightroom/Photoshop, encoded videos, watched a movie, and did some work in Unity.  Seems very stable!

Still, there are rumors Apple is returning to NVIDIA architecture for its next refresh, which will hopefully bring additional support for the GTX5xx GPUs.  Patching graphics card drivers is the only real Hackintosh requirement that makes me nervous.

Windows

Windows install was straightforward.  Gaming performance has been great with the GTX560s in SLI mode.  Service Pack 1 install was unhappy due to being booted from Chamelon, since it wanted to screw with the reserved partition, but booting directly via the Motherboard F12-key boot selector fixed that.  In general, Windows has been super stable, and much more stable than Windows 7 on my Mac Pro.  Apple doesn’t give a shit about driver support on Windows.  I was bluescreening pretty regularly after updating to the Boot Camp driver version that accompanied Lion.

Hiding Partitions

My Windows 7 install actually created two partitions:  My actual Windows partition, plus a “System Reserved” NTFS partition.  This partition shows up in Mac OS X.  To hide it, I created an /etc/fstab file with:

LABEL=System\040Reserved none ntfs rw,noauto

The partition is still there; it just no longer mounts on boot.

I also use Carbon Copy Cloner to maintain a hot copy of my OS X boot drive.  To hide this drive from Finder, I used:

sudo SetFile -a V /Volumes/Backup

I think CCC is actually resetting this flag after it runs, so I guess I need to reset it immediately after a backup.

Impressions and Conclusions

I’ve been running the new build for a few days now, and have completed a some real-world project work on it:  Lightroom/Photoshop photo editing, video encoding, Unity game development, and general browsing.  It’s fast!

Benchmark-wise, my old Geekbench score was 9,800.  The new system is currently 13,800.  My old Mac Pro was an 8-core machine, though, and the new rig is 4-core.   General “speediness” is way up, since each individual core absolutely crushes my old box. My cooling setup definitely accommodates more overclocking, although I strongly favor stability over speed.

Gaming is awesome again!  My old setup was struggling to perform well on a DX10 code path with its GTX285.  Now I can run max settings at 60+ FPS on all modern games.  It’s crazy to see the difference in graphics fidelity in a game like Battlefield 3.

I’m a little wary about system fragility with updates.  Cloning your boot drive is a very wise move with a Hackintosh (I’ve already used it once when I broke my boot with a kernel panic).  If you’re going the Hackintosh route, spend the $50 to get a cheap drive to clone to!

I spent around $2k on this build.  A huge portion of that was SSD/GPU, so you can definitely go cheaper.  I’m going to offset much of the cost when I sell my old Mac Pro after another week of testing.  All told, I’m very happy with this upgrade!  I’d recommend an out of the box-friendly Hackintosh build to most people, with the caveat that you need to be quite technical to manage unsupported GPU hardware.  Good luck!

Leave a comment