Hackintosh – it’s alive!

My Core i7 950-based Hackintosh is alive.  I’m using a Gigabyte GA-X58A-UD5 motherboard, a D-Link DWA-556 wireless card, and an nvidia GTX 260 video card.  To install, I used Empire EFI 1.85 r2 to bootstrap the retail 10.6 DVD, which I own.  I had to provide the “GraphicsEnabler=Y PciRoot=1” options to the Empire EFI loader to successfully boot the DVD.  Once installed, I used the Chameleon 2.0 rc4 boot loader from a USB stick (Chameleon cannot boot DVDs directly, or else I’d have tried that first) to boot my machine.  As to be expected, there were several caveats along the way.

First, I had to patch my dsdt (basically, BIOS-level device description table) to be compatible with Chameleon and other EFI-translation layers to provide EFI services to Mac OS.  I followed the general guidelines for similar Gigabyte boards here.  I used the intel “iasl” compiler with Ubuntu 9.10 on my machine to retrieve the BIOS’s regular dsdt, decompile it, edit, and recompile.  With my edited dsdt, I have native power-management functionality (rather than using a null driver that effectively makes your CPU run at maximum power-consumption levels all the time).  I also have many of my motherboard’s devices working, including Ethernet, USB, and obviously SATA.  Shutdown works with just my patched dsdt, but rebooting does not.  For that, i had to install a snow-leopard compatible version of the OpenHaltRestart driver.  For sound, I used the open-source voodoohda driver, which works just fine.  My graphics “just work” with the GraphicsEnabler=Y option, though switching resolutions in games does not seem to function as desired.  That said, I don’t really care, because I only ever use my display at native resolution.  My wireless card is identified as an Airport Extreme, as I was very careful to get one with the exact same Atheros chipset as those used in Macintosh hardware.  I use the fakesmc 2.5 driver to enable some platform devices necessary for booting MacOS, but other than the OpenHaltRestart and voodoohda drivers, everything else is vanilla, stock MacOS with no other modifications.  I updated to 10.6.2 without issue.

I did note, however, that Chameleon seems to default to attempting to boot the 64-bit version of the MacOS kernel on my hardware, which is nonsensical.  I had to force the 32-bit kernel in order to make my wireless card work, as Apple does not provide a 64-bit version of the driver.  I do not understand the fascination with the 64-bit kernel within the hackintosh community.  You’ll find lots of people bitching about a lack of a 64-bit driver for this, that, or the other.  As people who are actively modifying OS-level software — especially the MacOS kernel — the people writing the software, at least, should know that the 64-bit kernel buys you very little in terms of functionality on MacOS.  MacOS can address more than 4 GB of RAM using the 32-bit kernel via PAE.  Further, MacOS seamlessly supports 64-bit applications (as well as 32-bit applications) with large-RAM support on its 32-bit kernel.  No benchmark data shows any advantage on MacOS with a 64-bit kernel compared to a 32-bit kernel.  (Yes, there is overhead switching between modes of execution, so syscall-heavy code can suffer, which is why Xserves default to having the 64-bit kernel on. However, my desktop — even with heavy graphics-card use — does not show this to be an issue).  Attempting to default to the 32-bit kernel only reduces compatibility with drivers, for no actual normal-use benefit.

I’m using the F4 version of the BIOS for my motherboard, which is the newest.  I did have quite the scare with updating my BIOS, however.  I flashed it from a USB stick that I’d installed FreeDOS on.  The flash appeared to be successful, according to the program’s results, but upon reboot my motherboard appeared totally dead.  It wouldn’t give me anything on screen, it wouldn’t provide any beeps, and just seemed utterly dead.  The on-board boot status code LED indicated that it was constantly resetting itself, going back and forth between reset and initial memory tests.  I reseated my add-in cards, reseated my RAM, and still, the same result.  Finally I reset the BIOS variables (“CMOS” — an outdated misnomer if there ever was one), and thankfully it worked.  I was not looking forward to the prospect of returning a motherboard to newegg, but thankfully, it didn’t come to that.

Also, I’m glad I decided to go with the 950 rather than the 920 processor.  Apparently newegg got burned with a batch of counterfeit 920 processors last week, which is when mine would have arrived.

