1. Back up the GRUB boot menu
Regardless of which bootloader you end up using, it's a very good move to first back up the GRUB bootloader. It's easy to lose it and unless you know how to re-write it from scratch then you're generally facing a full reinstallation of Ubuntu.
Firstly, boot into Ubuntu and go to Applications --> Accessories --> Terminal. Then, type in sudo gedit /boot/grub/menu.lst.
This text file contains all the information GRUB uses to configure various boot options. Scroll down and the entries between "## ## End Default Options ##" and "### END DEBIAN AUTOMATIC KERNELS LIST" are the Linux boot options.
Make a backup of the file by going to File, Save As and selecting a different location. Or take a full copy of the contents and place it into a new text file. If you can, create the backup on a removable disk or networked location.
2. Make space For XP
Now we need to create space on the hard drive for XP, so this will involve resizing the main Ubuntu partition. Restart the system using the Ubuntu Live CD as this gives you access to GNOME Partition Editor. When the CD loads, select "Try Ubuntu without any change to your computer".
Once the CD loads, go to System, Administration, Partition Editor.
Right-click on the main data partition which has been formatted with ext3 - it should be /dev/sda1 - and select "Resize/Move"
Move the slider from the right to shrink the ext3 partition and create free space on the hard drive, which will take the NTFS XP partition. Make sure that the free space is sufficient to hold XP (at least 2GB - preferably 5GB). Then click "Resize/Move" to confirm the selection, and "Apply" back in the main screen to carry out the pending change.
3.Install Windows XP
Restart the system with the Windows XP CD and boot into the install program.
Unfortunately XP isn't so adaptive at handling existing partitions during installation. It detects the two Ubuntu partitions and marks then C: and E: accordingly. The remaining unpartitioned space which is available for XP will be marked as F:.
For the operating system and the vast majority of Windows applications which have properly-coded installation scripts, this is not a problem. Some older applications will assume that C: is the system partition and may bring up errors. There are ways of changing the drive letter assignation of the system partition, but in this scenario it's strongly discouraged.To insult to injury, XP detects the Linux partition as an active system partition and won't install unless it marks this partition as inactive.
4.Restore the GRUB boot loader
Once XP has been installed, it will boot happily into XP but there's no sign of Ubuntu. To reinstate GRUB as the system bootloader it needs to be reinstalled into the MBR.
Boot the system from the Ubuntu Live CD and select "Try Ubuntu without any change to your computer".
Open a Terminal session - Applications, Accessories, Terminal
To enter the GRUB configuration mode, type in "sudo grub" and press Enter. Then type in the following commands in sequence:
- root (hd0,0)
- setup (hd0)
Reboot the system. You'll get the GRUB bootloader but Vista won't be an option - we need to add this to the boot options.
Boot into Ubuntu and open up another Terminal session. Then, type in sudo gedit /boot/grub/menu.lst
Scroll down to the bottom of the file and type in the following text strings:
title Windows XP
Save the file and reboot. When the GRUB loader launches hit ESC for the boot menu. Windows XP is the last option - select it and XP will load.
If you want to make the GRUB menu always available, boot back into Ubuntu and edit the MENU.LST file. Find the hiddenmenu text string and change it to #hiddenmenu.
To increase the menu timeout, change the default timeout 3 to something more appropriate.