Metathought
Installing XP on a MacBook Pro with Boot Camp
Posted by Temporal at 2007/12/15 23:30:03 PST
Edited at 2008/06/29 19:13:31 PDT

I bought a MacBook Pro. It's awesome, of course. Leopard has quite a few improvements over Tiger, and generally seems smoother than ever. I love the way Apple simply refuses to do a half-assed job on anything.

But, one of the reasons I bought this laptop was to play games at LAN parties. And for that, I need XP. So, I went and picked up a new copy -- making sure to stay away from the Vista boxes on the top shelf -- and fired up Boot Camp. The processes turned out to be somewhat more difficult than I had expected, and took many hours to get right. I ran into several problems that either took a lot of Googling to solve, or weren't even answered on the internet at all. Eventually I got everything running, though, and I've decided to post what I've learned in the hopes that it will be useful to others.

Problems and Solutions

Problem: The XP installer loads the initial set of drivers then crashes with a STOP error (BSOD) complaining about "session3_initialization_failed".
Solution: Apparently the MacBook optical drive does not like something about the manufacturing of the XP Pro install CD. If you copy the CD to a CDR (using a different machine that doesn't have this problem) then try to install from the CDR, the problem will go away.

Problem: You are installing XP upgrade, and when it gets to the step where it needs to verify that you own a previous version of Windows, there is no way to eject the CD in order to insert the old copy.
Solution: This is why the Boot Camp docs claim you must use the full version, not an upgrade. However, this appears to be a technical issue only. You can solve it by burning a new copy of the XP CD which also contains key files from a previous version of Windows, like Windows 98. See the full description below.

Problem: The Windows installation has failed, but the system continues to boot from the CD instead of returning to OSX, and there appears to be no way to remove the CD since the eject button does not work during the Windows installer.
Solution: Start the machine with the eject button held down. Continue holding until the disc pops out. The machine will boot into OSX.

Problem: When booting a custom XP CD image, you get the error "CDBOOT: Couldn't find NTLDR".
Solution: Your XP CD image had file version numbers enabled. Burn a new copy of the CD and make sure to disable file version numbers (use -omit-version-number for mkisofs).

Problem: While installing from a custom XP CD image, the installer reports "Unable to copy the following file: cyclad-z.inf".
Solution: Your XP CD image was created without Joliet extensions enabled. Burn a new copy of the CD and make sure to enable Joliet (use -J for mkisofs).

Problem: OSX sets the system clock to UTC, but XP expects it to be local time. So, every time I switch, the clock is wrong. What do I do?
Solution: XP secretly supports keeping the system clock in UTC. You can enable this via the registry: Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation, add a DWORD value called "RealTimeIsUniversal", and set it to 1. Reboot and enjoy. WARNING: Unfortunately this feature seems quite buggy.

Making XP Upgrade work with Boot Camp

I made the mistake of buying an "Upgrade" version of XP instead of a full install. I thought this would be fine because I've always used upgrade versions before. The "upgrade" version is actually identical to the full version with two exceptions:

  • It costs less.

  • The installer wants to see proof that you own a previous version of Windows before you install. It doesn't actually use this previous version; it just wants to see that you have it.

The Boot Camp documentation explicitly says that you must use a full install of XP, not an upgrade. Needless to say, I was not aware of this when I bought my copy. However, it appears that this limitation exists only because of a technicality: there is no way to eject the CD while the Windows installer is running, and thus no way to insert your previous version to prove that you own it. Legally, I don't believe there is any issue with installing an "upgrade" on a new machine, provided that you are not still running the old version of Windows on some other machine.

The trick to defeating this problem is to create an XP install CD that also includes files from a previous version of Windows. Then, when the XP installer asks you to insert the disc for the old version, you don't have to swap disks; you just let it scan the one that's already in the drive.

In my case, I used a Windows 98 CD. Who doesn't have five copies of Windows 98 lying around, really?

To create the disk image and burn it, I used mkisofs and cdrecord, a pair of open source command-line tools available for almost every OS in existence. On Windows, you can run them under Cygwin. These are some of the most user-unfriendly tools you will ever encounter, and I do NOT recommend trying to use them if you are not familiar with the unix command-line. However, they are the only programs I know of that can get the job done without attempting to charge you money and infest your system with various adware and unwanted extra features.

If you don't want to use mkisofs and cdrecord, I suggest looking up guides on "slipstreaming" an XP install and following the CD burning directions found in one of them. This guide in particular covers Nero and Easy CD Creator.

OK, here's what to do:

  • Create a new directory on your hard drive and copy the complete contents of your Windows XP CD into it.

  • Use a program like Iso Buster or BBIE to extract the boot image from the XP CD. Place this in the same directory with the CD contents and name the file "boot.img". (Sadly, I was not able to find an open source or cross-platform utility for extracting boot images, but BBIE is free, at least.)

  • Also copy the directories WIN98 and DRIVERS from your Windows 98 CD into the same directory where you put the XP CD contents.

  • You are going to need to burn all this to a single CD or DVD. If you are using a CD, all these files may be too big to fit. You can prune some of the Windows 98 files as you do not need all of them for the XP installer to verify it. You should be able to get things small enough by deleting the various subdirectories within WIN98 and DRIVERS. If not, remove a few cabs and hope for the best.

  • Use mkisofs to create a disk image of your custom XP CD. Here is the complete command-line:

    mkisofs -b boot.img -no-emul-boot -J -boot-load-seg 0x07C0 -boot-load-size 4 \
        -D -omit-version-number -o xp.iso -V $VOLUME_ID $LOCATION_OF_FILES

    Replace "$VOLUME_ID" with the volume ID of your XP CD. This is the name of the CD as it appears in "My Computer" and seems to be an incomprehensible string of capital letters like "XYZABCD_EN". I'm not sure if the volume ID differs from copy to copy of XP, but to be safe I'm not revealing my own volume ID here. Replace "$LOCATION_OF_FILES" with the path to the directory where you copied all your files above.

  • Determine the device ID of your CD drive. Do:

    cdrecord scanbus

    and look for your CD writer. In my case, it was device 1,1,0.

  • Pop in a blank CD and burn it:

    cdrecord dev=1,1,0 -v image3.iso

    Replace "1,1,0" with your device number as determined in the previous step.

  • Now follow the Boot Camp instructions as normal with your new CD.

© Copyright 2005-2008 Kenton Varda. This is my personal weblog. The views expressed on these pages are mine alone and not those of my employer.
Powered by Io Community Manager, Evlan, and FreeBSD