285

I have Ubuntu on my laptop. Now I want install Windows 7 in a dual-boot. How can I do this?

I can't lose my Ubuntu files, and I'm afraid that I might break GRUB.


Editor's note: Current readers should keep in mind that this is an older question, and the exact steps may have changed over time. Also, UEFI has primarily replaced BIOS in that time. As a result, many answers here may be out of date. Make sure you choose an answer appropriate to UEFI or BIOS depending on your system, and consider favoring more recent answers which may have more up-to-date information.

NotTheDr01ds
  • 17,888
Sk8er
  • 3,919
  • 9
    If you will only use Win 7 occasionally you can also try installing it as a guest or a virtual machine using virtualbox. See this question and it accepted answer including the comments for details on that option. – koushik Oct 12 '10 at 07:43
  • 7
    For convenience next time install Windows before Ubuntu to save the GRUB hassles. – Oxwivi Feb 19 '11 at 07:18
  • 1
    Note that computers with a pre-installed copy Windows 8 have a different partition table and use UEFI instead of BIOS. I should provide this as an answer? Scroll down. – LiveWireBT Aug 09 '14 at 18:53
  • 1
    This article describes in detail how to install windows 7/8/8.1/10 after installing ubuntu: http://www.linuxdeveloper.space/install-windows-after-linux/ – dinosaur Mar 28 '17 at 17:37
  • 3
    For people who have a desktop PC rather than a laptop: consider getting a separate hard drive for the second OS. Much less hassle that way. (All you need to do is change the boot order or disconnect the Ubuntu drive before installing Windows, then change it back and just run update-grub) – Disenchanted Lurker Sep 12 '17 at 08:44

15 Answers15

176

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.

evgeny
  • 9,575
  • 5
    At least in Ubuntu 10.10, grub-pc is included on the live CD (so you can skip the line sudo apt-get update && sudo apt-get install grub-pc). – Matthew Dec 31 '10 at 04:02
  • 1
    i am getting an error while executing: sudo grub-setup /dev/sda

    grub-setup: error: cannot stat /boot/grub/

    Can you tell me where I am going wrong?

    –  Feb 19 '11 at 13:34
  • I ran into a small problem while doing this. After running step 4, windows 7 vanished from the boot menu. All I had to do was login into ubuntu and run the step 4 again. Hope that helps someone. – Khaja Minhajuddin Mar 28 '11 at 07:51
  • watch out for one thing. DEVICENAME_FROM_STEP_ONE may change after windows installation since windows creates an additional small partition. I am now installing ubuntu again since I messed up my partitions. (Thanks to ubuntu live cd installation I could browse while installation is going on :--) – rpattabi Jul 28 '12 at 11:03
  • 4
    If you DO NOT have a separate /boot partition: -- how do I find out this? – Alan Coromano Oct 04 '13 at 18:49
  • 3
    Wouldn't it be better (safer) using a chroot? – kiri Oct 04 '13 at 21:07
  • @AlanDert Check GParted for a seperate /boot partition on your main drive – kiri Oct 04 '13 at 21:13
  • 3
    A safer instruction instead of rm -rf /boot is: mount --bind /mnt/boot /boot – Amr Mostafa Apr 20 '14 at 19:32
  • 3
    Did exactly as shown here, but did not work for Ubuntu 14.04. After invoking grub-install, Ubuntu automatically boots, no GRUB boot menu shown. The method shown below (Peachy's answer), however, worked (boot-repair). – Jan-Philip Gehrcke Jul 08 '14 at 00:49
  • What about installing from firmware without booting from USB? It is uncertain on my Dell laptop how the installation is going to be, it never asks where to install Windows. – JavaTechnical Jan 04 '17 at 05:24
  • This worked somewhat perfectly. Grub didn't want to install but I forced it and it worked all ok after that. – Lilian A. Moraru Jan 09 '17 at 15:23
  • For people who unable to find USB with Windows in Boot Menu: don't use standart ubuntu application to write Windows installer! Use winusb package instead – Pavel Apr 23 '17 at 00:46
  • I tried both options since I couldn't figure out whether there's a /boot partition or not. But in the first case grub-install failed with "failed to get canonical path of /boot/grub and in the second case it complained about not being able to run on multiple devices or something similar. I couldn't install boot-repair since I don't have the wifi driver by default... The device is Dell XPS 9370. – xji Jan 26 '18 at 00:01
  • Eventually I was able to use my Android phone as a tethering device to connect to the Internet and install boot-repair and fix it. – xji Jan 26 '18 at 14:41
158

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 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.

Peachy
  • 7,117
  • 10
  • 38
  • 46
  • 6
    Thanks, perfect. Just to mention you will also need an internet connection. And to run terminal to put the aforementioned commands Hit super-key in you keyboard(usually with windows logo in it) and type Terminal. Use terminal to put the commands. – groo Jul 08 '12 at 16:04
  • 2
    Jan-Philip, fyi the PPA has been fixed and is now available for all supported versions of Ubuntu. So you do not need this hack any more. see the Ubuntu community page about Boot-Repair. – LovinBuntu Dec 30 '14 at 22:22
  • Does this work for Windows 8 / 8.1, too? – A. Donda Jun 03 '15 at 19:21
  • Will this work for Windows 10 ? Please let me know – mtk Aug 21 '15 at 14:07
  • 1
    Yes, this works for all versions of Windows from 7, through 8, 8.1 and 10. This also works with Ubuntu 15.10. – aalaap Sep 05 '15 at 08:20
  • 1
    Windows 7 wasn't somehow detected after installing boot-repair. Updated Grub to version 2 made it appear. http://askubuntu.com/questions/405189/grub-dont-find-windows-7-loader-cant-boot-to-windows-after-installing-linux-h – ruelluna Sep 09 '15 at 09:23
  • Don't forget: If you leave windows partition in a dirty state by for example shutting down via power instead of proper shutdown boot-repair may fail, as it did for me, but doing a proper shutdown will fix this. – Centril Sep 27 '15 at 14:34
  • This worked for me with Windows 10 and Ubuntu 16.10. I couldn't run Ubuntu from my USB because of Nvidia drivers, on my Dell. I still could launch it from the BIOS though, and process with boot-repair. Thanks o/ – keepthepeach Nov 22 '16 at 16:36
  • Why is installing Windows after Ubuntu not recommended for dual boot? – blueether Sep 25 '21 at 22:10
  • "Installing Windows after Ubuntu is not the recommended process for a dual boot Windows and Ubuntu system" - can I ask you to please provide the source for the information that it's not recommended? – Line Feb 06 '22 at 14:01
24

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.

  • An edit and an upvote! ;-) Read my comment in your other answer... – Fabby Mar 01 '19 at 20:35
  • Worked for me. I switched off any settings on the motherboard that allowed 'legacy'. Only UEFI! This forced my Mint 19.2 install to rely on the creation of an EFI partition. After Mint, I installed Win 10. After running Boot Repair (included in the Mint live USB) all worked fine. – Martien Lubberink Oct 06 '19 at 08:21
  • Some additional details on how this (particularly, the boot-repair bit) can be achieved are also described here: https://www.techjunkie.com/install-windows-10-alongside-ubuntu/ – mfg Dec 28 '19 at 15:36
  • 1
    And the win on usb bit here: https://www.maketecheasier.com/create-windows-installer-usb-linux/ – mfg Dec 28 '19 at 15:44
  • 1
    Hey RoundDuckMan how you say it, makes it seem easy, I just want to ask, in UEFI/GPT will windows automatically just detect Ubuntu and add it to bootloader? – Demon App Programmer Jan 20 '21 at 10:54
  • If you not sure about UEFI and GPT: Check uefi: sudo efibootmgr should print BootOrder and stuff, if its BIOS it will show EFI variables are not supported. GPT: use sudo gdisk -l /dev/sda - it will show GPT: present on GTP-Systems and MBR: MBR only on MBR – hinneLinks Jan 22 '21 at 13:26
13

boot-repair did a really good job launched from a live-usb, by just applying the recommended option.

Gazler
  • 103
Quesst
  • 139
7

When you boot have you checked the boot order on your BIOS? If you're booting straight to the hard drive it will always miss the USB. You need to move the USB device boot option higher in the priority list.

Also check that your computer allows you to boot from USB in the USB port you are using.

Slipstream
  • 1,199
  • 1
    What do you mean with the first part , But I am sure my computer allows Boot up from USB in that port – Ubisoft Terzuz Dec 24 '12 at 13:57
  • See this, in the BIOS there is a setting that tells the computer what to boot to first. If your hard drive is above usb in the list, it will always boot to that – Seth Dec 24 '12 at 14:40
5

First, you have to boot with a live CD/USB stick and shrink your partition in order to create a second one. Windows 7 requires and creates a second partition which is called "system reserved". I don't know why, but it does. (So you will end up with three partitions or four if you have a swap partition.)

When your partition is ready, just boot with your Windows 7 DVD/USB stick and install Windows 7 on the new partition.

When Windows 7 has been installed, GRUB will break and you will only be able to boot Windows (automatically). Just boot with a live Ubuntu CD/USB stick and fix it (how it is mentioned in other comments).

Now another issue that some users may face:

I own an HP Mini 210 netbook which came with Windows 7. I erased everything and installed Ubuntu. Later on I decided to also reinstall Windows 7 and have a dual boot (needed Windows for a specific application from my university which wouldn't run through wine). At that time I had three partitions:

- Ubuntu
- Swap
- Backup/download storage

Now when I tried to install Windows 7 I faced a problem because Windows 7 needs to create a second primary partition (system reserved). I already had three partitions and therefore was unable to create two more. The workaround here is to create an extended partition in which you will include both swap and backup storage. Now I have:

- Ubuntu (primary)
- Extended
  - Swap
  - Backup/download storage
- Windows 7 (primary)
- Windows 7 system reserved (primary)
Antonis
  • 710
4

Basically the same answer as @evgeny, but using chroot instead of a symbolic link.

  1. Boot into a Ubuntu LiveCD
  2. Open GParted and make sure you have an unused partition with at least 20GB free space. This will be your Windows 7 partition.
  3. Install Windows 7 onto this partition.
  4. Boot into a Ubuntu LiveCD
  5. Make a note of the partition Ubuntu is installed on and any separate /boot partitions if applicable.
  6. Mount your Ubuntu installation

    sudo mkdir /mnt
    sudo mount /dev/<partition> /mnt
  7. Give this partition internet access

    sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
    
  8. Only if you have a seperate /boot partition, otherwise skip this step

    sudo mkdir /mnt/boot
    sudo mount /dev/<boot_partition> /mnt/boot
  9. Set up then enter chroot

    sudo mount -o bind /proc /mnt/proc
    sudo mount -o bind /dev /mnt/dev
    sudo mount -o bind /dev/pts /mnt/dev/pts
    sudo mount -o bind /sys /mnt/sys
    sudo chroot /mnt
    
  10. Make sure grub-pc is the latest version

    apt-get update && apt-get install grub-pc
    
  11. Install GRUB

    grub-install /dev/sda
    
  12. Exit chroot

    exit
    
  13. Reboot and check if it works
kiri
  • 28,246
  • 16
  • 81
  • 118
4

In case your computer came with a pre-installed copy of Windows 8 and you removed it because to many people told you to hate it and you found that after you installed Ubuntu, that it isn't what you want, note this:

Your computer boots with UEFI and has a GPT partition table.

For installing Windows 7, either create and boot the Windows 7 installation media in UEFI-mode or set boot-mode and partition table to legacy.

LiveWireBT
  • 28,763
  • and also DO NOT try to install Ubuntu alongside by shrinking the partitions and normally as in other systems. Read https://help.ubuntu.com/community/UEFI – Devesh Khandelwal Oct 06 '14 at 13:50
  • I have not deleted installation files that came pre-existing with laptop firmware (but only C drive, where Windows was installed formerly). Now, how do I install Windows 8.1 from that? – JavaTechnical Jan 04 '17 at 05:30
4

To install Windows you need an empty partition that will be dedicated to Windows. If you do, then go ahead and install on this using the normal installation procedure. After installation, reboot into Windows and reboot a few times more to experience Windows ;-) (sorry, couldn't resist)

Like you said, this will break GRUB and your computer can only boot Windows after this. Do not despair, as there is a help section dedicated to restoring GRUB and being able to dual boot. Look here. After performing this, your computer will be able to boot Ubuntu as well as Windows.

Before you start, very very carefully note down the location (hard drive number, make & partition number within that) of the current Ubuntu install (which you don't obviously want to overwrite) and the empty partition in which you want to install windows. Also, during Windows installation, if it offers to format any partition other than the one you are installing Windows into, please do not accept.

koushik
  • 5,072
4

One good advice: When you make the separate partition for Windows 7, using gparted for example, format it to the NTFS right away. Do not use Windows installer to format the partition, because several times I had a situation, when the Windows installer corrupted the partition table after that and I had to restore the lost partition. So, as the people recommended here: using gparted, create separate partition, format it to the ntfs, install windows there, then restore grub using livecd or liveflash. You can use the SystemResqueCD for liveflash.

3

Its a easy process to install dual OS. 1st create a NTFS partition from Ubuntu using Disk Utility. Then restart your system and continue with your windows installing. After finishing installing you can see that your GRUB is not working..... NOT A PROBLEM. I have two method to fix this GRUB problem.

[Method 1] Try to reinstall GRUB under Ubuntu LiveCD. For example, like recommended @kiri above in this answer.

[Method 2] It may be bit difficult. Don't worry i have also a easy one. For that you have to login into windows. Download EasyBCD and run it. Go to Edit Boot Menu and set your desired boot option as default. Then save it and reboot your system. [Tested under windows].

Please let me know if you stack in something.

ScareCrow
  • 134
3

The most save way is to install Windows 7 first and to reinstall Ubuntu after that. This will ensure that grub works.

You can also edit your partitions with a live cd, and then install Windows 7. When you have done this you boot into Ubuntu with a live cd and restore grub. This procedure however, is a bit more delicate than just installing them in the right order.

Peter Smit
  • 7,587
3

I suggest you virtualize Windows 7 with something like VirtualBox (http://www.virtualbox.org)

This way you can run Windows and Linux at the same time, without the chance of destroying you Bootloader Grub.

I don't know why you want to run Windows 7, but if you don't need the full hardware capacity (Running the Latest 3D Games for example) of your computer for windows then virtualization can be a good solution.

  • 5
    sometimes running windows virtualized through vbox or vmware limits the user.. if he/she wants to run i.e. games, this might be an issue? – Antonis Oct 12 '10 at 08:55
  • 1
    Yes, running modern games is not going to work virtualized, but if you don't do that this might be a nice solution. – Niels van Reijmersdal Oct 12 '10 at 09:47
2

Boot that USB

  1. Turn on or restart the computer.
  2. While the display is blank, press the F10 key to enter the BIOS settings menu.
    NOTE: The BIOS settings menu is accessible by pressing the F2 or the F6 key on some computers.
  3. Select the Advanced tab using the right and left arrow keys.
  4. Press Enter.
  5. Use the up and down arrow keys to select Boot Order.
  6. Follow the on-screen instructions to change the boot order so that USB is at the top
  7. Press Esc.
  8. Select the Exit tab using the right and left arrow keys.
  9. Press Enter.
  10. Press Enter.



Reboot...

0

Installing windows after ubuntu is a pain but after you do this you'll need to put in your ubuntu live cd and install boot-repair and run that. Becouse installing win7 after ubuntu will break grub. But, boot-repair will remedy that!

jamie
  • 23