15 November 2009

Once And For All

Mac OS X v10.6.2 Update has wreaked, if not full-blown havoc, a ripple whose effect is considerably big enough to warrant worrying among OSx86 fans, me included. In the course of the week, since the update was officially released for public consumption by Apple and before that, during the update's beta seeding among Apple developers, lots of workarounds have been circulated and posted here and there in the web.

As a hackintosh owner myself, I'm drawn into this mild frenzy in pursuit of bleeding-edge nirvana; being always up to date. And so without further drama, I give you a recounting of how I updated my MacBook Mini (an HP Mini 1000 with 2 gb ram) from 10.6.1 to 10.6.2.
This guide assumes you used the EFI guide in this site to install Snow Leopard on your Mini (presumably a 1000 like mine)

Downloads: Mac OS X v10.6.2 Update (delta; since I'm already on 10.6.1); Tea's mach_kernel (patched to work with Atom CPU's); new 10.6.2 SleepEnabler.kext from netkas.

1) Unzip Tea's patched kernel - which I renamed as "mach_kernel_tea" for convenient reference and put it to your main "/" folder.

2) Go to /SnowLeoHPMini_101709/bootplist_update folder to edit com.apple.Boot.plist. You should add a string to tell Chameleon to load mach_kernel_tea from here on. You can use TextEdit or TextWrangler to add the string under the Kernel key. Save your changes.


3) Launch Terminal.app and sudo -s. Then look for update.sh inside /SnowLeoHPMini_101709/bootplist_update folder; drag and drop this script file into Terminal window. You should see the path along with the script file automatically reflected inside Terminal. With Terminal as the active window (click on the app's title bar), press Enter. This step updates the com.apple.Boot.plist in your hidden EFI partition.

4) Go to /SnowLeoHPMini_101709/extensions_update folder and put your current SleepEnabler.kext inside the _disabled folder. Unzip netkas' new 10.6.2 SleepEnabler.kext inside /SnowLeoHPMini_101709/extensions_update folder.

5) Launch Terminal.app and sudo -s. Then look for update.sh inside /SnowLeoHPMini_101709/extensions_update folder; drag and drop this script file into Terminal window. With the Terminal window active, press EnterThis step updates the kexts and rebuilds Extensions.mkext in your hidden EFI partition; replacing the older SleepEnabler with the newer 10.6.2 compatible one. This step is important since you'll get a Kernel Panic without netkas' new 10.6.2 SleepEnabler.kext.

6) Run the Mac OS X v10.6.2 Update package. Restart. If all went well, you won't experience any kernel panics.

IMPORTANT: At this point, you might have noticed that you don't have WiFi. When you click at the AirPort icon on your menubar, you might probably get this:

7) Download this IO80211Family.kext and put it inside /SnowLeoHPMini_101709/extensions_update folder. (Additionally, you can move the older IO80211Family.kext to the _disabled folder first, if you don't want to entirely lose that file). You know the drill or refer to step # 5 of this tutorial.
WiFi should now be working after you've restarted.

If you've installed Snow Leopard via NetbookBootMaker, then this is what you need to do:

1) Put the "mach_kernel_tea"  in your "/".
2) Go to /Extra/ and edit your com.apple.Boot.plist as in step # 2.
3) Put the new 10.6.2 SleepEnabler.kext inside your /Extra/GeneralExtensions/ folder to replace the older one.
4) Update your Extensions.mkext by running the ExtraUpdater.app - that rubber shoe icon in your /Extra folder. The key is to wait until the button is no longer recessed before restarting and losing your patience.

People at the MyHPMini.com forums have been reporting that applying NetbookInstaller 0.8.3 RC4 on their system solved the "No WiFi after 10.6.2 update" issue. It may be the easier method of the two and perhaps you're asking why I keep on sticking with EFI, and consequently all that mucking around Terminal stuff which is a bit more confounding than a simple sets of clicks with a GUI app. 

Well, I could have just ran NetbookInstaller on top of my EFI config like a few people have done and have reported it works anyway. However that combination setup would be like a spaghetti mess (I have an /Extra/Extensions folder in my hidden EFI partition, and then there comes the addition of another /Extra/GeneralExtensions/ folder in my Macintosh HD "/") and I like being neat and clean about my hackintosh; if it's EFI boot, then it's EFI. If it's Netbook BootMaker/Installer then it's that method all throughout.