On the Windows front, I installed 64-bit Windows 7 (which I bought on sale at launch, knowing I’d need a copy anyway eventually) later, which went smoothly.  I disabled the annoying aspects of the hideously unusable menu-bar, basically making the menu function like Windows Vista (which I actually like).  It does have some minor improvements versus Windows Vista, particularly with simplified network configuration.  That said, it’s really just Windows Vista and an annoying menu bar.  Yes, the compatibility-mode feature (running Windows XP sp3 in a VM for a program) is a nice new addition, but for most users, this is not a big deal.  Most programs have been updated to run with Vista, and so Windows 7 benefits from the perception that “everything runs better”.  Actually, everything runs the same as it did with Windows Vista, now that developers (both 3rd-party and Microsoft) have finally updated most everything to stop doing nasty things like scribble on global, machine-wide registry variables.  Regarding multibooting, I used 2 separate drives for MacOS and for Windows.  Windows still cannot boot a gpt-partitioned drive, and I wanted to use native gpt partitioning for MacOS.  During Windows installation, I disconnected my MacOS drive (which I have since installed the Chameleon bootloader on to, obviating the need for a USB stick on each boot) to avoid Windows writing into the MBR of my MacOS drive.  After successfully installing, I reconnected my drive, and Chameleon can correctly select and boot Windows 7 just fine (though you do have to select the “System Reserved” partition to boot, which contains the Windows 7 boot loader).  I still need to install FreeBSD on this beast, but overall, I’m quite happy with the machine and with the software results.

Tags: , , , ,

