How can I install Windows after I've installed Ubuntu?

Here's the general outline:

  1. Make space for Windows
  2. Install Windows
  3. Mount the /boot directory or partition
  4. 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 sda5.

Step Two – Install Windows

Install Windows 7 into the space you just made

Step Three – Mount /boot

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 /boot partition:

    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 /boot partition:

    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 grub-pc with grub-efi-amd64 in 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.


Installing Windows after Ubuntu is not the recommended process for a dual boot Windows and Ubuntu system, but it is possible.

  • First, you have to make sure that the 50GB free space is available, resizing your Ubuntu by using gParted if necessary.
  • Also use gParted or Disk Utility to format the the free space as NTFS, this prevents Windows 7 from creating an additional boot partition in addition to the "C" drive.
  • Next, boot to the Windows DVD installer and install Windows on the NTFS partition. Upon reboot, Windows will automatically boot and you won't see the grub menu allowing you to choose Ubuntu, because the Windows bootloader has replaced grub.

  • Now, what you need to do is run Ubuntu from LiveCD or LiveUSB and install boot-repair.

  • To install boot-repair, open up a terminal by pressing Ctrl+Alt+T and type the following commands:

    sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
    sudo apt-get install -y boot-repair && boot-repair
    
  • After installation, boot-repair will automatically launch, if is doesn't, launch it via Dash.

  • Make sure to select recommended repair to repair grub. Reboot and that's it.

  • You should now have a Grub menu on boot, allowing you to choose from Ubuntu, memtest, and Windows 7

UEFI only!

This answer covers UEFI-only, and is meant to be a bit of a more modern answer as UEFI has succeeded the ancient BIOS. Also, there are some edits here to fit the fact it's answering a "how I do this" rather than a "can I do this" type of question.


To install Windows alongside Ubuntu, you just do the following:

  1. Insert Windows 10 USB
  2. Create a partition/volume on the drive to install Windows 10 on alongside Ubuntu (it'll create more than one partition, that's normal; also make sure you have space for Windows 10 on your drive, you might need to shrink Ubuntu)
  3. Install the Windows 10.

That's it!

Note: when making sure things are ready for your dual boot, check if Ubuntu is installed in the GPT partition table! While 99% of the time you will be using GPT if you're planning to do this, it is possible to install Ubuntu's UEFI on MBR but Windows 10 does not support that strange use-case. In that situation, convert to GPT if possible. If not, backup and reinstall, and I'd recommend that as it'll be easier.