Sunday, January 29, 2006

Dual-Booting Windows XP on a Macintel

Dual-Booting Windows XP on a Macintel
The Problems

  • Macintosh uses a different MBR
  • MacBooks use EFI, XP x86 uses BIOS
  • The modified Darwin Bootloader is made for EFI w/ EFI supporting operating systems

OK… So step by step.
Where is the BIOS used? For what? How?
The OS sends low-level calls to the BIOS that tell it exactly how to deal with the hardware. Now I don’t have the Windows XP source code at hand.. so all I can tell you for a fact is that NTLDR uses it to access the drive at first to boot Windows, and Windows uses it at *least* once more when it is mounting the drives.

The Required Programs and Stuff

  • Acronis Disk Director Bootable CD
  • Acronis True Image
  • Another computer with a clean install of XP. No programs installed at all.
  • A MacBook obviously!
  • A Windows Vista DVD (not for installation purposes!)
  • Vista boot files
  • bcdedit.exe
  • BCDedit restore file

Most of the problems can be theoretically quickly dealt with.

  1. Using the Bootable Acronis Disk Director CD on the MacBook, shrink the Mac partition.
  2. Create a new partition of type NTFS/HPFS in the remaining space.
  3. Setup a clean version of XP on a PC.
    Extract Boot.7z to the root drive of your XP installation.. So you have C:\Boot\
  4. Copy bcdedit.exe to the root drive of your XP installation. C:\BCDedit.exe
  5. Copy MacBook.bcd to the root drive of your XP installation
  6. Use sysprep to “reseal” your XP install and remove all hardware info from the setup (thanks Kristan for pointing that out!).
  7. Use Acronis TrueImage CD to make an image of your XP install.
  8. Use the bootable Acronis True Image CD to recreate the image on the partition you just made on your MacBook.
  9. Use the Bootable Vista DVD to boot on the MacBook.
  10. Select “Repair Startup” -> Next -> CMD -> Run too.
  11. Browse to drive C:\Boot (which is the partition you created on the MacBook and then extracted the Acronis TrueImage file to). (cd C:\boot)
  12. Run “fixntfs.exe -lh” without the quotes
  13. Browse back to drive C:\ (cd \)
  14. Run “bcdedit.exe /import MacBook.bcd” without the quotes
  15. Eject the CD and restart.
  16. In Mac now, hack the Darwin Bootloader to add another entry that chainloads Drive(0) Partition(2). With GRUB it would look something like this… I’m not sure if Darwin is the same, but this step is very simple, and has nothing to do with EFI.
    title Windows XP
    rootnoverify (hd0,1)
    chainloader +1
  17. Restart
  18. By selecting “Windows XP” on the Darwin Bootloader you should be chainloaded to the Vista bootloader, which should in turn boot the entry “NeoSmart Windows XP”
  19. If everything has gone well, XP will boot!!