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

OPTION 1: 

 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.

OPTION 2:
The following commands place a backup of the unmodified binary before patching it.
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|\xbb\x4b\x00\x00\xeb\x03|\xbb\x4b\x00\x00\xe8\x01|g' IOAHCIBlockStorage
sudo /usr/bin/perl -pi -e 's|\x74\x0e\x48\x8d\x3d\xb2\x91\x00\x00|\xbf\xc8\x00\x00\x00\x90\x90\x90\x90|g' IOAHCIBlockStorage
sudo touch /System/Library/Extensions
Update: This patch DOES NOT work for 10.8.2′s IOAHCIBlockStorage.kext
OPTION 3:


Here is the updated fix for 10.8.2′s version of IOAHCIFamily.kext. Don’t copy-paste everything into the Terminal at once, do it one line at a time. Pasting the whole code at once will result in the second half of the commands being used as your password at the first sudo command.
The following commands place a backup of the unmodified binary before patching it.
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|\x8b\x4a\x00\x00\xeb\x03|\x8b\x4a\x00\x00\xe8\x01|g' IOAHCIBlockStorage
sudo /usr/bin/perl -pi -e 's|\x74\x0e\x48\x8d\x3d\x72\x92\x00\x00|\xbf\xc8\x00\x00\x00\x90\x90\x90\x90|g' IOAHCIBlockStorage
sudo touch /System/Library/Extensions