Dual Boot Guide: Windows 11 and Ubuntu

#linux

Step-by-step guide to dual booting Windows 11 and Ubuntu — partitioning, installation, GRUB, and common fixes.

Ubuntu 25 Installer

Note

Updated June 2026: This guide was written for Ubuntu 25.04. For Ubuntu 26.04 LTS (Resolute Raccoon), the core steps are identical — download from releases.ubuntu.com/resolute. Secure Boot no longer needs to be disabled (supported natively since Ubuntu 22.04). Installer UI may look slightly different.

Dual boot when you want the real machine — the whole GPU, real battery behaviour, native performance. If you just want a shell and some Linux tooling, WSL2 does that without repartitioning anything, and it’s the better answer for most people asking this question.

Assuming you’re still here: 30–45 minutes, at least 30GB free, and an 8GB USB stick.

Prepare Windows

Back up first. You’re about to resize the partition your operating system lives on. Windows Backup, an external drive, cloud — whichever, as long as it exists.

Then check which firmware mode you’re in: Win + R, msinfo32, look for “BIOS Mode”. UEFI is what anything from the last decade uses, and the rest of this guide assumes it.

Shrink the partition from Win + X → Disk Management. Right-click C: → Shrink Volume, enter the amount in MB. 30000 is the floor, 50000 is comfortable, 100000 if you’ll actually work in there. If Windows won’t let you shrink as far as you want, run cleanmgr first and clear the Windows Update files — the limit is usually immovable system files near the end of the volume, not free space.

Two things left, and skipping either one is how people end up with a corrupted Windows partition.

Fast Startup off. Control Panel → Power Options → Choose what the power buttons do → Change settings that are currently unavailable → uncheck Turn on fast startup. With it on, Windows never really shuts down — it hibernates, leaving the NTFS filesystem in a state Linux refuses to mount for writing.

BitLocker off, if it’s on. An encrypted volume can’t be resized, and a firmware change can lock you out of your own recovery key:

Terminal window
manage-bde -status
manage-bde -off C:

Let decryption finish. It takes a while, and interrupting it is worse than waiting.


The installation media

Ubuntu 25.04 is at releases.ubuntu.com/plucky, 26.04 LTS at releases.ubuntu.com/resolute.

Check the download before you write it — a truncated ISO installs most of an operating system and then fails somewhere unhelpful:

Terminal window
Get-FileHash -Algorithm SHA256 -Path path\to\ubuntu-25.04-desktop-amd64.iso

Compare against SHA256SUMS on the download page.

Rufus writes it: select the drive, select the ISO, partition scheme GPT for UEFI, START → Write in ISO Image mode. MBR here produces a stick that boots on nothing.

Alternatively, Ventoy lets you copy multiple ISOs to one USB without re-flashing.


Install Ubuntu

Into the BIOS first — F2, F12, Del or Esc, depending on the board. SATA to AHCI and Intel RST off are the two that matter: with RST enabled, the Ubuntu installer simply does not see your disk, and the error it gives you says nothing about RST. Set USB as first boot device while you’re there.

Caution

Switching SATA from RST/RAID to AHCI can stop Windows booting. Do it before the install, boot Windows once to confirm it still starts, and only then continue. On Ubuntu 22.04 and later Secure Boot no longer needs to be disabled.

Boot the stick, Try or Install Ubuntu, language, keyboard, Wi-Fi.

Beginner: select Install Ubuntu alongside Windows Boot Manager and let the installer handle partitioning.

Manual partitioning (select Something else): in the unallocated space, create an EFI partition (512MB, EFI System Partition — skip if one already exists), a root partition (20–30GB, ext4, mount point /), a swap partition (equal to your RAM if you want hibernation), and a home partition (remaining space, ext4, mount point /home).

Confirm, set the timezone, create the user, wait 10–15 minutes. Pull the USB when it asks and reboot.

Dual Boot Screen


After the first boot

Terminal window
sudo apt update && sudo apt upgrade -y
sudo apt install ubuntu-restricted-extras
# Nvidia, if you have one
sudo ubuntu-drivers autoinstall

Then the one fix specific to dual boot. Windows reads the hardware clock as local time, Linux reads it as UTC, so each one “corrects” it on every boot and your clock walks by your timezone offset every time you switch:

Terminal window
timedatectl set-local-rtc 1 --adjust-system-clock

Everything else, in one script

#!/bin/bash
# Update system
sudo apt update && sudo apt upgrade -y
# Install essential software
sudo apt install -y ubuntu-restricted-extras vlc gimp libreoffice timeshift gnome-tweaks
# Fix time synchronization
timedatectl set-local-rtc 1 --adjust-system-clock
# Optimize SSD if present
21 collapsed lines
if [ -d "/sys/block/nvme0n1" ] || [ -d "/sys/block/sda" ]; then
sudo apt install -y util-linux
sudo systemctl enable fstrim.timer
fi
# Improve battery life
sudo apt install -y tlp tlp-rdw
sudo systemctl enable tlp
# Set up auto-cleaning
echo 'APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";' | sudo tee /etc/apt/apt.conf.d/20auto-upgrades
# Performance improvements
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
# Check and repair GRUB if needed
sudo update-grub
echo "Setup complete! Reboot for changes to take effect."
Terminal window
chmod +x dual-boot-setup.sh
./dual-boot-setup.sh

Living with it

The Windows drive appears in the Ubuntu file manager on its own. Writing to it needs one package:

Terminal window
sudo apt install ntfs-3g

The other direction is worse — Windows can’t read ext4 natively. Either \\wsl$\Ubuntu\home\yourusername in File Explorer with WSL2 installed, or Paragon Linux File Systems for Windows.

GRUB boots Ubuntu by default. To change which entry wins:

Terminal window
sudo nano /etc/default/grub

Change GRUB_DEFAULT=0 to your preferred entry number, set GRUB_TIMEOUT=10 if you want more time to choose, then:

Terminal window
sudo update-grub

Or use the graphical tool:

Terminal window
sudo apt install grub-customizer

And set up snapshots before you need them, not after:

Terminal window
sudo apt install timeshift
sudo timeshift --create --comments "Fresh Ubuntu installation"

Troubleshooting

Windows isn’t in the GRUB menu. GRUB was built before it could see the Windows partition:

Terminal window
sudo os-prober
sudo update-grub

Ubuntu stopped booting after a Windows update. Windows overwrote the bootloader — it does this periodically and without warning. Boot the Ubuntu USB in “Try Ubuntu” mode:

Terminal window
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
boot-repair

Choose “Recommended repair”.

Secure Boot is refusing your kernel modules. Disable Secure Boot in UEFI, boot Ubuntu, then re-enrol:

Terminal window
sudo apt install sbsigntool
sudo update-secureboot-policy

Windows won’t boot at all. From Windows installation media → Repair your computer → Troubleshoot → Advanced Options → Command Prompt:

bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd

Undoing it

Dropping Ubuntu: boot Windows → Disk Management → delete the Ubuntu partitions → expand the Windows partition → repair the Windows bootloader from installation media. GRUB lives in the EFI partition and has to be removed too, or you’ll boot into a rescue prompt on a system with no Linux on it.

Dropping Windows:

Terminal window
sudo apt install gparted
sudo gparted

Delete the Windows partitions, expand Ubuntu into the space, then rebuild the menu:

Terminal window
sudo update-grub

The one thing worth knowing before you start: the failure mode of this whole procedure isn’t losing Linux. It’s a Windows update quietly taking the bootloader six months from now, on a morning when you need the machine. Keep the USB stick.