Here's the general outline:
- Make space for Windows
- Install Windows
- Mount the
/boot directory or partition
- Install the bootloader (GRUB)
Step Zero – Backup your important data before doing anything
Step One – Make space for Windows
Open up GParted, and make sure that you have at least 20 GB available for Windows 7, either as a partition you can remove, or as unpartitioned space. If it's a partition, remove it from GRUB to make sure it doesn't break your Ubuntu install — GParted will complain if anything bad is about to happen.
Make note of current
/boot device. If that doesn't show up there, make note of the
/ device. The device name is something like
Step Two – Install Windows
Install Windows 7 into the space you just made
Step Three – Mount
Note: Instead of mounting the boot directory or partition from the installation in the live media environment you can specify the path with the
--boot-directory parameter for grub-install, more information on the manpage.
Load up from your Ubuntu live CD, and then run these commands.
If you DO NOT have a separate
sudo mount /dev/DEVICENAME_FROM_STEP_ONE /mnt
sudo rm -rf /boot # Careful here, make sure YOU ARE USING THE LIVE CD. I tried it, it works.
sudo ln -s /mnt/boot /boot
If you have a SEPARATE
sudo mount /dev/DEVICENAME_FROM_STEP_ONE /boot
Step Four – Install the bootloader
Note: These instructions were initially written for Windows 7 and BIOS booting computers. If you have UEFI and Windows 8 and above you probably need to replace
sudo apt-get install grub-pc.
Then continue with those commands:
sudo apt-get update
sudo apt-get install grub-pc
sudo grub-install /dev/sda # NOTE THAT THERE IS NO DIGIT
sudo umount /boot
And restart. It should work fine and boot both systems.