One more Hacintosh post before I resume normal programming here. As I described in my E520 guide, I relied heavily upon work done by others both in the way of instructions and files created and collected. Having successfully used these methods and tools, I wanted to understand better what it takes to do a setup without having these already built for you. My sister had a computer she wasn’t using any more and had given it to me to rebuild to be handed off to our aunt who needed an upgrade. But my aunt hadn’t been able to take the new computer so I figured I’d use the computer as my test bench. Below is what it took to get a Dell Dimension 4700 setup to run MacOS Snow Leopard and what I learned on the way.
Just for kicks, I started off by using the E520 boot CD and followed my E520 guide. The retail install DVD only made it as far as “starting Darwin” before it rebooted the computer – no surprise considering that the E520 boot CD was setup special for an E520. But the question remained – how was it setup special, anyway? The first thing I did was to get a copy of EvOSX86’s DSDTSE tool for Windows. This amazing tool produces a file containing DSDT description of the system. You can get DSDTSE for either Windows or MacOS but since the computer was already running windows, and since the reason I needed the DSDT file was to setup MacOS, it’s great that you can get DSDTSE for Windows. Next, I got a copy of Empire’s Legacy bootCD (near the bottom of the post, the download that includes the note about working with Pentium D). The Legacy version here was important because the kernel in the installer wouldn’t boot up on this computer due to incompatible CPU hardware. The Legacy version takes care of that with a special kernel loaded on bootup and by using ISOLINUX as a prebooter. Also included in the Legacy boot CD is a healthy list of kexts that cover various issues like a PATA CD drive (as the 4700 has) and special kexts for working with the special kernel. The kexts and the kernel and the DSDT are all wrapped up into the Preboot drive image.
I created my own version of the bootCD by merging in my modified Preboot.dmg with the Empire Legacy bootCD’s ISOLINUX. If all this sounds hard, it was. And it runs sort of contradictory to my original plan which was to learn what was done for my E520. But I kept pushing forward figuring that if I could figure things out for this computer, I could do it for my E520 or a newer computer whenever I decided to move my Hacintosh to newer hardware. I got to be good friends with the hdiutil on my working Mac (further proving that to do this kind of setup, you really need to have a working Mac in addition to the computer that is going to become a Mac). hdiutil is the command line disk image tool that can create HFS drive images or hybrid (HFS, Joliet, etc.) ISO files. Mastering that tool proved to be key to getting the disk images created correctly and being able to quickly repeat for the trial and error that it took to get all the pieces correct.
In the process, I was able to upgrade the Empire Legacy boot system with the latest Chameleon boot files (and images). I was also fortunate to have used CPUID (don’t download the installer which includes Ask toolbar!; download the zip instead) on the Dell Dimension 4700 while it still had Windows XP running on it and I used the “-html=” command line flag to produce an HTML file which I moved off that system so that I could refer back later. And that helped me build an smbios.plist file which Chameleon later used.
The install was slower than on the E520 but more important was the big “Install Failed” accompanied with an exclamation point in a yellow triangle. I worked on that for a while but accidentally discovered that the computer would still boot and then continue with the install process. So it just slightly shifts the order of the E520 install. And it doesn’t ask for your time zone this way – easy to set yourself later.
The CPUID html file was also helpful in determining the hardware IDs for the various devices that needed special kexts. The built in audio, graphics, and ethernet all didn’t work with the stock install. They all needed to be supplemented with kexts to get working. For the audio, I went with the AC97 kext from kexts.com. I only needed the kext, not the preference pane. At first, it didn’t seem to work because I was using the audio out (green) jack on the back of the computer and the one on the front. It turned out that for some reason, the audio had been mapped to the black jack instead – a mistake in the kext, I think, but not worthy of worrying about. The ethernet was pretty easy using the ID from CPUID, I found that it was an 8255 which meant the 8255 kext from kexts.com.
Like with the E520, the video was more complicated. I was able to determine that the chipset was an Intel 915 and that the GMA950 driver should work. And in fact, the GMA915 driver I got from kexts.com did work initially. (Although I’m not crazy about the installer process so I downloaded the pkg and extracted the two kexts from inside the archive in the pkg and just installed the kexts along with the audio and network.) But, again like the E520, it broke after I ran software update to install 10.6.2. Apparently a similar story to the Nvidia support, support for older graphics was removed from the 10.6.2 stock kexts upon which the GMA915 relied. This time, however, changing to a 32 bit boot didn’t improve things and I suspect this computer, due to the CPU limitations, is always booting in 32 bit mode, anyway. And I wasn’t going to get a graphics card just for this test, so I went with the major cheat of just copying the 10.6.0 drivers and reapplying them after upgrading to 10.6.2. That seemed to work fine. So it ended up being a lot of kexts to get it working, but that’s okay for this not-so-new computer and especially considering the test nature of this exercise. It is pretty cool that QE and CI actually work on this old video card. (Ripples visible when adding a widget to the dashboard.)
Back to my E520 guide, I modified Dr. Hurt’s Post Install tool (which installs Chameleon) to include the kexts, DSDT, and smbios for my 4700. These kexts are the same ones from the Legacy boot CD and the DSDT and smbios are the same as used in the Preboot image too. The com.apple.Boot.plist is modified only slightly from the Preboot one to remove the “-v” kernel flag and add in Graphics Mode (for a prettier boot screen) and a timeout flag (so you don’t have to babysit every boot).
This all mostly worked. The only snag was removing the “-v” actually caused it to not boot. Apparently, the verbose flag was making the boot up process run slow enough that the SATA controller was ready but without the flag, the SATA controller wasn’t ready when the computer booted and I got the dreaded “still waiting for root device” error. Fortunately, this fix is well known now and I followed TheKing’s instructions for modifying my DSDT. That fixed my boot up problem and the system seems pretty stable now. (Only one crash so far – a kernel panic when setting the time zone.) Even the PS/2 devices seem to work. (I did the setup using USB keyboard and mouse but dug up PS/2 keyboard and mouse after the install was done and all seems good.)
So looking back, the general steps for my setup were:
- On working WinXP, run DSDTSE to extract DSDT file; run CPUID and save html result; save both files off the computer
- Modify DSDT for slow sata fix; create smbios file from CPUID; modify com.apple.Boot.plist to use both; rollup DSDT, smbios, com.apple.Boot.plist, mach_kernel.test7, and all the required kexts into a Preboot drive image
- Modify Dr. Hurt’s Post Install tool to add in the contents of Preboot and minor tweaks to com.apple.Boot.plist
- Create ISO of the whole shebang being sure to use the eltorito boot flag on the ISOLINUX.bin – this is the Boot CD for your computer
- Use Boot CD to boot computer; remove when you get to boot selection screen; insert retail install DVD; do Disk Utility to format drive for HFS+ (and wipe out WinXP); proceed with retail install
- When “Install Failed” comes up, ignore it and reboot; be sure to reboot from the bootCD – remove the retail install DVD (which isn’t needed any more); finish retail install with keyboard and account stuff
- On the BootCD, run the Post Install tool in the Post Install folder – it copies over Chameleon, kexts, DSDT, smbios, and Boot.plist; run the Kext Utility to install kexts in the S/L/E subfolder of the Post Install folder.
- Reboot with no CDs in the drive – it should now be able to boot on its own
- Do the 10.6.2 Upgrade using Software Update and when that completes, reinstall the video kexts, if necessary
If anyone wants more details or any of my files, please write in the comments. Also I’ve got a script I created to automatically create the drive image and iso files which I can add to this post if anyone things it would be useful.
EDIT: I’ve gotten a couple of requests for the files I used in this setup, so here’s the ISO I created during this process. It should contain everything you need to do the setup with the 4700 I had. (Of course, 4700s vary in hardware so expect something not to match up.) BootCD4700.iso