Hackintoshes or customacs are non-Apple computers that run the OS X operating system. There is a broad community surrounding hackintoshes, typically known as OSX86, that contains all sorts of tutorials, troubleshooting information, and hardware recommendations.

Building a hackintosh can be a trying experience. It gives you the ability to pick your own commodity computer hardware (within reason), but requires custom bootloaders, kexts (kernel extensions for device drivers and other things), and DSDT files (which can provide better compatibility between hardware and the OS).

In college I built a computer that uses the Intel D975xbx2 motherboard. This board has a LGA775 socket and uses the 975x chipset. It is 6 years old, but is still trucking along and is one of the computers I use on a regular basis. At one time, it ran a fully functional version of OS X 10.5 Leopard, but I then made the move back to Windows and Ubuntu. Fast forward a few years and I now spend the majority of my time on a Macbook Air and Pro. I decided to reinvigorate my old computer with a new install of Mountain Lion.

Installing Mountain Lion

There are several ways to install OS X on a PC. Arguably the best procedure is installing OS X with an install image that has very few modifications. This is commonly refered to as a ‘vanilla’ install, or as close to stock as possible. To create a vanilla install, start with OS X restored to a USB drive. Then you’ll add a bootloader such as Chameleon and normally several kext files and/or a DSDT.aml. For this approach, I would recommend reading this post.

Unibeast

I wasn’t surprised with attempting to use a vanilla install created problems for my old board. With Lion, I could achieve a booting system but Mountain Lion caused endless kernel panics. I ended up using Unibeast to get to an initial booting system. Use the guide to get your basic system up and running. (In hindsight, I imagine I could use a ‘vanilla’ approach now that I know what extensions I need.)

Also, to use Unibeast with InstallESD.dmg instead of Install Mac OS X Mountain Lion.app, see this video. It requires mounting BaseSystem.dmg and then dragging the installer to the /Applications folder. Keep in mind that creating the USB installer takes a long time and it might seem like it hung at some point. Just be patient. After creating the USB installer, boot into the Mountain Lion installer on your D975xbx2 machine and install Mountain Lion.

Post-installation

The next step after you boot into the system for the first time is to install the boot files to the system partition. Typically this is done using Multibeast. Unfortunately I could not get this to work and had many kernel panics trying. I ended up performing what Multibeast does manually with success.

First copy the Extra folder from your USB stick to the system partition. Open a terminal:

$ sudo cp -r /Volumes/USB/Extra/ /

If you are uncomfortable with the command line, you can do this via the Finder by enabling hidden files and copying the folder /Extra to your system partition. To enable hidden files from the terminal, paste in this command:

$ defaults write com.apple.finder AppleShowAllFiles YES

After executing the command, you have to restart the finder by hold Alt and right clicking on the Finder icon -> Relaunch.

Now that we have our Extra folder including our kext files, install Chimera, the bootloader that is used with Unibeast. This is based from Chameleon, with additional features added in. Install it to your system partition.

Now reboot without the USB stick plugged in. You should have a system that boots just as it did before.

Audio

Everything about the system should be working except for sound. the SigmaTel 9274D (sometimes referred to as STAC9274) works well with the VoodooHDA driver, an open source audio driver based from the FreeBSD hdac driver.

VoodooHDA

To install VoodooHDA, download the newest installer package from the project page. Run the installer, and backup the kexts when it asks. DO NOT REBOOT YET.

Kext Migration

After we have installed VoodooHDA, we are going to perform a ‘kext migration’. This means that we will transfer all kext files from /Extra/Extensions to /System/Library/Extensions. To do this, we are going to use Kext Wizard. This a tool that makes it easy to install kexts, rebuild the kext cache, and more.

First, let’s move the kexts from /Extra/Extensions to a backup folder.

