Jump to content

Waiting for root device when kernel cache used; only with some disks +FIX


  • Please log in to reply
157 replies to this topic

#61
fgrjhtd

fgrjhtd

    InsanelyMac Protégé

  • Members
  • Pip
  • 9 posts

The patch of course will need to be updated for any new releases for which the problem persists. (Well we could get fancy with otool to make the patch adapt dynamically to future releases). Does the problem in fact remain with the stock 10.8.1 beta?

Almost forgot, another longer-term workaround could be a wrapper to IOAHCIBlockStorage

This is the IOAHCIBlockStorage.kext from the 10.8.1 update, I very much hope you can help me to re-fix to help me solve this problem. Bluetooth and optical disk drive and repair the lostAttached File  IOAHCIBlockStorage.kext.zip   56.2KB   115 downloads

Attached Files



#62
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

This is the IOAHCIBlockStorage.kext from the 10.8.1 update, I very much hope you can help me to re-fix to help me solve this problem. Bluetooth and optical disk drive and repair the lostAttached File  IOAHCIBlockStorage.kext.zip   56.2KB   115 downloads

I'm still trying to come up with a better fix, perhaps it's best to stay away from 10.8 update previews in the meantime?
Also, I'd like to point out that with the tonymac threads copying this work without proper attribution it's a bit of a negative motivator.
(see my post over there if you care about the details)
Perhaps its also time for the site admins to come up with a collaboration agreement?

#63
fgrjhtd

fgrjhtd

    InsanelyMac Protégé

  • Members
  • Pip
  • 9 posts

I'm still trying to come up with a better fix, perhaps it's best to stay away from 10.8 update previews in the meantime?
Also, I'd like to point out that with the tonymac threads copying this work without proper attribution it's a bit of a negative motivator.
(see my post over there if you care about the details)
Perhaps its also time for the site admins to come up with a collaboration agreement?

Tonymac steal research and development results. Expressing its condemnation. I will keep an eye

#64
tluck

tluck

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 730 posts
  • Gender:Male
  • Location:NC, USA
I updated to 10.8.1 and hit this problem again. i tried your script and not sure it is doing any with the 10.8.1 version - no diffs on the binary?

any thoughts? or fixes for 10.8.1? gratefully,

tluck

of course this was the guts of your script.


#patch relocation table for our patch point - kprintf() -> IOSleep()
/usr/bin/perl -pi -e 's|\xeb\x4c\x00\x00\xea\x03|\xeb\x4c\x00\x00\xe8\x01|g' IOAHCIBlockStorage
#Make unconditional call to IOSleep(200) at beginning of kext
/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

#65
z0rglub

z0rglub

    InsanelyMac Protégé

  • Members
  • Pip
  • 1 posts
For 10.8.1 try:


#patch relocation table for our patch point - kprintf() -> IOSleep()
/usr/bin/perl -pi -e 's|\xbb\x4b\x00\x00\xeb\x03|\xbb\x4b\x00\x00\xe8\x01|g' IOAHCIBlockStorage
#Make unconditional call to IOSleep(200) at beginning of kext
/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

#66
g0l3m

g0l3m

    InsanelyMac Protégé

  • Members
  • Pip
  • 12 posts
First of all: Kudos to bcc9! Thanks for investigating the problem and engineering a very solid patch by finding the right string and the replacement pattern - great!

I ran into this problem after updating from 10.7 to 10.8 some weeks ago and bcc9's fix solved it. My hardware:

• Gigabyte UD3HB3 v1.3 F12
• 2x Samsung 830 256 GB (1x OS X, 1x Windows 7), 1x Samsung 1 TB HD 2.5"

All drives are connected to SATA Ports of the Intel chipset, additional SATA Ports are disabled. AHCI is enabled in BIOS of course.

After updating to 10.8.1 yesterday the problem occurs again and the initial patch didn't work. I've just found z0rglub's post and I can confirm that the changes are working. I've just booted with installed 10.8.1 update and patched

IOAHCIBlockStorage with z0rglub's modified patch.



Side notes:

I have 4 hackintoshs on duty, all built with Gigabyte UD3HB3 v1.3 F12 and installed 10.8. Interestingly the problem doesn't occour on all computers, two of them boot without any modification on IOAHCIBlockStorage. These ones have another disk setup (1x Samsung 830 256 GB/1x Intel 330 300 GB/1x Harddisk), everything else is identic (BIOS settings, Software versions etc.).



Thank you for you great work!!



#67
----

----

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
  • Gender:Male

For 10.8.1 try:


#patch relocation table for our patch point - kprintf() -> IOSleep()
/usr/bin/perl -pi -e 's|\xbb\x4b\x00\x00\xeb\x03|\xbb\x4b\x00\x00\xe8\x01|g' IOAHCIBlockStorage
#Make unconditional call to IOSleep(200) at beginning of kext
/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


Thanks z0rglub! Confirming this works for 10.8.1 running on Gigabyte Z68X-UD3H-B3 rev 1.3 F12 bios.

#68
tluck

tluck

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 730 posts
  • Gender:Male
  • Location:NC, USA
z0rglub. - this new patch method did not work on my Lenovo Laptop for 10.8.1. odd. the previous patch method worked on 10.8.0.
thanks to bcc9 for sure!!! and thank you z0rglub.

#69
philip_petev