Besides, based on my observation from this hackintosh stuff, kexts stored in the EFI hidden partition and those on the main hard drive root folder ("Extra" folder on "/") seem to be loaded differently by Chameleon. I could never get the older IO80211Family.kext loaded from EFI in 10.6.2 - it loaded perfectly fine in 10.6.1 from EFI. Also from /Extra/GeneralExtensions/ via NetbookInstaller way, that kext loads fine.

The "new" IO80211Family.kext is actually derived from the updated kext installed by 10.6.2; I copied that kext from /System/Library/Extensions and edited the Info.plist for the AppleAirPortBrcm4311.kext plugin to include my HP Mini's Broadcom 4315 WiFi module in the array list to get it recognized. 

This "new" IO80211Family.kext (which proves to be a newer version indeed; it's now a CFBundle version 310.6 instead of the "older" IO80211Family.kext's 300.20) and it loads without issues from the hidden EFI partition in 10.6.2 using tea's modded kernel. It could be just a minor case of probe scores - kexts follow a specified loading priority depending on the probe score assigned to them - and I could've dived headlong into the forums once again for that but I just want what works for my setup.

And so this is, once and for all, how I updated to 10.6.2.

PS. I don't mind getting an "Intel Core Solo" for a procie :D


Gabe said...

Hey! im following this now! im just about to start the updater. thank you for this guide!!

Gabe said...

Alright! worked perfectly. i did everything in one big step. i dl'ed everything then installed everything and rebooted. the first time i rebooted i kp'ed. so i restarted again. another kp. but the third time was the charm. it booted fine. thanks again.

LeMaurien19 said...

You kp'ed when you did it in one go?
Thanks for the feedback, it's great information.
Did you change the update procedure (like uninstalled first the old SleepEnabler.kext, then rebooted. Then installed the kernel, then rebooted. Then changed your boot.plist, then rebooted, and so on and so forth) for the successful boot the 3rd time?

Nic said...

hey i followed your previous EFI guide and now have 10.6.0 installed but it has no sound, no sleep and kernal panics on startup (i use the external drive to allow to boot off the internal drive) i havnt bothered fixing all of this really, cos i can deal with it for now. do you think doing this update will fix these problems? should i try resolve them before i try this update?

thanks for all the guides and info, its made my Mini so much more enjoyable!

Josh said...

I followed the instructions as you said...but after the 10.6.2 download finished and restarted the computer the computer asks what drive to start on, even though the internal one is the only one plugged in. Once I hit enter it just freezes on the apple logo, and no spinning wheel appears to show up to boot the computer up.

LeMaurien19 said...

^That's weird.
Basically, what we're doing here is put the Atom patched mach_kernel on your main /.

And then as a support file, we also need to replace SleepEnabler.kext with that's compatible with the Atom patched kernel.

Finally, we point Chameleon to boot the Atom patched kernel.

Try inspecting your com.apple.Boot.plist and add this key and string combination (if you don't already have it)
< key >Default Partition< /key >
< string >hd(0,2)< /string >
this is assuming your main / partition is identified as "disk0s2" with your EFI partition as "disk0s1".

To check, go to Terminal and type this command:
$ diskutil list

Andy Villas said...
This comment has been removed by the author.
Andy said...

Great guides! One of my favorite resources on the internet!

Has anyone be able to get sleep to work with 10.6.2? Sleep worked for me on 10.6.0. Now, when I close the HP Mini it appears to go into sleep mode repeatedly and then wake up immediately - which really chews through the battery.


LeMaurien19 said...

Thanks for reading :)

DSDT mods and appropriate kernel + 10.6.2 SleepEnabler should do the trick.

If you're interested see meklort's blog for new Chameleon release and SleepEnabler

Dan Romney said...

I got the sleep to work on 10.6.2 using Meklorts 10.6.x sleep kernal and the dsdt mods. I can get 10.6.2 to boot up on my mini 1116nr, but the Trackpad breaks, and the VoodooPS2 kexts won't fix it. plus I often get the grey screen of "you need to restart your computer" while I was running 10.6.2, like more often than not. I probably messed it up, but if anyone has had similar issue, help would be greatly appreciated.

uShak said...

Same thing happened to me. After restarting I have to press enter to select the drive and then it just locks at the Apple logo.

I'd love to take a look at the com.apple.Boot.plist but the system won't even boot using my external HDD as the boot device.
Bahh.. Start over? ):

p.s. LeMaurien, you are awesome.

LeMaurien19 said...

^don't start over. If you've got another Mac or working hackintosh, create a usb stick booter. Or better yet just use the drive you used as installer (where you restored Snow Leo DVD and applied NetbookBootMaker on) to boot up the internal drive's installation volume.

The thing with meklort's SleepEnabler (new) is that you gotta use the stock 10.6.2 mach_kernel along with the version of Chameleon that patches this stock mach_kernel for Atom procies. (Meklort's patched non-gui Chameleon RC4)

uShak said...

Yea, I tried booting via the installer USB drive that I had, but it still stalls at the apple logo boot screen.

I get the feeling my woes occurred when I inserted my drive's universal identifier after the device key string in the com.apple... Was I supposed to REPLACE the existing string (there was a realllly long string after the device key) or was I supposed to keep that intact?

But yea, I can't booooooot ):

uShak said...

I realized my mistake and didnt delete the string this time (I forgot to add uuid)

I reinstalled snowleo ontop of my damaged installation and then pretty much rebuilt the EFI again.

I am now reattempting the 10.6.2.

I EDITED the existing mach_kernal and added the _tea at the end.
HOPEFULLY that is right, because im currently installing 10.6.2 now.
please workkkk

oh and one more question:
I have "sliceVoodooHDA.kext" in my extensions. I removed that and reupdated with the modded one that allows the audio adjustment. but that causes a kernel panic. there is no previous VoodooHDA.kext in my folder to replace. any clue what im doing here? said...

After 10.6.2 installation, it just stalls at the apple logo, no visible kp, just stalls.
i tried booting from my install device, but it won't boot from there either.

LeMaurien19 said...

guys please don't confuse stuff.
1) meklort's patched chameleon (for auto kernel patching for Atom) goes with his version of SleepEnabler. (go to his site, he's also got the bin files for manual installation of his version of chameleon). You don't need any other kernel than the stock 10.6.2 kernel as it's patched by meklort's chameleon at start up.
2) Any other non-meklort version of chameleon; get tea's modded kernel for Atom (indicate where it is in the Boot plist) and get netkas' SleepEnabler for 10.6.2.

this post was written way before meklort's patched chameleon and so it's referring to no.2 (deprecated method)

Chuck said...

I had updated to 10.6.2 and Wireless was working fine. Well I couldn't seem to get the audio working so I reran the update script in the general_extensions. Now my wifi will not show up (shows no airport cards detected) no matter what I do. I've tried both the new driver provided here and the older driver. Any suggestions?

LeMaurien19 said...

^I only know as far as modified IO80211Family.kext (the one linked here) cause that solved the prob for me and so I stopped there.

Try booting first with -v flag (verbose mode). Check whether IO80211 is loaded.

Worst case scenario - maybe the pci connection got turned "off". I was only able to turn it on my Mini 311 via Windows.

Sean said...

My / wont let me put the Mach_Kernal_tea in it... I get a circle with a line through it every time I try. What can I do?

fuyichin said...

My update to 10.6.2 fail.
When booting, it says, "Unable to patch 64bit kernel. Please use arch=i386 to use a 10.6.2 or newer kernel. Can't find mach_kernel_tea." Even if I boot from my Installer DVD (usb HD), is not working now.

I have some problem with the update procedure:
1. I don't find com.apple.Boot.plist in my /SnowLeoHPmini_101709/bootplist_update folder.
I copy the com.apple.Boot.plist from Extra folder and made the modification.
2. the link new 10.6.2 SleepEnabler.kext from netkas. return error, so I download the SleepEnabler.kext from code.google.com/p/xnu-sleep-enabler/ (SleepEnabler.10.6.x.zip).

I found this "HP mini 1000 10.6.2 Auto EFI Setup". Is this EFI setup will patch the 10.6.2 system? But I experience "can not find Setup.pkg" error.

Kamagra Jelly said...

I am really good at messing things up, and am still really new with hackintoshing so I prefer to give this info to the friend that helped put before I ruin the computer.