Fix for “Still waiting for root device” on OS X 10.8 Mountain Lion

This error manifests itself on OS X 10.8 Mountain Lion only if you boot your Hackintosh with UseKernelCache=Yes, as booting with “-f” results in a normal boot sequence.

The reason is believed to be due to a timing change Apple has introduced in the IOAHCIBlockStorage.kext, results in a bug on Hackintosh builds: the system enumerates the disk partitions too fast and the boot partition gets skipped. The fix involves patching the IOAHCIBlockStorage.kext and adding a slight delay that allows enough time for disk enumeration.

The shell script patcher is available from the author’s Dropbox, but if you prefer to do everything by hand yourself, here is the list of the commands:

cd /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS
sudo mv IOAHCIBlockStorage IOAHCIBlockStorage.orig
sudo cp IOAHCIBlockStorage.orig IOAHCIBlockStorage
sudo /usr/bin/perl -pi -e 's|\xeb\x4c\x00\x00\xea\x03|\xeb\x4c\x00\x00\xe8\x01|g' IOAHCIBlockStorage
sudo /usr/bin/perl -pi -e 's|\x74\x0e\x48\x8d\x3d\xa5\x90\x00\x00|\xbf\xc8\x00\x00\x00\x90\x90\x90\x90|g' IOAHCIBlockStorage
sudo touch /System/Library/Extensions

Reboot and see if this fixes the problem for your Hackintosh.

Update: This patch DOES NOT work for 10.8.1’s IOAHCIBlockStorage.kext

Update 2: Updated fix for “Still waiting for root device” on OS X 10.8.1 Mountain Lion

This fix has been made possible due to countless hours spent by bcc9 from InsanelyMac forums reverse-engineering Apple’s work and his original script.

CMOS Reset Error on OS X 10.8 Mountain Lion after wake from sleep

If you experience CMOS checksum errors and CMOS resets on wake or reboot after installing OS X 10.8 Mountain Lion on your Hackintosh, you need to patch the AppleRTC.kext. Open your Terminal and follow these easy steps:

1. First backup the original kext:

mkdir ~/Desktop/BackupRTC
sudo cp -r /System/Library/Extensions/AppleRTC.kext ~/Desktop/BackupRTC/

2. Copy the original kext to your desktop for patching:

sudo cp -r /System/Library/Extensions/AppleRTC.kext ~/Desktop/

3. Patch it:

sudo perl -pi -e 's|\x75\x30\x89\xd8|\xeb\x30\x89\xd8|' ~/Desktop/AppleRTC.kext/Contents/MacOS/AppleRTC

4. Delete the original version:

sudo rm -rf /System/Library/Extensions/AppleRTC.kext

5. Copy the patched version in the place using Kext Wizard, rebuild the permissions and the system cache.
6. Reboot.

802.11n 450mbps WiFi PCIe card with native Airport support on OS X

For Hackintosh builds you have several Wireless networking options.

You can either build your own one from an Apple mini PCIe boards and a mini-PCIe to PCIe adapter card, or buy a ready-made card that happens to be natively supported in OS X, plus has full AirPort support. The cheapest such card is the TP-Link TL-WDN4800 Wireless N 450Mbps PCI Express Adapter Amazon $44.99

 

While this card costs more compared to the mini PCIe adapter method (that sometimes requires device id tinkering with the cheapest 3rd party wifi boards), it requires no extra drivers and works out of box in both OS X 10.7 Lion and 10.8 Mountain Lion.

Wall-mounting or mounting AppleTV behind the TV

If you own the AppleTV, you’ve probably thought about the possibility of mounting the AppleTV vertically on the back of the TV or the wall behind it to hide the AppleTV and to reduce the cable clutter on your stand.

I’ve personally tried mounting it with some double-sided adhesive tape, but without much luck – the warmth of the TV case and the AppleTV itself promptly weakened the adhesive, and the box fell off in about 30 minutes after the initial “yay, I’ve saved some money”. Eventually I’ve found a commercial and universal solution for for this problem: Innovelis’s TotalMount – Apple TV Universal Mounting Kit. Costing $18.99, it’s well worth the price, as it allows for both wall and TV mounting.