How to Dual boot Windows 10 and Linux (Beginner's Guide)
You will learn everything you need to know about dual-booting Linux and Windows.
I assume you already have Windows installed on your computer and you only need to install Linux to dual boot. This post will guide you through the following key points of the dual boot installation:
- Essential BIOS settings for successful dual boot.
- How to shrink your Windows partition to get free space for Linux.
- How to install Linux, using Linux Mint as an example.
- How to set the boot order in your computer to see the menu where you can choose between Linux and Windows to boot.
- Finally, I will explain why I am not a fan of dual-booting and why I recommend using Windows in a virtual machine as I showed in this post.
*NOTE: Before you apply any actions from in this post, please back up all your important data.*
Unfortunately, most of the computers have BIOS configured specifically for Windows, and likely you won’t be able to install Linux on it without changing some settings. BIOS interface may differ from one computer to another but the main settings are the same.
I will use the BIOS of my Acer Swift 1 laptop as an example here.
Get into BIOS
First, you need to get into BIOS, usually, you just need to press a specific key during the boot. In my Acer Swift 1, I press F2. Just google your computer model and
bios key term, and you will find the key you need to press. Sometimes, you may also see it on the screen during the boot:
Set the BIOS password
Next, you may need to set a password in your BIOS because it won’t allow you to change any security settings without a password. This is the menu to set the password on my Acer Swift 1:
You should be able to find the same in your BIOS. It is also possible that you can proceed without setting a password.
Disable Secure booting and change the Boot order
Next, you need to go to the Boot menu and disable Secure booting and move your bootable USB flash drive to the first place in the boot order:
Check this description of the commands on the right or bottom of your BIOS interface, it explains how to navigate and change options in your BIOS.
I am not going to stop here on how to create a bootable USB drive. I have already explained how to create a bootable USB from the command line or using graphical programs.
Save BIOS settings
In the end, go to the exit menu and exit BIOS with saving the changes:
If you have done everything correctly, you should boot in your Live USB Linux system:
Get free space for Linux
Boot into Live Linux session
Boot from the Live Linux USB. I will use Linux Mint installer as an example here, if you use Ubuntu or any Ubuntu-based distro, the process will not differ at all. If your distro is not Ubuntu-based, you still need to do the same steps as you will see in this post but the installer may look slightly different.
To install Linux alongside Windows, you can actually select such an option in the installation wizard:
It will automatically find free space on your hard drive and install Linux there. However, if you want to have little more control over how much space you allocate to Windows and Linux, you can get free space and assign it for Linux manually.
Shrink the Windows partition with GParted
Most of the Linux distros have GParted included in a Live ISO. If it is not, install it from the Software Center. Then open GParted and select the hard drive with your Windows installed:
Your Windows hard drive will be partitioned similarly to the one you see above. Most likely it will have the EFI partition, and this means you need to install Linux in the EFI mode too.
To shrink the Windows partition to get free space for Linux, you need to select the largest partition, click on the Partition menu in GParted, and select resize.
All white space is free space. So, you can shrink this partition with your mouse, or by selecting its size precisely with the number. You can take a maximum of free space for Linux if you aim to use mainly Linux, but leave some free space for Windows too, because it may not be able to work without free space left.
Click resize. Read this warning to know the risk and click OK. You will see how your partitions will look like after you apply the resizing:
So far, no changes to your hard drive have been applied. It is only a plan of action. You still can cancel everything, if you have done a mistake somewhere. However, if you are happy with this partition table. Click apply. This action will be irreversible.
Resizing will take some time. Hopefully, it will finish successfully and you can proceed with the installation.
To install Linux, click on the Install icons on your desktop or in your menu. The installation process is pretty standard.
I recommend to include the third party software in the installation:
Select Manual partitioning
As I mentioned before, you can select the option to Install Linux alongside Windows automatically, but I personally prefer the manual way. That’s why we shrank the Windows partition and released some free space for Linux. Manual way not only gives more control but it also helps to understand what happens to your system when you install two systems alongside each other. So, select Something else here:
Create Linux Partition
The new screen will show you the partitions of your hard drive. You need to select the free space we have created in the previous step. Then click on the add sign, to create a Linux partition in this free space:
You can keep all the options at default here but importantly you need to assign
/ as a mounting point to this partition.
You can also split this free space into two parts and assign one to the system
/ and one to
/swap. But I believe it is much better to use a swap file instead. Ubuntu installer creates a swap file by default.
I already explained the difference between a swap file and swap partition previously.
Check the EFI partition
Next, you need to select the EFI partition, it is usually of several hundred megabytes in size. Make sure it is detected as EFI:
Boot loader installation
Boot loader installation doesn’t matter here because it will be UEFI installation, so the boot loader will be installed in the EFI partition. You can keep the default selection.
Finally, check that only the new Linux partition will be formatted in the Format column. Because if you have other partitions selected for formatting, be careful you will lose all the data stored in those partitions. If everything is fine, click Install.
Finalize the installation
While the system is installing, select your location, provide your user information, set the password, etc.:
And then just wait until the system is installed.
After the installation, reboot the system and do not forget to remove your installation USB when you are requested to do so:
Boot into the new system
You should see this GRUB menu after the reboot. Here you can select between Linux, which will boot by default in 10 sec, and Windows:
Boot options in BIOS
If it happened that after the reboot, you booted directly in your Windows and you did not see any Linux menu, do not get upset. Likely, you have done everything right and you just need to change the boot order in your BIOS. Like I had to do in my Acer Swift 1.
Enable the Boot menu
In the Main tab, find the Boot menu and enable it:
Change the Boot order
Then go to the Boot order and you should see an additional boot option there that appeared after you installed Linux. In my case, it is still called Windows Boot Manager without the code in brackets. This is actually my Linux boot file. I do not know why BIOS branded it as Windows. So, I make it a first boot option:
And save the BIOS changes. After the reboot, you should see the GRUB menu with the choice of boot options.
Test the Boot menu
If you still boot into Windows by default, try to open the boot menu during the start of your system by pressing the F12 key (or whatever key is assigned to your BIOS Boot menu). It should bring this BIOS boot menu:
Where I can choose Ubuntu and my Linux Mint will boot. So, the BIOS Boot menu helps to make sure that Linux works, you just need to check your boot order settings, maybe Linux is not the first option there. Try different orders until you get Linux booting the first.
Why I do not recommend dual-booting
There are three main reasons I stopped dual-booting and this is also why I do not recommend dual boot.
If you use Windows in dual boot, it is possible that some updates of Windows may break your Linux installation. Theoretically, it should not happen, but it happens. Maybe Windows changes the Linux bootloader in the UEFI partition. I do not know.
If you dual boot, you will never switch to Linux. If you are used to Windows, you will tend to boot into Windows more often and you won’t like to reboot to get to Linux. So, you will not use Linux much and thus will never switch to Linux completely.
On the other hand, if you prefer Linux, Windows will just take too much space on your hard drive that is never used. So, this is not good either.
I recommend using Windows in a Virtual machine such as VirtualBox. This way your Windows can be accessed from within Linux. Windows will be less powerful than if it was installed in dual boot, but you still can do most of the things you would normally do. A virtual machine also isolates your Windows file system and this provides better protection against viruses. You can read my post on how to install Windows 10 in VirtualBox and maybe you will like that option more than dual-booting.
I installed my Linux Mint on a second SSD and it’s my default OS. I haven’t figured out how to forgo pressing F2 and going into BIOS so that’s what I do every time I start my computer
There is no fool on the planet that would beleive cookies make a better site.
“If you dual boot, you will never switch to Linux.” Yes if you find out you are right-handed you might as well cut off your left hand.
“On the other hand(!), if you prefer Linux, Windows will just take to much space on your hard drive.” Can we assume you wanted to use “too” and not “to”? These days hard drives are just ‘too’ big ‘to’ limit one’s computer ‘to’ just one operating system.
Average Linux User
Hi Chuck, Thanks for the correction of “too”.
I also am a fan of virtual machines, here are a few refinements to those by the author. You should select your host machine and guest machine (which one hosts the software that runs the virtual system is the host)based on a couple of factors. Do you have any applications or VPNs required for work? If you do you may find it is better for those to run in the host environment. Most will run in either but some applications and security systems may not accept authentication or applications that have their networking manipulated. Second, if you will spend the majority of your time in one environment or the other choose that for your host since it will operate just a bit faster. Finally think about system memory and which system has applications that use the most memory, those are best for the host because you can shutdown the guest and devote all the memory to the host system.
Finally, choose your virtual solution carefully. Are you interested in building skills for a job? Choose one of the mainstream solutions that your business or others use. I use to work in IT and at the time VMWare was the favorite virtualization environment. There are free non-commercial versions and it scales about as high as you would like. Even 10 years ago it ran on massively parallel commercial high end highly available hardware. With that said any corporate quality virtualization system will build skills but knowing which one a future employer uses might make a lot of sense to learn.
Less than average computer user
How would one go about doing this:
-I have an SSD running Ubuntu -I have another SSD that used to have windows installed, but got corrupted, and then got formatted.
I’d like to install win10 (to the drive that used to have it), but preserve the ubuntu boot loading (I used to be able to select the OS I wanted with a purple screen, I think it’s GRUB?)
I’d basically need the reverse of this article… Do you have links to documentation that explains this new BIOS things? UEFI and so on?
The windows installation failed because it always tried to boot into ubuntu, and then it complained about the partitions not being right…
Average Linux User
It is tricky. You can install Windows but then you need to manually re-install Linux bootloader into the EFI partition if you do not want to re-install Ubuntu. I cannot give you detailed instructions right now. You need to do some research yourself.
You shouldn’t have any problem. Windows affects only its own drive (at least it used to. You never know with their upgrades -_-). Linux is used mostly for development so you shouldn’t have problems while coding unless you decide to use some “windows only” IDE. And if you really want to use that Windows application you can always use Wine :)
Average Linux User
I think you should not have a problem with installing Linux and Windows on separate drivers. The only possible problem is the EFI partition that is shared. So, you may need to fix Linux bootloader if Windows modifies it. But it may never happen.
alberto is correct your link to win10 in virtual box is directing to this same article
Average Linux User
Sorry, forgot to add a link. Here it is: How to install Windows 10 in VirtualBox
Thanks for this walk through. Never having dual booted and having abandoned Windows 15 years ago, I am concerned about installing Linux along side a unactivated Windows install. You've reassured me that I can use good old gparted to repartition the HD. Your tutorial is the only one I've found that has shown this. Well done!
Average Linux User
Thanks, John! Happy to hear it worked!
Hi. A big thank you for your precise, detailed, and, above all, CLEAR text. Useful as well as your other articles on Linux. In several cases, better than the official Linux documentation. Only a small adjustment of a link. On the “https://averagelinuxuser.com/dualboot-linux-windows/” web page, the link “how to install Windows 10 in VirtualBox” at the bottom actually redirects to the same page, while it should be replaced with its relevant one (maybe “https://averagelinuxuser.com/install_windows10_in_virtualbox/” ?). Thanks again, Alberto
Average Linux User
Thanks, Alberto! I did not notice that. Now, the link is corrected.