James Bannan29 January 2007474 days ago.
So you want to install Linux and Vista on the same drive? This UPDATED dual booting tutorial shows you how to do it even if Vista SP1 scorches your bootloader.

Updated 22 April 2008 to use Ubuntu 8.04 rather than 7.04
Scenario:You have Linux already installed but want to dual boot it with Vista on the same hard drive.
Summary of tutorial: We'll dual-boot Ubuntu 8.04 with Vista. With Ubuntu already installed and owning the entire drive, we'll use the Ubuntu Live CD to shrink the Linux partition to create space for the Vista install.
Vista's MBR will overwrite GRUB during installation, so we'll go through two scenarios. First - reinstall GRUB to the Linux partition and use EasyBCD to modify the Vista bootloader so that it will boot Ubuntu. Second, reinstall GRUB to the MBR and configure it boot both Ubuntu and Vista
This tutorial has been tested on a VMWare Workstation 6 machine and an ASUS P5AD2-based Intel system with 2GB RAM and an 80GB Seagate SATA drive.
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.
Make space for Vista
Now we need to create space on the hard drive for Vista, 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 Vista partition. Make sure that the free space is sufficient to hold Vista (at least 6GB - preferably 10GB). Then click "Resize/Move" to confirm the selection, and "Apply" back in the main screen to carry out the pending change.
Install Vista

Restart the system with the Vista DVD, and select "Press any key to boot from CD or DVD" to commence the installation.
Select your installation language and then "Install now".

When prompted for an installation type, select "Custom" and click Next.
On the "Where do you want to install Windows?" page, there will be an option like "Disk 0 Unallocated Space". This is the space we created with GNOME Partition Editor.

At this point, Vista can't install to this space, so we need to make a new partition and mark it active so that Vista can use it.
Press SHIFT + F10 to launch a command window, then type in DISKPART and press Enter.

Select the active disk by typing in "SELECT DISK 0".
List the partitions by typing in "LIST PARTITION". The newly-created NTFS partition is PARTITION 3.
Select this partition by typing in "SELECT PARTITION 3", and then type in "ACTIVE".
This marks the partition as active. Then type "EXIT" and "EXIT" again to go back to the installation screen. Select the NTFS partition and click Next, and Vista will install.
Once it's done, Vista will boot but there's no sign of Ubuntu, so we need to set up dualbooting.
Dualboot Option 1 - Vista bootloader

Now we need the latest version of EasyBCD by Neosmart Technologies - download it here. Install the application and launch it.

To enable access to the Linux partition, the best option is to install NeoGrub. Go to "Add/Remove Entries", go the NeoGrub tab and select "Install NeoGrub". This adds the "NeoGrub Bootloader" option to the Vista bootloader.

Once that's done, choose Configure - this launches the NeoGrub menu.lst file, location at C:\NST\menu.lst. Use Notepad or Wordpad to open the file, and then paste in the boot entries from the backup copy of MENU.LST you made earlier. These entries occur between "## ## End Default Options ##" and "### END DEBIAN AUTOMATIC KERNELS LIST". Save and exit, then reboot the machine.
NOTE - if you didn't make a backup of MENU.LST or you did but it's on the Ubuntu EXT3 partition, don't despair. Download and install EXT2IFS, which allows you to mount EXT2/EXT3 partitions within WIndows. This will let you browse the contents of the EXT3 partition and extract the MENU.LST file. Word of warning though - either enable the read-only option during installation OR copy the file to the Vista filesystem rather than opening it directly from the EXT3 partition. EXT2IFS bypasses the Linux permissions so there's a chance of damaging the filesystem.

The system will come up with two boot options. Select "NeoGrub Bootloader" and then the Linux boot options will load. Choose the relevant option and the system boot into Ubuntu.
Dualboot Option 2 - GRUB bootloader
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)
- quit
- exit

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 Vista
root (hd0,1)
makeactive
chainloader +1
Save the file and reboot. When the GRUB loader launches hit ESC for the boot menu. Windows Vista is the last option - select it and Vista 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 3to something more appropriate.