Skip to main content
Overview

Dual Boot Guide: Windows 11 and Ubuntu 25.04

5 min read

Ubuntu 25 Installer

What you need: a machine with Windows 11 installed, at least 30GB of free space (50GB+ is more comfortable), an 8GB+ USB drive, and about 30–45 minutes.

Part 1: Prepare Windows

Back Up Your Data

Before touching partitions, back up anything important — Windows Backup, external drive, cloud, whatever works for you.

Check UEFI or Legacy BIOS

Press Win + R, type msinfo32, Enter. Look for “BIOS Mode” under System Summary. UEFI is the modern standard; most machines from the last decade use it.

Shrink the Windows Partition

Press Win + XDisk Management. Right-click your C: drive → Shrink Volume. Enter the amount to shrink in MB — 30000 minimum, 50000 is comfortable, 100000 if you’re doing serious dev work. Click Shrink.

Windows Disk Management

If you want to free up space first, run cleanmgr and clean up Windows Update files before shrinking.

Disable Fast Startup

Control Panel → Power Options → Choose what the power buttons do → Change settings that are currently unavailable → uncheck Turn on fast startup → Save.

Windows Fast Startup

Disable BitLocker (If Enabled)

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

Wait for decryption to complete before continuing.

Part 2: Create Ubuntu Installation Media

Download Ubuntu 25.04 from releases.ubuntu.com/plucky.

Ubuntu Download Page

Verify the ISO

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

Compare the hash against the SHA256SUMS file on the download page.

Write to USB with Rufus

Download Rufus, select your USB drive, select the ISO, set partition scheme to GPT for UEFI systems, click STARTWrite in ISO Image mode.

Rufus USB Creator

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

Part 3: Install Ubuntu

BIOS/UEFI Settings

Restart and enter BIOS (F2, F12, Del, or Esc depending on your board). Disable Secure Boot temporarily, set SATA to AHCI if using SSD, disable Intel RST if present, set USB as first boot device. Save and exit.

Boot and Install

Boot from USB, select Try or Install Ubuntu, choose your language and keyboard, connect to WiFi if needed.

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 changes, set your timezone, create your user account, and wait 10–15 minutes for the installation to finish. Remove USB when prompted and restart.

Dual Boot Screen

Part 4: Post-Installation

Updates and Essentials

Terminal window
sudo apt update && sudo apt upgrade -y
sudo apt install ubuntu-restricted-extras

NVIDIA Drivers

Terminal window
sudo ubuntu-drivers autoinstall

Fix Time Sync

Windows and Linux handle hardware clock differently. Run this in Ubuntu to prevent time conflicts:

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

Post-Install 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
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

Part 5: Managing the Dual-Boot System

Accessing Windows Files from Ubuntu

Your Windows drive shows up in the Ubuntu file manager sidebar. For write access to NTFS:

Terminal window
sudo apt install ntfs-3g

Accessing Ubuntu Files from Windows

Use \\wsl$\Ubuntu\home\yourusername in File Explorer after installing WSL2, or install Paragon Linux File Systems for Windows.

Change Default Boot OS

Edit GRUB:

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

System Snapshots with Timeshift

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

Part 6: Troubleshooting

Windows Missing from GRUB Menu

Terminal window
sudo os-prober
sudo update-grub

Ubuntu Won’t Boot After Windows Update

Windows updates can overwrite GRUB. Boot from the Ubuntu USB in “Try Ubuntu” mode, then:

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

Select “Recommended repair”.

Secure Boot Issues

Disable Secure Boot in UEFI, boot into Ubuntu, then:

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

Restore Windows Bootloader

Boot from Windows installation media → Repair your computer → Troubleshoot → Advanced Options → Command Prompt:

bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd

Removing an OS

Remove Ubuntu, Keep Windows

Boot into Windows → Disk Management → delete Ubuntu partitions → expand Windows partition → repair Windows boot with installation media.

Remove Windows, Keep Ubuntu

Terminal window
sudo apt install gparted
sudo gparted

Delete Windows partitions, expand Ubuntu as needed, then:

Terminal window
sudo update-grub

Share this post

Related Posts

Loading comments...