
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 + X → Disk 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.

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.

Disable BitLocker (If Enabled)
manage-bde -statusmanage-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.

Verify the ISO
Get-FileHash -Algorithm SHA256 -Path path\to\ubuntu-25.04-desktop-amd64.isoCompare 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 START → Write in ISO Image mode.

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.

Part 4: Post-Installation
Updates and Essentials
sudo apt update && sudo apt upgrade -ysudo apt install ubuntu-restricted-extrasNVIDIA Drivers
sudo ubuntu-drivers autoinstallFix Time Sync
Windows and Linux handle hardware clock differently. Run this in Ubuntu to prevent time conflicts:
timedatectl set-local-rtc 1 --adjust-system-clockPost-Install Script
#!/bin/bash
# Update systemsudo apt update && sudo apt upgrade -y
# Install essential softwaresudo apt install -y ubuntu-restricted-extras vlc gimp libreoffice timeshift gnome-tweaks
# Fix time synchronizationtimedatectl set-local-rtc 1 --adjust-system-clock
# Optimize SSD if presentif [ -d "/sys/block/nvme0n1" ] || [ -d "/sys/block/sda" ]; then sudo apt install -y util-linux sudo systemctl enable fstrim.timerfi
# Improve battery lifesudo apt install -y tlp tlp-rdwsudo systemctl enable tlp
# Set up auto-cleaningecho '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 improvementsecho 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
# Check and repair GRUB if neededsudo update-grub
echo "Setup complete! Reboot for changes to take effect."chmod +x dual-boot-setup.sh./dual-boot-setup.shPart 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:
sudo apt install ntfs-3gAccessing 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:
sudo nano /etc/default/grubChange GRUB_DEFAULT=0 to your preferred entry number, set GRUB_TIMEOUT=10 if you want more time to choose, then:
sudo update-grubOr use the graphical tool:
sudo apt install grub-customizerSystem Snapshots with Timeshift
sudo apt install timeshiftsudo timeshift --create --comments "Fresh Ubuntu installation"Part 6: Troubleshooting
Windows Missing from GRUB Menu
sudo os-probersudo update-grubUbuntu Won’t Boot After Windows Update
Windows updates can overwrite GRUB. Boot from the Ubuntu USB in “Try Ubuntu” mode, then:
sudo add-apt-repository ppa:yannubuntu/boot-repairsudo apt updatesudo apt install boot-repairboot-repairSelect “Recommended repair”.
Secure Boot Issues
Disable Secure Boot in UEFI, boot into Ubuntu, then:
sudo apt install sbsigntoolsudo update-secureboot-policyRestore Windows Bootloader
Boot from Windows installation media → Repair your computer → Troubleshoot → Advanced Options → Command Prompt:
bootrec /fixmbrbootrec /fixbootbootrec /rebuildbcdRemoving 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
sudo apt install gpartedsudo gpartedDelete Windows partitions, expand Ubuntu as needed, then:
sudo update-grub