10 Responses to “Hackintosh – it’s alive!”

  1. visor says:

    Your Hackint0sh sounds useful – in fact, I have the x58a-ud5 also. Are you likely to make your DSDT and/or kexts available to download?


  2. cantankerouscoder says:

    I’ll post the diffs to my disassembled dsdt later this week. I’m using an openhaltrestart kext because I could only get restart (not shutdown) to work, and fakesmc 2.5. Otherwise I’m not using non-vanilla kexts.

  3. kingofthelair says:

    I would be interested in this dsdt as well. I have a rig based on this board ordered & should get it Fri or Mon.

  4. cantankerouscoder says:

    I’ve made a new post with the diffs for my modified DSDT, as well as information about which kexts I had to use. Only FakeSMC 2.5 was actually required, but I also have VoodooHDA for sound, OpenHaltRestart to get it to reboot — only shutdown would work otherwise, and a null driver to get OS X to recognize my SATA ports as internal rather than external so that I didn’t have orange icons for hard drives. The last 2, however, are more convenience rather than functionality.

  5. Steven Vance says:

    Thanks for your insight on using the 32-bit Mac OS kernel over the 64-bit kernel. My Hackintosh is now in a great state and I don’t want to modify it unless there’s good reason to. I’ve had too many crashes and such because of the wrong kernel, wrong kernel flags, or the wrong choice in drivers.

  6. Stephen Harris says:

    I have the same motherboard except the bios is FB and Revision 2.0 and the i7-950. I used the MultiBeast tutorial because it enjoyed the most success. I’ve had trouble with the Ethernet. At first no En’s, then it wouldn’t connect to the internet because of a self-assigned IP address. I spent hours on different combinations. Finally, I connected and could do email, and I locked it. After a later reboot I lost the connection and it now reported 4GB of ddr2 ram instead of 12GB of ddr3 ram. I used RL8169 for the kext? Also I can dual boot with Easybcd, as I installed Windows second. I do get a Chameleon boot screen but it doesn’t boot to the smaller Windows boot partition, that is, no automatic detection. It misses ntldr. I turned off xxxHPET in Power Management in the bios. Hackintosh reminds me of the Redhat 6 days.
    My video worked, I think it was Nvidia enabler.

  7. cantankerouscoder says:

    The amount of ram reported in “About this Mac” actually has only to do with what you put in your smbios.plist file. There’s some way to get it to auto-detect, but I didn’t do that — I just edited my smbios file. (I have 6GB of DDR3).

    Regarding Chameleon, I’m multi-booting with no troubles, but I’m using a 2nd drive. If you’re using MBR partitioning, that can definitely throw a wrench in to things. If you’re using GPT partitioning, I’ve heard of people having issues booting windows (7, presumably — vista can’t boot from GPT partitions) with that, too. I’m not sure what “automatic detection” you’re referring to here. When I boot chameleon, i see 3 choices — mac os, the system partition (which is the boot partition), and the windows data partition. This is how Windows 7 installs. Are you seeing something else?

    I haven’t had the issues with power management you describe. To get power management to work reliably, however, you have to supply a modified dsdt, which I described in my other post.

  8. Stephen Harris says:

    I also installed to two drives, Windows 7 second. I only used 6GB of ram for the SL install because I had read that there were installation problems if you used 12GB. For the Win7 install I inserted the additional 6GB. I have had this recognized afterwards, as 4GB of ddr2, 12GB of ddr2 and 12GB of ddr3. I have never edited the symbios file. I don’t know if it can be automatically regenerated after reading the bios. I’m not sure that what is reported actually had to do with what the machine uses.

    I formatted the Mac drive with disk utility, GUID partition table and into one partition. It created an EFI, the main drive, and a 128mb partition even though I selected one partition. At first I had to use Iboot to boot SL. Then I ran Cameleon and can boot directly from the hard drive now. That means something was written to the hard drive. I believe that is what Easybcd reads. I can dual boot using Easybcd. I used to dual boot win xp and ubuntu. I used the dd command to put the 512 bytes in a .bin file on my Windows C: drive. It was simple to add Ubuntu to the XP boot.ini I think Easybcd boots SL from a file on the Mac hard drive, not the MBR. “Systems that support EFI require that the boot partition must reside on a GPT disk. Other hard disks can be either MBR or GPT.”
    “When I boot chameleon, i see 3 choices — mac os, the system partition (which is the boot partition), and the windows data partition. This is how Windows 7 installs. Are you seeing something else?”

    That is what I see when I use the iboot boot disk which now identifies itself as Chameleon RC.4. I have gotten an error from trying to boot the Win7 drive from there. I use Easybcd which boots directly to Win7 or to SL, = Chameleon, F8 gives me the option of booting to Windows Data, Windows Reserved or Snow Leopard. I think the Win 7 boot files are actually located on the Windows Reserved partition. Anyway, I don’t experiment with that anymore because something failed to work.
    I’m not aware of describing power problems. The tutorial had me change the bios to AHCI, enable sata and esata, and put HPET into 64 bit mode. I thought HPET was related to power, maybe not. It was in the Power Management section of the bios.
    My question was, what kext did you use to enable the onboard ethernet,
    en0 and en1 so that you could connect to the internet? You said you used a vanilla kext. Which one is it, for this motherboard, it should be a RealTex and some number after RL? I think that Chameleon, since it was installed before Windows was installed probably points to the wrong Win partition. But I don’t care, I already have a solution.

  9. Stephen Harris says:

    To close this off. I booted up today and the self-assigned message was gone, it now said connected and had a DNS server and my Router’s IP address etc. Mail worked. I guess the polling for the DHCP server isn’t all that efficient. I wish I knew how to start the search connection to the server manually.It now says 12GB 667 Mhz DDR2 Sdram instead of DDR3 at a faster Mhz. Well, still something to learn.

  10. cantankerouscoder says:

    I’m fairly sure what’s in smbios.plist has nothing to do with how Mac OS actually uses the machine.

    I’ve never used Easybcd. Chameleon does what I want, but I suppose it’s something to consider for the future.

    Sorry, I misread what you said. Regardless, getting the hpet to work correctly did require a dsdt change, as there was a section covering it inside the dsdt.

    I never did use the onboard ethernet for this motherboard. It does not work out of the box & does require a 3rd-party driver (which I discussed in another post — it appears to be a different driver than the one you’re using). I use a wireless card (DWA 556) which *does* work out of the box, with no additional drivers. There’s source out there for the realtek driver — if I ever manage to install ethernet in my house near where my workstation is, then yeah, I’ll probably break down & fix the driver myself.