How to Dual Boot Linux and Windows 11 (Complete Guide)

Tested with: Ubuntu 26.04 LTS + Windows 11 on UEFI — June 2026

Dual booting lets you run Linux and Windows on the same computer, choosing which one to start at boot. This guide covers the complete process: preparing Windows correctly (most guides skip the critical steps here), shrinking the Windows partition, installing Linux alongside it, and fixing common issues with GRUB. Done right, dual booting is stable and reliable.

Contents
  1. Before You Start: Three Critical Steps in Windows
    1. 1. Disable BitLocker (if enabled)
    2. 2. Disable Fast Startup
    3. 3. Check Secure Boot and UEFI Mode
  2. Shrink the Windows Partition
  3. Create a Bootable Linux USB
  4. Boot from USB and Install Linux
    1. Ubuntu: "Install alongside Windows"
    2. Fedora: Anaconda installer
  5. First Boot: GRUB Menu
  6. Verify the Dual Boot Works
  7. Time Sync Issue: Fix the Clock Difference
  8. Troubleshooting
    1. GRUB doesn't show Windows
    2. Computer boots directly into Windows, no GRUB
    3. BitLocker recovery screen after installing Linux
    4. Linux won't boot after a Windows update
  9. Removing Linux from a Dual Boot
    1. Further Reading

Before You Start: Three Critical Steps in Windows

Most dual boot guides jump straight to the Linux install. That's a mistake — three Windows settings must be handled first or you'll corrupt data or lose your bootloader.

1. Disable BitLocker (if enabled)

BitLocker encrypts the Windows partition. If it's active, shrinking the partition or changing the boot order can trigger BitLocker recovery and lock you out of Windows. Check and disable it first:

# In Windows, open PowerShell as Administrator:
manage-bde -status C:

# If BitLocker is "Protection On", disable it:
manage-bde -off C:

# Wait for decryption to complete before proceeding (can take hours on large drives)
manage-bde -status C:

Alternatively: Control Panel → BitLocker Drive Encryption → Turn off BitLocker.

2. Disable Fast Startup

Windows Fast Startup writes a hibernation state to disk when you shut down. Linux sees this as a mounted Windows partition and refuses to access it — or worse, mounts it read-only and causes filesystem errors.

Disable it: Control Panel → Power Options → Choose what the power buttons do → Turn on fast startup → uncheck it.

# Or via PowerShell:
powercfg /h off

3. Check Secure Boot and UEFI Mode

Modern distros (Ubuntu, Fedora) support Secure Boot — you don't need to disable it. But check your firmware is in UEFI mode (not Legacy/CSM), since UEFI is required for the GRUB bootloader to manage both systems properly.

# Check boot mode in Windows:
msinfo32
# Look for "BIOS Mode" — should say "UEFI"

Shrink the Windows Partition

You need free, unallocated disk space for Linux. Shrink the Windows C: drive using Windows Disk Management — never from the Linux installer, as Windows needs to do its own filesystem checks.

  1. Press Win + X → Disk Management
  2. Right-click on the C: drive → Shrink Volume
  3. Enter the amount to shrink in MB. Minimum for Linux: 25,000 MB (25 GB). Recommended: 50,000+ MB.
  4. Click Shrink. The freed space appears as "Unallocated" — leave it as-is.

If Windows won't let you shrink enough, it's usually because unmovable files (hibernation file, pagefile) are scattered throughout the disk. Disable hibernation (powercfg /h off), disable the pagefile temporarily, restart, and try again.

Create a Bootable Linux USB

Download your chosen distro ISO and write it to a USB drive (8 GB minimum):

  • Ubuntu 26.04 LTS — best hardware support, straightforward installer
  • Linux Mint 22 — most user-friendly for Windows switchers
  • Fedora 44 — latest software, excellent GNOME experience

Use Rufus (Windows) or Balena Etcher (Windows/Mac/Linux) to write the ISO. In Rufus, select "GPT" partition scheme and "UEFI (non-CSM)" target — this matches your Windows UEFI setup.

Boot from USB and Install Linux

