daz1uk Posted July 30, 2012 Share Posted July 30, 2012 Hi, Today I took the plunge and updated to 10.8 but now can boot without safe mode, I have the error "still waiting for root device". When I try the -f flag I get this: Can anyone help? Also my USB doesn't work, I was going to try updating my boot loader but can't without USB. Using KernelCache=No, gives me the same result as above picture. Link to comment Share on other sites More sharing options...
Sanky18 Posted July 30, 2012 Share Posted July 30, 2012 From the picture you posted above you'll need to remove voodoohda. Boot into the installer and open up terminal and type the following: rm -rf /Volumes/"Your hdd"/System/Library/Extensions/VoodooHDA.kext 1 Link to comment Share on other sites More sharing options...
HUSABER Posted July 30, 2012 Share Posted July 30, 2012 Delete Voodoo.HDA.kext 1 Link to comment Share on other sites More sharing options...
daz1uk Posted July 30, 2012 Author Share Posted July 30, 2012 Renaming vodoohda.kext to voodhda.back fixed it for me, thanks guys. Another quick Question, I can now only boot using, kernelcache=no, does kernelcache just load the kexts from the e/e folder? Link to comment Share on other sites More sharing options...
Sanky18 Posted July 30, 2012 Share Posted July 30, 2012 this might help http://tonymacx86.blogspot.in/2011/12/tonymacx86-public-service-announcement.html 1 Link to comment Share on other sites More sharing options...
daz1uk Posted July 30, 2012 Author Share Posted July 30, 2012 Ok, when I try and use kernelcache=yes, I get this: Any ideas? Because right now I have no networking, which I'm assuming is a result of not using the kernel cache? Something else odd is that myhack no longer see's my hard drive in order to run myfix, I have absolutely no idea why that would be. Link to comment Share on other sites More sharing options...
HUSABER Posted July 30, 2012 Share Posted July 30, 2012 Delete flag kernelcache=yes,in Terminal copy these 2 command: sudo kextcache -system-prelinked-kernel -all-loaded and sudo kextcache -v 1 -a i386 -a x86_64 -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext -z /System/Library/Extensions/ Reboot And Voila 1 Link to comment Share on other sites More sharing options...
bcc9 Posted July 30, 2012 Share Posted July 30, 2012 Something else odd is that myhack no longer see's my hard drive in order to run myfix, I have absolutely no idea why that would be. Mountain lion on hackintoshes have a timing bug that can lead to "still waiting for root device" errors. See my fix here:http://www.insanelymac.com/forum/index.php?showtopic=280062 Link to comment Share on other sites More sharing options...
daz1uk Posted July 30, 2012 Author Share Posted July 30, 2012 Boots fine but says kexts are outdated? Link to comment Share on other sites More sharing options...
HUSABER Posted July 30, 2012 Share Posted July 30, 2012 Delete from your Extra Folder Smbios.plist file ,or rename your existing MAC model.... For enable AppleSMC.kext you need good Smbios.plist and create thermal profile inside kext,and see-no error :wink2: after reboot For IOuserEthernet error you need kext for Ethernet inside IONetworking,and error stoped Link to comment Share on other sites More sharing options...
bcc9 Posted July 30, 2012 Share Posted July 30, 2012 Boots fine but says kexts are outdated? I'm assuming you needed my fix to get beyond the "still waiting for root device" error.touch /System/Library/Extensions to let the system rebuild your cache and reboot. Using kextcache to rebuild your cache manually is error prone and not recommended (per the OSX man pages even). Link to comment Share on other sites More sharing options...
HUSABER Posted July 30, 2012 Share Posted July 30, 2012 Link to comment Share on other sites More sharing options...
daz1uk Posted July 30, 2012 Author Share Posted July 30, 2012 Husaber, Thanks for your help today it is much appreciated. bcc9, Thanks for the info, but no, I managed to get it to boot, simply by setting usekernelcache=no. I then ended up deleting the kernelcache flag completely as per instructions in this thread. Although I will look further into your post shortly to see if there is anything there that can help with my system. At this point in time I'm considering a fresh install and starting again from scratch. Link to comment Share on other sites More sharing options...
daz1uk Posted July 30, 2012 Author Share Posted July 30, 2012 Delete from your Extra Folder Smbios.plist file ,or rename your existing MAC model.... For enable AppleSMC.kext you need good Smbios.plist and create thermal profile inside kext,and see-no error :wink2: after reboot For IOuserEthernet error you need kext for Ethernet inside IONetworking,and error stoped You got any pointers on where I can read about creating a thermal profile please? Link to comment Share on other sites More sharing options...
daz1uk Posted July 31, 2012 Author Share Posted July 31, 2012 Mountain lion on hackintoshes have a timing bug that can lead to "still waiting for root device" errors. See my fix here:http://www.insanelymac.com/forum/index.php?showtopic=280062 Hey bcc9, I got fed up and did a fresh install, your patch worked a treat! Link to comment Share on other sites More sharing options...
HUSABER Posted July 31, 2012 Share Posted July 31, 2012 To create thermal Profile is easy....but you need good smbios.plist for your mobo... check with this app who is your the same mobo from Mac PC:Mactracker.app http://www.projectos...p?showtopic=359 Link to comment Share on other sites More sharing options...
daz1uk Posted July 31, 2012 Author Share Posted July 31, 2012 To create thermal Profile is easy....but you need good smbios.plist for your mobo... check with this app who is your the same mobo from Mac PC:Mactracker.app http://www.projectos...p?showtopic=359 I'm pretty sure my smbios is good. Link to comment Share on other sites More sharing options...
HUSABER Posted July 31, 2012 Share Posted July 31, 2012 Ok,enable it..thermal profile: Vanilla Speed Step This is by far the trickiest of all DSDT related fixes. If you are unsure of what you are doing you can use VoodooPowerMini.kext, and it would do the trick for you. But it will not be as effective as vanilla solution, because it doesn't enable C-states. There are three different CPU states defined in ACPI - P-states, C-states and T-states. We don't care about the latter. P-states - are actual speed steps, various frequencies/voltages combinations are defined, so that CPU can use less power when it's not under heavy load. You can even adjust those states for undervoltage (Google it) to make your CPU eat less power at the highest frequency. C-states - are the states of CPU deep sleep, when it almost shuts off its entire core parts when idle. In modern CPUs there are tens of C-states. In Core 2 Duo on mobile platform (different on desktops) four C-states are defined, but only three C-states can work simultaneously (C1, C2, C3 or C1, C2, C4). But it's still more than enough to save a lot of power/temperature. With C-states enabled my CPU core temperature dropped 10-15 degrees Celcius! SpeedStep functionality in OSX depends on a combination of parameters - DSTD configuration and Mac model. First of all you need to study http://www.everymac.com to find a MacBook or MacBookPro model that is the closest to my ThinkPad in configuration using ICH7M platform and with Core 2 Duo 2.33GHz and intel 3100 it is almost identical to MacBookAir2.1. If you have ATI, your safe choice will be MacBookPro. But you cannot use chosen model directly, you need to make your own fake model based on that MacBook family. I've decided that I will use MacBookAir4.1 (there was actual MacBookPro2,2) and I've updated my SMBIOS.plist accordingly: Code: <key>SMbiosversion</key> <string>MBA41.88Z.00A5.B01.0611031449</string> <key>SMproductname</key> <string>MacBookAir2.1</string> Next you need to create ACPI configuration for that model allowing OSX to use SpeedStep with that model. In SnowLeo there's /S/L/E/IOPlatformPluginFamily.kext. Inside (Show package contents) in the PlugIns folder there ACPI_SMC_PlatformPlugin.kext. This is the kext that restricts or allows SpeedStep and C-states for particular Mac models. Before 10.6.2 all models configuration was stored in Info.plist inside that kext. Now in 10.6.2 there's another folder named Resources with separate configuration plists for each Mac that is supported by SnowLeo. We are not going to change that kext contents, since we need to keep /S/L/E 100% vanilla. But, we are going to use the information that is stored in MacBookAir2.1.plist. So, again, the path to the plist is: /S/L/E/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/ We now need to put this information into our legacy kext from above and update it to enable SpeedStep for our custom fake Mac model. But first put into legacy kext the following template inside IOKitPersonalities section (check screenshot above): Code: <key>ACPI_SMC_PlatformPlugin</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.ACPI_SMC_PlatformPlugin</string> <key>IOClass</key> <string>ACPI_SMC_PlatformPlugin</string> <key>IOPlatformThermalProfile</key> <dict> [====Here we'll place info from MacBookAir2.1.plist====] </dict> <key>IOProbeScore</key> <integer>1200</integer> <key>IOPropertyMatch</key> <dict> <key>IOCPUNumber</key> <integer>0</integer> </dict> <key>IOProviderClass</key> <string>AppleACPICPU</string> <key>IOResourceMatch</key> <string>ACPI</string> </dict> Inside IOPlatformThermalProfile section you need to copy information from the same section from your chosen Mac model plist. In my case it was MacBookAir2.1.plist. After this I replaced all occurrences of MacBookPro2,1 with MacBookAir4.1. Next we need to enable P-states and C-states. For P-states, edit copied plist configuration to include the following: Code: ... <key>ConfigArray</key> <array> <dict> <key>model</key> <string>MacBookPro2,3</string> <key>restart-actions</key> <dict> <key>cpu-p-state</key> <integer>0</integer> </dict> </dict> </array> <key>ControlArray</key> ... <key>PLimitDict</key> <dict> <key>MacBookAir4.1</key> <integer>0</integer> </dict> <key>StepDataDict</key> .... In IORegistryExplorer you will spot the following. With IOService selected when you open info for CPU0@0->AppleACPICPI->ACPI_SMC_PlatformPlugin on right handside you should see that CPUPlimit is 0x0 and PerformanceStateArray contains 5 values. This means you're golden. Most of vanilla speed step guides tell you that you also need to put P-states definition in your DSDT. P-states definition is picked up by OSX automatically from SSDT tables, so you need to put P-states into DSDT only if you want override them to enable undervoltage for example. With C-states it is a bit different, but I'm not sure why. To enable C-states you need to find in one of previously extracted SSDT tables the following block Name (C1M4, Package (0x04). This block defines three C-states - C1, C2 and C4. You can also use C1M3 or C1M2 or C1M1 (different combinations of C-states) which are defined within the same SSDT. You should then put it into your DSDT like this: Code:For Core 2 Duo only.......This is visual from my DSDT-DONT COPY Scope (_PR) { Processor (CPU0, 0x00, 0x00001010, 0x06) { } Processor (CPU1, 0x01, 0x00001010, 0x06) { } } Scope (_PR.CPU0) { Name (C1M4, Package (0x04) { 0x03, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, One, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (SystemIO, 0x08, // Bit Width 0x00, // Bit Offset 0x0000000000001014, // Address ,) }, 0x02, One, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (SystemIO, 0x08, // Bit Width 0x00, // Bit Offset 0x0000000000001016, // Address ,) }, 0x03, 0x39, 0x64 } }) Method (_CST, 0, NotSerialized) { Return (C1M4) } } Scope (_PR.CPU1) { Method (_CST, 0, NotSerialized) { Return (^^CPU0._CST ()) } } What we do here is that we define/override _CST() method for each of our CPU cores, and this method will return defined package of three C-states we've chosen. You can try to use my C-states, chances are they are the same across all Core Duo / Core 2 Duo family. There's no harm if you have different C-states defined, the section simply won't work and will be ignored by OSX. The last step for C-states is to add a couple of new sub-sections to legacy kext inside IOPlatformThermalProfile section: Code: <string>ACPI_SMC_PlatformPlugin</string> <key>IOPlatformThermalProfile</key> <dict> <key>CStateDemotionDict</key> <dict> [====skipped, check attached Extra.zip for reference====] </dict> <key>CStateDict</key> <dict> [====skipped, check attached Extra.zip for reference====] </dict> ..... Once you've done all of this and regenerated mkext caches with pfix, reboot and check IORegistryExplorer (see the screenshot above). If you have successfully enabled C-states, you will see CSTInfo parameter. If you don't see it, that means you have no C-states enabled. That's it, you're done with vanilla speed step. Check CPU temperature (google iStat) and compare it to what you have in Windows or what you've had before your vanilla speed step. You will be surprised. 1 Link to comment Share on other sites More sharing options...
Recommended Posts