HowTo: Multiple, Independent WinXP Installs on the Same HardDrive via Grub
Why would someone want multiple, independent Windows XP installations? Well in my case it was keeping one install neat and tidy, and the other for app testing and gaming i.e. keeping nasty DRMs like Starforce off at least one of my WinXP installs.
WindowsXP requires installation to a primary partition, so multiple primary partitions are need for a multi-WinXP system. One hard drive can have a maximum of four primary parititions, or a maximum of three with the presence of one extended partition. The four primary partitions would be labled hda1, hda2, hda3, and hda4. The first logical partition of an extended drive is labeled hda5. Note: The maximum number of XP installs on a single hard drive using this method is three, do to the necessary Linux install. I recommend cfdisk for setting up partitions.
And example setup for a dual WinXP setup:
hda1 Boot Primary NTFS [^A] 15726.74
hda2 Primary NTFS [^B] 22002.63
hda5 Logical Linux swap 1200.90
hda6 Logical Linux ReiserFS 8496.72
Pri/Log Free Space
Install WinXP to hda1
Install WinXP to hda1 as normal.
Now install your distro of choice, in this case VectorLinux 5.1.1SOHO to hda6, with Grub v.95 installed via GSlapt from a Slackware10.1 source.
In Linux, open up a terminal as root and type:
# hide (hd0,0)
You can verify hda1 (hda0,0 in grub notation) is now hidden by typing # fdisk -l or going into cfdisk and checking for a change from NTFS to Hidden HPFS/NTFS.
Install WinXP to hda2
Reboot the machine and boot from the WinXP CD to install WinXP, but this time to hda3. The installer will ignore hda1 as an unknown filesystem and default to hda2 as its C:\.
Reboot after the hda2 WinXP installation, and boot up using your VectorLinux CD (or your distro of choice) to boot to your Linux install. Now it is time to configure Grub by editing your /boot/grub/menu.lst file. You must hide the two WinXP installs from each other every time you boot to either of them. This is very simple using Grubs hide and unhide command.
An example menu.lst, using the same dual WinXP setup:
# Start GRUB global section
title WindowsXP (on /dev/hda1)
title WinTesting (on /dev/hda2)
title VectorLinux (on /dev/hda6)
kernel /boot/vmlinuz root=/dev/hda6 ro vga=773
Hope this is of help to some. I posted it on the Vector forums, but thought the larger audience here could potentially benefit as well. A big thanks to saikee of JustLinux for his input. Would probably still be googling for a solution without his help. Thanks! I'm still trying to figure a way to get Win98SE on this NForce4 machine. If/when I do, I'll be sure to make another HowTo for it too. :)
VL 5.1.1 SOHO, Asus A8N5X, 3500+ VeniceE4, 2x512MB CorsairXMS, 120GB, 320GB