The software problems start at boot time: Macs use EFI to boot from GUID-partitioned hard drives, whereas Windows PCs typically boot from a BIOS to an MBR hard drive. The GUID Partition Table (GPT) and Master Boot Record (MBR) are two different ways of designating the partitions on a hard drive, and forcing a BIOS-based system to boot from the Snow Leopard installer DVD is the first hurdle. This is where the “boot loader” comes in. I’m oversimplifying this a bit, but basically the bootloader “catches” the BIOS boot and redirects to an EFI boot, and also “injects” the patched drivers necessary to use non-Apple chipsets, networking interfaces, audio, and video.
There are several boot loaders available, but the Chameleon bootloader is the most popular, and it’s open-source too! Chameleon consists of several files that must be installed in specific places on your disk (“specific places” being short for “I hope you’re familiar with Unix disk partitions and devices”). There are two basic ways of creating your initial bootable Snow Leopard volume:
If you don’t have access to a Macintosh, you’ll use the “intermediate boot disk” method: you create a special Chameleon boot CD, boot from it, then switch to the retail Snow Leopard CD when the Chameleon boot screen appears. After running the OS X installer to put Snow Leopard on your disk, you must perform some additional patching. This method is described inthis thread on Insanely Mac, which is specific to the ASUS P6T series of motherboards and includes a post-install “P6TV2Deluxe” package that adds support for the P6T hardware (audio, network, etc.) Many other threads in this forum give specific directions for installing OS X on other motherboards, so look around to see if yours is represented.
If you do have access to a Macintosh, you can create a patched Snow Leopard installation volume, and boot and install from it directly. This is the method used by the myHack installer, and is the one I prefer since you’re left with a bootable Snow Leopard installation disk (USB key, in my case), which can be very handy.
There are also the “manual” installation methods described on the Chameleon home page, but those are best left for the experts…the ones familiar with “Unix disk partitions and devices.”
I started with the myHack installer, created a bootable USB key, used it to create a bootable OS X hard disk, and then applied the “P6TV2Deluxe” package installer as the final step. This package installs the specific drivers for the various components (audio, networking, etc.) on the ASUS motherboard. The difference between the myHack installer and the P6TV2Deluxe installer is that the former tries to create a generic bootable system that will work on a range of PC hardware, while the latter is optimized specifically for that model ASUS motherboard. If you’re using an ASUS P6T series motherboard, you can skip the myHack installer and just apply the P6TV2Deluxe package, but I’d originally set it up for a different motherboard and applying the P6TV2Deluxe package overwrites any changed files it needs to, so the end result is the same.
In the image above, note the check boxes for the processor DSDT files. DSDT stands for Differentiated System Descriptor Table, and is a file containing low-level information about your processor and other hardware. For example, no current Macs use the Core i7-920 processor, so OS X doesn’t know how to invoke its low-power or Turbo Boost features without a corresponding DSDT file. Your Hackintosh will run without this file, but not as well as it could otherwise. Separate DSDT files are available for most current Intel processors.
And that was pretty much all it took. The newly-created volume booted and ran (almost) perfectly on my hardware. Once you’re done, you’ll notice a new folder, named “Extra”, at the root level of your hard disk. This contains driver and configuration files that are loaded at boot time, so don’t remove it! The bulk of the bootloader code resides in a file at the root of your hard disk labelled simply “boot”; obviously, you shouldn’t remove this file, either.
So what does OS X think it’s running on? Some weird quad-core Xeon, apparently…
The more detailed analysis is in the System Profiler application, invoked by clicking the “More Info…” button in the dialog above.
Interestingly, the System Profiler app thinks I’m using ECC (error-correcting) memory: notice the “ECC: Enabled” notation in the screen shot below.
My original Hackintosh attempt was with an ASUS Rampage II Extreme motherboard. Although I was able to get it running, hard disk performance on anything except the boot disk was very slow. This seems to be a problem with AHCI mode on the SATA ports of some motherboards, and the only solution anyone has been able to come up with is switching to IDE mode, which I didn’t want to do. This lead me to switch to the ASUS P6T V2 Deluxe motherboard, which didn’t have this problem.
Although most things were working perfectly, there were two problems with my new system. One of them I’ve managed to address; the other I have not. The problems were very slow OpenGL performance with my NVIDIA GTX280 video card, and the fact that the optical drive attached to the motherboard’s IDE port wasn’t recognized by the system.
The OpenGL problem is widely known but its causes remain mysterious. Some NVIDIA cards such as the GTX 280 and GTX 285 return much slower OpenGL performance than other cards such as the older 9600 series. It seems to be chipset-specific (i.e. people report that cards that are slow on X58 systems return much better performance on P55 Hackintoshes). Nobody seems to be sure what causes the problem or how to address it. If you don’t plan to do any gaming or professional rendering on your Hackintosh, this isn’t a concern, since the Mac’s native rendering system (“Quartz”) runs at full speed, so all your user interface, QuickTime, and other features will work just fine. However, this is an excellent example of the type of problem you’ll see on a Hackintosh: subtle, poorly understood, and (at least in the short term) unfixable. Half-Life 2 was almost a slide show on my system with the NVIDIA card.
What I did was switch to an ATI Radeon 5870 video card; there are no OpenGL problems with ATI cards. However, since the system I’d built didn’t contain any ATI drivers, booting with this card produced a black screen. I had to re-install the NVIDIA card, get a patched version of the bootloader with experimental ATI 5×00 drivers here, and install it (which consisted of simply replacing the “boot” file at the root level of the hard disk). However, booting still resulted in a blank screen, and it took me some time to figure out why…
Inside the “Extra” folder mentioned above is a file named “com.apple.Boot.plist”. This “property list” file contains parameters that are read in at boot time. There’s a parameter for the graphics mode your Hackintosh will boot with, which in my case looked like this:
This default resolution works with most monitors, but my monitor is 1920×1200, and that’s what my Mac environment is configured for. With the NVIDIA card, the resolution switch occurred during the boot process just before the desktop was displayed; but the (admittedly experimental) hacked drivers for the ATI 5870 couldn’t handle the switch— I’d see the initial boot screen, but it would go black before the desktop was displayed. The fix was replacing the line in com.apple.Boot.plist with:
Having the final resolution in the boot configuration file means that the resolution switch that caused the problem doesn’t occur. This is another good example of the fun you’ll have with a Hackintosh. However, despite my success with the video cards, I’ve never been able to get the system to recognize the optical drive connected to the IDE porft.