philip_petev

    InsanelyMac Protégé

  • Members
  • PipPip
  • 91 posts
  • Gender:Male
  • Location:Haskovo, Bulgaria
Guys, it seem the 10.8.2 update will have an updated IOAHCIBlockStorage.kext (2.2.2), which will require patching as well as the previous versions, I've just tested the kext from the 10.8.2 beta combo update and got the Still waiting for root device message immediately after the restart.

#70
a3yu

a3yu

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 193 posts
  • Gender:Male
  • Location:Italy™
the 10.8.1 patch don't work for me

#71
wroehrig

wroehrig

    InsanelyMac Protégé

  • Members
  • Pip
  • 1 posts
  • Gender:Male
Just a thanks to bcc9. The 10.8 patch fixes the identical problem for me.

#72
Mohamed Khairy

Mohamed Khairy

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 2,172 posts
  • Gender:Male
@bcc9

is there news about new unversial patcher for this kext so work with all rev

#73
BugsB

BugsB

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,513 posts
  • Gender:Male
  • Location:Kauai, Hawai'i
why don't all you guys simply use the working 10.8 patched kext? It's just a driver, nothing more - when it's working for you, it's working. Rather than aiming to click and have a non-working system, why not click (kext wizard etc.) and have a working system (no matter if the driver reads 10.8 or 10.8.1 ???

#74
Maniac10

Maniac10

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPip
  • 1,248 posts
  • Gender:Not Telling

why don't all you guys simply use the working 10.8 patched kext? It's just a driver, nothing more - when it's working for you, it's working. Rather than aiming to click and have a non-working system, why not click (kext wizard etc.) and have a working system (no matter if the driver reads 10.8 or 10.8.1 ???


If Apple updates the kext then it means they improved it, fixed bugs or added new hardware, so you may be losing many benefits that way. Besides when you revert a kext there could be some dependencies issues with other kexts or frameworks, so it's not a flawless solution either.

#75
BugsB

BugsB

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,513 posts
  • Gender:Male
  • Location:Kauai, Hawai'i
OK that's true. If it's all still really only about the timeout then I'd suggest a different approach rather than patching: move the kext out of S/L/E, set correct perms to it on the new location, load it via startup script with a delay in the line before the kext gets loaded. This has been done to other kexts over the h'tosh years.

#76
Akai92

Akai92

    InsanelyMac Protégé

  • Members
  • Pip
  • 30 posts
@

z0rglub: The patch doesn't work with hp 4540s. Anyone can provide a working kext from 10.8.0 or a properly patch for 10.8.1?



#77
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male
I've updated my patch script for IOAHCIBlockStorage so that it should work under both 10.8 & 10.8.1. Update: 10.8.2 support added, and patch moved to post #1.
I have not personally tested this under 10.8.x as I'm currently running UEFI bios that does not exhibit this timing problem. The patch is confirmed to be working by others.

I would have done this much sooner but I've been swamped with real life stuff. Also the whole tonymac habit of copying my fixes omitting the documentation, where the fix came from, and the copyright is a real negative motivator. Google all the references to "patch relocation table for our patch point" for a sample, as well as my post at tonymac if you care. I've requested a fix over there but it's fallen on deaf ears. Perhaps my new do-not-steal/provide attribution copyright will make this more clear...

As for the comment about simply using a startup time-delay script:
That idea is a non-starter as this driver needs to load before the filesystem can be accessed.

Now, as I've hinted, I've tried to write a better fix where I have a time-delay kext that plugs in to IOAHCIFamily, and then IOAHCIBlockStorage plugs in to my time delay kext. This almost works but I can't get IOAHCIBlockStorage to then run correctly. There seems to be an issue with the constructors/metaclass or perhaps the plugin architecture that is getting in the way. If some developer has knowledge of the binary interface for these things I could use some help.

#78
netgear

netgear

    InsanelyMac Protégé

  • Members
  • PipPip
  • 97 posts
  • Gender:Male
I confirm 10.8.1 works thanks... :thumbsup_anim:

#79
tluck

tluck

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 730 posts
  • Gender:Male
  • Location:NC, USA
@bcc9

I just tried your 10.8.1 patch method and sorry to report it did not work for me on the Lenovo T420.
- still get "waiting for root device" when using KernelCache=Yes

Oddly --- What does (still) work is your patched 10.8.0 kext (just the executable) for 10.8.1

so i put the older (10.8.0) patched binary in place and I can boot with kernelcache - running 10.8.1.

i.e /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
which is 180064 Bytes in size for 10.8.0 vs 180168 Bytes for 10.8.1.

#80
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

@bcc9

I just tried your 10.8.1 patch method and sorry to report it did not work for me on the Lenovo T420.
- still get "waiting for root device" when using KernelCache=Yes

Oddly --- What does (still) work is your patched 10.8.0 kext (just the executable) for 10.8.1

so i put the older (10.8.0) patched binary in place and I can boot with kernelcache - running 10.8.1.

i.e /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
which is 180064 Bytes in size for 10.8.0 vs 180168 Bytes for 10.8.1.

Interesting, what about if you use my original workaround of booting with debug=8 ahcidisk=1? Does that work on your machine with 10.8.1?
Are you booting from an SSD or an ordinary laptop hard disk drive?

You could also patch the 10.8.1 version with a huge time delay, like 1-2 seconds instead of 200ms.





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy