3.6 Dual-Boot Considerations: Windows and Linux Side by Side
Right, so you want to install Linux on a machine that already runs Windows. This is the digital equivalent of convincing your sensible, corporate roommate to let their brilliant but eccentric artist cousin move into the spare room. It can work beautifully, but you have to set some ground rules first, or you’ll both be tripping over each other’s stuff and someone’s going to end up locked out.
The core of the issue is this: Windows and Linux are two different operating systems with two different, mutually ignorant bootloaders. Windows uses a system called UEFI (or the ancient, horrifying BIOS, but we’re not talking about that today) to boot, and it fully expects to be the one and only star of the show. Our job is to install Linux without breaking Windows’s boot process, and then install a new bootloader (almost always GRUB) that is smart enough to find both operating systems and ask you which one you want to run. Let’s get the lay of the land first.
Understanding the Modern Boot Process: UEFI and GPT
Forget everything you might have heard about “MBR” and “BIOS” for a moment. If your computer was made in the last decade, it almost certainly uses UEFI firmware and a GPT partition scheme. This is unequivocally a good thing. UEFI is far more robust and flexible for our purposes.
The key thing to understand is that UEFI doesn’t boot from a “Master Boot Record” on a disk. Instead, it looks for a special partition on your drive called the EFI System Partition (ESP). This is a small (usually 100MB-550MB) FAT32 formatted partition that contains the bootloader files for every installed operating system. When you install Windows, it creates an ESP, puts its bootloader (\EFI\Microsoft\Boot\bootmgfw.efi) there, and tells the UEFI firmware to use it by default.
Our plan is simple: we’re going to leave the existing Windows ESP completely alone. We’ll install Linux, tell it to put its bootloader files (\EFI\ubuntu\grubx64.efi or similar) on that same ESP, and then set our newly installed GRUB as the default. GRUB is clever; it will probe your disks, find the Windows bootloader, and add it as a menu option. This is infinitely cleaner than the old BIOS/MBR hacks.
You can verify you’re on a UEFI system by checking for the ESP in Windows. Open Disk Management (diskmgmt.msc) and look for a small partition labeled “EFI System Partition”. Alternatively, open PowerShell as Admin and run:
Get-Partition | Where-Object {$_.Type -eq 'System'}
This will show you the partition(s) marked as EFI System.
The Critical First Step: Disable Fast Startup and Secure Boot
Windows, in its infinite wisdom, has a “feature” called Fast Startup. This is a lie. It’s not a faster startup; it’s a partial hibernation. When you shut down Windows with this enabled, it doesn’t fully release its grip on the hardware—especially the disk. It leaves the NTFS filesystem in a dirty, mounted state. If you then boot into Linux and try to read or, heaven forbid, write to the Windows partition, you risk catastrophic data corruption. It’s like trying to rearrange the furniture in a room while Windows is just taking a nap in the corner, ready to wake up and wonder what the hell you’ve done.
You must disable this. Right now. Go to Control Panel > Power Options > Choose what the power buttons do. Click “Change settings that are currently unavailable” and uncheck “Turn on fast startup”.
Next, Secure Boot. This is a UEFI feature designed to prevent malware from hijacking the boot process by only running signed bootloaders. Microsoft’s keys are trusted by default. Many major Linux distributions (like Ubuntu, Fedora) now have signed bootloaders that will work with Secure Boot enabled. My advice? For your first rodeo, just disable it in your UEFI/BIOS settings before you install. It removes a huge potential point of failure. You can always re-enable it later and see if your distro plays nice. Wrestling with Secure Boot while also trying to figure out why GRUB isn’t showing up is a special kind of hell.
Partitioning: Carving Out Your New Linux Home
During the Linux installation, you’ll hit the partitioning step. This is where most people sweat. Choose the “Something else” or “Manual” partitioning option. The installer’s “Install alongside Windows” option is a coward and often gets it wrong.
You need to create at least two new partitions in the free space you’ve shaved off your Windows drive (use Windows’ Disk Management to shrink your C: drive before you boot the Linux installer, by the way).
- A Swap Partition: This is your emergency RAM. A rule of thumb is to make it equal to your physical RAM size, especially if you want to use hibernation (suspend-to-disk). If you have a ton of RAM (16GB+), you can probably get away with 4-8GB.
- Your Root Partition: This will be formatted as
ext4(just go with it, it’s the standard) and mounted at/. This is where the entire operating system and your files will live. Give it the rest of your available space. 30-50GB is a comfortable minimum.
The most important part of this step is the “Device for bootloader installation” dropdown. You must point this to your EFI System Partition. It will probably be something like /dev/nvme0n1p1 (for an NVMe drive) or /dev/sda1 (for a SATA drive). Do not point it at your new Linux root partition. You want both bootloaders living side-by-side in the same ESP.
When Things Go Sideways: Fixing the Bootloader
Sometimes, Windows Update gets a bit cocky and decides to rewrite the UEFI boot order, making itself the default again and making your Linux install vanish. Don’t panic. Your Linux installation is almost certainly fine; it’s just been ghosted.
The easiest way to fix this is to use a Linux live USB stick again. Boot into it, open a terminal, and use efibootmgr to fix the boot order. First, list the current entries:
sudo efibootmgr
You’ll see a list. Look for the entry for Linux (it might be labeled ‘ubuntu’, ‘fedora’, ‘grub’). Note its Boot number, e.g., Boot0003. Also note the Windows entry, e.g., Boot0001. The BootOrder line will show the current sequence. To tell the firmware to boot Linux first, you’d run:
sudo efibootmgr -o 3,1
This sets the order to try Boot0003 first, and if it fails, then Boot0001 (Windows). And just like that, you’re back in business. It’s a good party trick to have up your sleeve. Welcome to the dual-boot life. It’s a bit of a tightrope walk, but the view from both sides is worth it.