Much to my surprise, I discovered that my motherboard, ASUS M2NPV-VM, is on the OSx86 project’s HCL for running Mac OS X 10.4.8, meaning I’ve been able to run Mac OS X on my computer! Even more surprising, I have discovered that it also runs on the 4-year-old Compaq Evo N610c that I use!
Now, I’ll spoil the ending right now by stating that I am not switching to Mac OS X. I have every intention of keeping Ubuntu as my primary OS. I :heart: GNOME!
I initially started by attempting to install OS X in VMware, but that didn’t work properly, as I couldn’t get it to boot. Next thing I tried was burning the .iso to a CD and booting from there, but I couldn’t get it to boot all the way — I kept getting stuck about halfway when it was “Still waiting for root device”.
Well, it turns out that “Still waiting for root device” is a common problem, but there wasn’t all that much guidance on what to do. I saw that a lot of the people that were getting the problem had SATA hardware, so that was probably the common denominator. I have an IDE hard drive, but a SATA DVD/CD drive. Dad has a SATA → USB converter kit, so I tried to take SATA out of the equation by hooking up my optical drive via USB and booting the OS X DVD from there, but I made even less progress, when the bootloader complained about not being able to find some “plist” file.
Then, it struck me. I had read something about the optical drive and hard drive needing to be on the same IDE channel. Having an IDE hard drive and a SATA optical drive was a bit of a problem, but luckily I had a partly broken IDE DVD burner in the chest of drawers. I connected this to the same IDE channel that my hard drive was on, and as luck would have it, it booted up successfully!
From then on, it was pretty much hunky-dory. The setup loaded (with compositing and shadows and stuff even in the installer!), I ran Disk Utility, formatted a logical partition I had set aside as HFS+, and proceeded to install OS X. From memory, I had read that OS X will not boot off a logical partition, but I am running my installation from one right now, and it is working fine. After installation, I booted into Ubuntu (as OS X didn’t install a bootloader), and copied OS X’s /usr/standalone/i386/chain0 file to the /boot directory on Ubuntu, and added the following to /boot/grub/menu.lst so I could dual-boot Ubuntu and Mac OS X:
title Mac OS X rootnoverify (hd0,0) makeactive chainloader /boot/chain0
The initial bootup gave me pretty good impressions, but to my dismay, neither my NVIDIA nForce networking nor the 3Com networking card I had installed were working. So, I only had FireWire-based networking. I connected my FireWire to the laptop (in Ubuntu, you can type sudo modprobe eth1394 to enable FireWire-based networking), and set up a NAT, which got my OS X installation onto the Internet pretty easily.
To my surprise, last Friday, I happened to run cat /proc/cpuinfo on the Compaq Evo N610c laptop that I use, and discovered that the Pentium 4 M processor that it uses supports SSE2, one of the requirements to run OS X. So, I stuck in the installation disc, and it actually booted up fine, with none of the jurgle I needed to get it running on my desktop computer. I couldn’t actually install the operating system, because the DVD actually got scratched, because, as I mentioned before, I previously used the same DVD in my faulty DVD drive. The drive was faulty because it made crunching sounds, and actually etched some grooves into the DVD. I was amazed it booted at all.
Well, by this time, after having done one installation already, I had realised that installation via the disc was actually unnecessary. I could connect the laptop hard drive to my computer via USB, and install Mac OS X on the drive using VMware. Getting it to boot via VMware was a bit of work. First, I had to connect grab an ISO of the OS X installation disc, and connect it as a virtual IDE drive on channel 1:0. Then, I had to use qemu-img to convert it to a .vmdk file, and I also connected that as a hard drive on IDE channel 0:1. Yes, the disc was connected on both 1:0 and 0:1. Believe me, you need to do it that way.
The next challenge was getting the laptop’s hard drive that was connected via USB onto the VM’s virtual IDE 0:0. I first told VMware to “Use a physical disk”, and selected /dev/sda (what the USB drive came up as) as the drive to use. Because the USB drive appeared as /dev/sda on my computer, VMware wanted to treat it like it was a SCSI drive, which OS X (or at least OSx86) doesn’t support. So, I went and edited the .vmdk file that VMware created (.vmdk files linked to physical disks are editable with a text editor) and changed where it had “buslogic” written to “ide” (easy as :%s/buslogic/ide in vim). I then edited the .vmx file, and changed all instances of scsi0:0 to ide0:0.
After that, installation went smoothly. Upon booting up for the first time, after putting the hard drive back into the laptop, when it got to the point when it was about to show the GUI, the LCD screen developed horizontal stripes, and the image slowly faded out, to the point where the screen was all white, with black stripes. I removed the Natit.kext file from /System/Library/Extensions/ (the ATI driver) and it booted fine after that. Performance was not as good as on my desktop computer, mainly because the eye candy is being software rendered, as the ATI driver doesn’t work. Also, the in-built networking and PCMCIA slots don’t work.
However, I could get networking working properly without the need for FireWire/NAT jurgle by using my Gigabyte GN-WB01GS wireless USB dongle. Firstly, I downloaded the RT73 driver for OS X from Ralink’s OS X driver page. The driver didn’t initially recognise my USB dongle (“No Device!”), so I had a little hacking to do.
From the forums, I have learned that drivers (called kernel extensions) store the information about what sort of hardware they are activated for in a file called Info.plist. By editing this file, you can enable the driver for different pieces of hardware. I opened up the Info.plist file for RT73 which was stored at /System/Library/Extensions/RT73USBWirelessDriver.kext/Contents/Info.plist. By previously opening the System Profiler application and finding my USB dongle in the list, I knew that the hexadecimal Product ID for my dongle was 0×8008, and the Vendor ID was 0×1044. The Info.plist file stores these numbers as decimal, not hexadecimal, so the aforementioned IDs are 32776 and 4164, respectively.
So, inserted the following chunk into my Info.plist file:
<key>Jeremy</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.Ralink.driver.RT73</string>
<key>IOClass</key>
<string>RT2573USBWirelessDriver</string>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>bcdDevice</key>
<integer>1</integer>
<key>idProduct</key>
<integer>32776</integer>
<key>idVendor</key>
<integer>4164</integer>
</dict>
…which I had modified from one of the existing chunks in the file to include my dongle’s Product and Vendor IDs. Upon rebooting and inserting my wireless USB dongle, the Ralink wireless utility popped up and I got onto the network!
Well, as you can see, there has been a lot of hacking getting all this all going, but I have to say that it was worth it. It’s nice to be able to play with OS X and get a real feel for the user interface. It’s one thing to see screenshots and videos, but it’s completely different to experience it for yourself.