Restart your computer and press the boot menu key (usually F12, F2, Del, or Esc — varies by manufacturer). Select your USB drive.

Ubuntu: "Install alongside Windows"

The Ubuntu installer detects Windows automatically. At the "Installation type" screen:

  • Select "Install Ubuntu alongside Windows Boot Manager"
  • Use the slider to adjust how much space each OS gets (it uses the unallocated space you freed)
  • Click Install Now

If this option doesn't appear, choose "Something else" and manually assign the unallocated space:

  • Select the free space → + → 512 MB, EFI System Partition (if no EFI partition exists yet)
  • Select remaining free space → + → use as ext4, mount point /
  • Set the bootloader device to your main disk (e.g., /dev/sda, not a partition)

Fedora: Anaconda installer

In Fedora's installer, go to Installation Destination → select your disk → choose "Custom" or "Automatic" partitioning. Fedora detects Windows and leaves it intact. Select the free space for Fedora's partitions.

First Boot: GRUB Menu

After installation, your computer now boots to the GRUB menu, showing both options:

Ubuntu 26.04 LTS
Advanced options for Ubuntu
Windows Boot Manager
UEFI Firmware Settings

The default is Linux. To change the default or timeout, edit GRUB settings:

# Edit GRUB configuration
sudo vim /etc/default/grub

# Change default OS (0 = first entry, usually Linux)
# To make Windows default, count its position in the GRUB menu (0-indexed)
GRUB_DEFAULT=0

# Change timeout (seconds to wait before booting default)
GRUB_TIMEOUT=10

# Apply changes
sudo update-grub    # Ubuntu/Debian/Mint
sudo grub2-mkconfig -o /boot/grub2/grub.cfg   # Fedora/RHEL

Verify the Dual Boot Works

# From Linux, check that Windows partition is visible
lsblk -f

# The Windows NTFS partition should appear
# Do NOT mount it automatically — let Windows manage it
# Only mount it when needed:
sudo mkdir /mnt/windows
sudo mount /dev/sda2 /mnt/windows -o ro   # Read-only is safer

Time Sync Issue: Fix the Clock Difference

You'll notice the clock is wrong after switching between Linux and Windows. This happens because Linux stores time in UTC by default, while Windows stores local time. Fix it in Linux:

# Make Linux use local time (matches Windows behavior)
sudo timedatectl set-local-rtc 1 --adjust-system-clock

# Or — better — tell Windows to use UTC instead:
# In Windows, open regedit and add:
# HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation
# Add DWORD "RealTimeIsUniversal" = 1

Troubleshooting

GRUB doesn't show Windows

# Install os-prober to detect other operating systems
sudo apt install os-prober   # Ubuntu/Debian
sudo dnf install os-prober   # Fedora

# Enable os-prober in GRUB config
sudo vim /etc/default/grub
# Add or uncomment: GRUB_DISABLE_OS_PROBER=false

# Regenerate GRUB config
sudo update-grub

Computer boots directly into Windows, no GRUB

Windows Update sometimes overwrites the bootloader. Boot from your Linux USB in "Try" mode and repair GRUB:

# Identify your Linux partition and EFI partition
lsblk -f

# Mount Linux root (replace sda4 with your partition)
sudo mount /dev/sda4 /mnt
sudo mount /dev/sda1 /mnt/boot/efi   # EFI partition

# Bind system directories
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

# Chroot into your Linux install
sudo chroot /mnt

# Reinstall GRUB
grub-install /dev/sda
update-grub
exit

# Unmount and reboot
sudo umount -R /mnt
sudo reboot

BitLocker recovery screen after installing Linux

This happens when BitLocker was active. Boot into Windows using your recovery key (found in your Microsoft account at account.microsoft.com/devices/recoverykey). Then disable BitLocker before making any more changes.

Linux won't boot after a Windows update

Use the GRUB repair steps above. Windows Update occasionally resets the EFI boot order. After repairing, you can also set Linux as the first boot option from BIOS/UEFI settings.

Removing Linux from a Dual Boot

If you want to go back to Windows-only: don't just delete the Linux partitions — that breaks GRUB and Windows won't boot. Restore the Windows bootloader first: