My second attempt at a hackintosh: HP NC4200 laptop

Miscellaneous | Tuesday December 21 2010 16:38 | Comments (0)

With the knowledge I gained from putting Mac OSX Snow Leopard on my MSI K9AGM3/AMD Athlon64 X2, I decided to put it on my laptop as well, so I can bring it into college with me and work from there.

The specs of my laptop are as follows:

  • HP NC4200
  • Intel Centrino 1.8Ghz
  • Intel 900 series motherboard (I think)
  • 1GB RAM
  • Intel 2200bg wireless (iwi2200)
  • Intel VGA 915GM GMA 900 (could also be GMA950, not sure)
  • AC97 audio
  • Broadcom BCM5751M Eternet

I had originally tried to copy exactly the method for my first Hackintosh, but this gave me problems. On every boot, I got “Waiting for DSMOS“. I looked up some possible fixes, including replacing FakeSMC.kext and disabler.kext but nothing I seemed to do would work(EDIT: I found a fix for this. Don’t use mach_kernel!!)

I then looked into getting a different distribution of Mac Snow Leopard. The first one I came across was called iPortable OSX86. This is a USB loading version promising to work out of the box on any Intel machine, no questions asked! Quite the promise, and I was a bit skeptical, but I gave it a go anyway. I used Mac Leopard from VMWare to prepare the USB stick, and to my surpise…Kernel panic on first boot! This distro is actually designed to boot off a USB stick, not to install from USB. On first boot, it takes you through the process of setting up a new user account, as a normal Mac would, after a fresh install, and then it loads up the desktop directly off the USB stick!!! So you can go to any Intel PC, stick in the USB drive and you’ll have your personal Snow Leopard desktop in a minute or so!

So, intially I was getting a kernel panic on boot relating to ElliottForceLegacyRTC.kext. Simply removing this solved the kernel panic and then I could load up Snow Leopard without any problems!! Success! Almost. There was a few problems, mainly that there was no system clock, or Real-time Clock (RTC – Remember the kext I removed?). Also, when I tried to install anything, it would take maybe 5 attempts for the install to go through. It would either hang on “examining additional disks” or hang on “Preparing for installation“. Another problem was that it would not unmount drives a lot of the time, which is possibly related to the install issues.

Anyway, what I decided to do was, from the USB sticks desktop, prepare my laptop hard drive as if it was a USB stick that I was preparing for iPortable OSX86. So in other words, I was installing a portable version on a non-portable hard drive….makes sense?? 🙂

So I formatted the hard drive, making sure to check the MBR option. Used CopyCatX (included with iPortable OSX86) to apply the included image to the hard-drive and also used iPortable BootFix to make the drive bootable. This gave me the same ElliotForceLEgacyRTC.kext kernel panic so I just booted up into Windows 7 (Oh ye, did I neglect to mention I was dual-booting?) and removed the kext from System/Library/Extensions. I should point out, you will need MacDrive8 to access Mac OSX drives from Windows.

So, now I had a laptop dual-booting with Windows7 and Mac Snow Leopard. The only problem was I still had the above mentioned issues on the Mac. Not to mention no sound, video acceleration and no trackpad clicking (you know you tap the trackpad and it counts as a left-click?). I solved the audio problems with the AppleAC97Audio.kext, which can be found easily enough. I also enabled graphics acceleration (QE/CI) with these GMA900 kexts. The main problem I’m worried about is getting the RTC working. If I manually set the clock, it resets the CMOS so next time I boot into Windows, the clock is also reset. Its a bit of a pain, especially since if your clock is set before the date Snow Leopard was released, it warns you that Applications will behave erratically!

For fixing the RTC issues, apparently you need to patch your DSDT. This basically extracts stuff from your motherboard and changes it to suit the Mac. There is a DSDT patches that comes with iPortable, that I used to generate a dsdt.aml file, which is supposed to fix everything! I tried this but I couldnt get it working so I’m still stuck with no clock, and that issue with installing software. Also, I have a hunch that using this dsdt.aml file somehow helped me get QE/CI working, but I’m not sure.

For my wireless, apparently there’s no support for iwi2200, but luckily I had a USB wifi card with the RTL8187 chipset. This does come with manufacturer support so works perfect with the installer that you can get from their website. I never did manage to get my onboard (BCM5751M) ethernet card working.

So, as it stands, I have Snow Leopard booting fine with the chocolate_kernel (one of 5 included with iPortable OSX86), I have audio, wireless, QE\CI,no clock (RTC) and no ethernet. I also managed to install the latest iPhone SDK, after about 10 attempts and it runs and compiles seemingly fine. I was getting a problem when trying to load Interface Builder though. It just used to hang on load, with its icon jumping around in the Dock. This resolved itself after I installed the proper kexts for my graphics card, and enabled QE/CI. I have no idea if they are related or not, since I don’t have Quartz enabled on my other hackintosh and Interface Builder works fine on that!

I should also point out another thing. I kept getting a Kernel Panic every time I went into System Preferences. During one such Kernel panic, I managed to corrupt my boot sector and succumbed to the dreaded “Boot0: Done” error. For this, I had to eventually switch the active partition to the Windows “System Reserved” partition, and edit the Windows Boot menu using BCD-Edit. The bootloader that came with iPortable just died so was unusable. When you use BCDEdit in Windows, it uses Chameleon bootloader, which I was able to boot the mach_kernel with. However, since that causes a “Waiting for DSMOS” error, I had to boot from that USB stick, run OSX86Tools, click “Install Kernel”, select the “Chocolate_kernel” and install that. OSX86Tools just renames the kernel to mach_kernel, so now I have chocolate_kernel just renamed to mach_kernel and it works fine now. 😀

No Comments »

No comments yet.

RSS feed. TrackBack URI

Leave a comment