Why You Still Need Dual Boot in 2026
I’ve been using Fedora as my primary development machine for 2 years and I’m quite happy with the package update cadence — new kernels and toolchains arrive months ahead of Ubuntu. But in practice, there are still times when I need to boot into Windows 11: demos with clients using Microsoft Teams, testing UI on Edge, or Adobe Premiere when I need to export video quickly. Virtual machines solve most of this, but not everything — GPU passthrough is still complex, and some enterprise software detects virtualized environments and refuses to run.
The challenge with dual boot in 2025–2026 isn’t the installation itself. The three real-world problems I’ve encountered are: Secure Boot being enabled by default on Windows 11 and causing conflicts, GRUB2 getting overwritten after every Windows Feature Update, and the system clock drifting between the two OSes. This article goes straight to the point on each of those issues.
Preparation Before Installation
Installation Order: Windows First, Fedora Second
This is a non-negotiable rule. The Windows installer overwrites the entire EFI System Partition and does not recognize other operating systems. Install Windows 11 first, Fedora second — GRUB2 will automatically detect Windows and add it to the boot menu. Do it the other way around, and Windows will wipe GRUB without mercy.
Checking BIOS Mode and Secure Boot
On Windows, open msinfo32 and confirm:
- BIOS Mode: must be
UEFI(not Legacy) - Secure Boot State: either On or Off is fine
Fedora 39+ supports Secure Boot natively through the shim loader and MOK (Machine Owner Key), so there’s no need to disable Secure Boot. I kept Secure Boot enabled throughout the installation on my ThinkPad without any issues.
Creating Free Space for Fedora from Windows
Open Disk Management (diskmgmt.msc), right-click on the C:\ drive → Shrink Volume. Allocate at least 50GB for Fedora (I use 100GB to hold Docker images and project code).
The free space will appear as Unallocated — leave it as is, the Fedora Anaconda installer will handle it automatically. Also confirm that an EFI System Partition already exists (typically a ~100–500MB, FAT32 partition). If it does, Fedora will share it — no need to create a new one.
Installing Fedora on a System with Windows 11
Creating a Bootable USB
Download the Fedora Workstation ISO from the official website. On Windows, use Fedora Media Writer (recommended) or Rufus in GPT/UEFI mode. On Linux:
sudo dd if=Fedora-Workstation-Live-x86_64-40-1.14.iso \
of=/dev/sdX bs=4M status=progress oflag=sync
# Replace /dev/sdX with the correct USB device — check with lsblk first
Partitioning with the Anaconda Installer
Boot from the USB, select Install to Hard Drive. At the Installation Destination screen:
- Select the hard drive containing Windows
- Select Custom storage configuration → Done
Create mount points on the Unallocated space:
/boot/efi— select the existing EFI partition, mount only, do not reformat (reformatting will erase the Windows boot entry)/boot— 1GB, ext4/— remaining space, Btrfs (Fedora default, supports snapshot rollback)- swap — optional; Fedora uses zram by default if skipped
Handling Secure Boot — MOK Enrollment
After installation completes and on the first boot, if Secure Boot is enabled, the MOK Management screen (green background, resembling an old BIOS) will appear. This is normal — do not turn off the machine.
Select Enroll MOK → Continue → enter the password you set during installation → Reboot. This step registers the shim loader’s key into the UEFI firmware, allowing Fedora to boot with Secure Boot enabled.
Configuring GRUB2 and UEFI
Checking Boot Entries in UEFI
sudo efibootmgr -v
# Sample output:
# BootCurrent: 0000
# BootOrder: 0000,0001
# Boot0000* fedora HD(1,GPT,...)/File(\EFI\fedora\shimx64.efi)
# Boot0001* Windows Boot Manager HD(1,GPT,...)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
Fedora should be the first entry in BootOrder. If not, fix it:
sudo efibootmgr --bootorder 0000,0001
Configuring Timeout and Default OS
sudo nano /etc/default/grub
Edit the following lines:
GRUB_TIMEOUT=10 # Wait time in seconds
GRUB_DEFAULT=saved # Remember the last selection
GRUB_SAVEDEFAULT=true # Save the selection as default
Rebuild grub config:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
If you want Windows as the default OS:
# List menu entries with their index
awk -F\' '/menuentry / {print i++, $2}' /boot/grub2/grub.cfg
# Set Windows as default (replace with the corresponding index)
sudo grub2-set-default 2
Recovering GRUB2 After Windows Update Overwrites It
Windows Feature Updates sometimes reset the BootOrder back to Windows Boot Manager. The symptom: the machine boots straight into Windows with no GRUB menu visible. Boot from a Fedora Live USB, select Try Fedora:
# Identify the Fedora root partition
lsblk -f
# Mount the filesystem (replace sdaX, sdaY, sda1 accordingly)
sudo mount /dev/sdaX /mnt
sudo mount /dev/sdaY /mnt/boot
sudo mount /dev/sda1 /mnt/boot/efi
# Bind mount pseudo-filesystems
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
# Chroot and reinstall GRUB2
sudo chroot /mnt
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=fedora
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
Reboot — the GRUB menu will reappear with both OSes listed. I’ve had to do this procedure twice in the first year; since getting into the habit of checking BootOrder after every Windows update, I haven’t been caught off guard again.
Post-Installation Verification and Monitoring
Fixing Clock Drift Between Windows and Linux
This is the issue I encounter most often: after using Windows and booting into Fedora, the clock is 9 hours off (UTC+9 in Japan). The cause: Linux stores the hardware clock in UTC, while Windows stores it in local time.
The fix: tell Windows to use UTC. Run in Command Prompt (Administrator):
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
On Fedora:
sudo timedatectl set-local-rtc 0
sudo timedatectl set-ntp true
timedatectl status
Confirming Secure Boot Is Still Active
# Check the status
mokutil --sb-state
# Expected output: SecureBoot enabled
# Check enrolled MOK keys
mokutil --list-enrolled | grep -A2 "Subject:"
Backing Up Boot Configuration and Automated Check Script
# Backup EFI entries and grub config
sudo efibootmgr -v > ~/efi-backup-$(date +%Y%m%d).txt
sudo cp /boot/grub2/grub.cfg ~/grub-backup-$(date +%Y%m%d).cfg
# Script to check GRUB is still the default boot entry
cat > ~/check-grub.sh << 'EOF'
#!/bin/bash
FEDORA_ENTRY=$(efibootmgr | grep -i fedora | awk '{print $1}' | tr -d 'Boot*')
BOOT_ORDER=$(efibootmgr | grep BootOrder | awk -F: '{print $2}' | awk '{print $1}')
if [ "$BOOT_ORDER" != "$FEDORA_ENTRY" ]; then
echo "WARN: Fedora is not the default boot entry, fixing..."
sudo efibootmgr --bootorder ${FEDORA_ENTRY},$(efibootmgr | grep BootOrder | awk -F: '{print $2}' | sed "s/ ${FEDORA_ENTRY}//g" | tr -d ' ')
fi
EOF
chmod +x ~/check-grub.sh
Mounting the Windows Drive from Fedora for File Sharing
# Install ntfs-3g if not already installed
sudo dnf install ntfs-3g
# Mount the C:\ drive (replace /dev/sdaX)
sudo mount -t ntfs-3g /dev/sdaX /mnt/windows
ls /mnt/windows/Users/
If Windows wasn’t shut down properly (Fast Startup is still enabled), ntfs-3g will mount as read-only. The fix: go to Windows → Power Options → uncheck Turn on fast startup. For hibernate, disable it with powercfg /h off in an Administrator CMD.
After nearly 2 years with this setup, I’ve found that dual boot on UEFI is far more stable than it was with Legacy BIOS. The key thing to watch is after every major Windows update — open a terminal and check efibootmgr before restarting. It takes 30 seconds but saves hours of chroot recovery work.