$ sudo mkdir -p /Backup\ Extensions/Extra/Extensions
$ sudo cp -r /Extra/Extensions/* /Backup\ Extensions/Extra/Extensions/
$ sudo rm -rf /Extra/Extensions/*

Download and fire up Kext Wizard. Select the Installation tab. If you have not already, enable hidden folders as described above in Post-installation. Then drag the hidden kext files from /Backup Extensions/Extra into the window to install. Do not include IONetworkingFamily.kext. The file that is included with Unibeast that we had in /Extra will cause ethernet to stop working. I actually made this mistake and had to manually copy the original kext from Mountain Lion’s InstallESD.dmg.

Set Destination to System/Library/Extensions and Install.

Enabling the kext cache

Now that all of our important kext files are in /System/Library/Extensions, we need to rebuild the kext cache with Kext Wizard. From the Maintenance tab, check System/Library/Extensions and Execute.

The finally thing we must do to make VoodooHDA work properly is set Chimera to use the kext cache to boot. Edit /Extra/org.chameleon.Boot.plist to include:

<key>UseKernelCache</key>
<string>Yes</string>

My complete org.chameleon.Boot.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Boot Banner</key>
	<string>No</string>
	<key>GraphicsEnabler</key>
	<string>Yes</string>
	<key>Graphics Mode</key>
	<string>1920x1200</string>
	<key>Instant Menu</key>
	<string>No</string>
	<key>Timeout</key>
	<string>3</string>
	<key>Kernel Flags</key>
	<string>PCIRootUID=1</string>
	<key>Legacy Logo</key>
	<string>Yes</string>
	<key>EthernetBuiltIn</key>
	<string>Yes</string>
	<key>UseKernelCache</key>
	<string>Yes</string>
</dict>
</plist>

Fix iCloud

iCloud wasn’t working for me when I first booted. After some research, it seems that this issue is related to /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist showing <key>IOBuiltin</key> as <false/> instead of <true/>.

Add the following to your org.chameleon.Boot.plist:

<key>EthernetBuiltIn</key>
<string>Yes</string>

To better understand the bootloader plist file, read the Chameleon Bootloader Basics.

After this, you should be able to reboot with sound. I would suggest booting with the -v flag which is ‘verbose mode’ and will show you what is happening as you boot. You can also disable the kext cache during boot with -f.

If you see issues with popping sounds or other VoodooHDA issues, I would suggest reading VoodooHDA - common problems. I enabled ‘SSE2’ in the VoodooHDA preference pane to eliminate popping in the audio.

Other Notes

Currently sleep does not work. I have tried using the Multibeast’s patched AppleIntelCPUPowermanagement.kext with no luck. On sleep, the system gets into a weird state and has to be rebooted. One side benefit of using the patched kext was that my system no longer hangs for 15 seconds or more on loading AppleIntelCPUPowermanagement.kext because NullCPUPowerManagement.kext is no longer present. My system cold boots with a SSD in 15 seconds or so. Pretty quick.

SSD trim support

While there are utilities from the OSX86 community, I ended up using a generic utility called Trim Enabler that works for any Mac with an aftermarket SSD.

Update - 10.8.2 Update Installation

I skipped 10.8.1, but with the release of 10.8.2, decided to update. I assumed that this would be straightforward and I wanted the Facebook integration, iCloud updates, etc. Typically with non-vanilla hackintosh updates (like mine), you want to install the combo update and then re-apply any kexts that you had installed.

I downloaded the 10.8.2 combo update and proceeded with the installation. When finished, don’t reboot. Open Kext Wizard and re-apply your kexts from the /Backup Extensions folder. For me this included:

  • AHCI_3rdParty_SATA.kext
  • FakeSMC.kext
  • AppleACPIPlatform.kext
  • JMicron36xATA.kext
  • EvOreboot.kext
  • NullCPUPowerManagement.kext (I had to forgo AppleIntelCPUPowermanagement.kext because it is dot release dependant and we don’t have a 10.8.2 version)

After that, repair your permission and rebuild the cache with Kext Wizard and you should be good to go!

Update 2 - Fixing iMessage

Back in December 2012, the iMessage beta expired. This had the unfortunate side effect of rendering iMessage useless on many Hackintoshes. Authentication was broken. Fast forward a few months and a fix has been applied to Chameleon and Chimera. Downloading and installing Chimera 2.0.1 fixed my authentication issues. Yay.