How to Dual Boot Fedora and Windows 10 on the Same Drive

Dual boot Fedora and Windows 10 by shrinking the Windows partition first, then installing Fedora alongside it so GRUB can manage both operating systems at startup.

The dual boot setup

You plugged in the Fedora USB, selected "Install to disk," and now the Windows Boot Manager is gone. Or worse, you are staring at a GRUB rescue prompt because the partition table got confused during the resize. Dual booting works reliably when you respect the partition boundaries and let GRUB do its job. The risk is not the operating system itself. The risk is the disk geometry and the boot firmware getting out of sync. Back up your data before touching partitions. A botched resize can wipe the drive.

How the boot firmware and partitions interact

Think of your drive as a house. Windows owns the living room and kitchen. Fedora needs a bedroom. You cannot build a wall inside the living room while Windows is running and expect the floor plan to update instantly. You have to shrink the living room first, create the empty space, then build the bedroom.

The boot process is the front door. UEFI firmware is the doorman. GRUB is the concierge who knows which key opens which door. If the concierge does not know about the bedroom, you cannot get in. Windows installs its own doorman and often forgets to tell the concierge about the other rooms. Fedora's installer fixes this by installing GRUB as the new concierge, but you have to make sure the door frame is shared correctly.

On UEFI systems, the door frame is the EFI System Partition. This is a small FAT32 partition that holds the bootloader files for all operating systems. Windows puts its files in /EFI/Microsoft/. Fedora puts its files in /EFI/Fedora/. Both OSes share this partition. If the installer creates a second EFI partition, the firmware might get confused about which one to read. Reuse the existing EFI partition during installation.

Prepare Windows before touching the disk

Windows has two features that fight Linux. BitLocker encrypts the drive. If Fedora tries to read the Windows partition, it sees garbage. Disable BitLocker before shrinking. Fast Startup leaves the NTFS filesystem in a hibernated state. If Fedora mounts that partition, it can corrupt the journal. Disable Fast Startup.

Open PowerShell as Administrator and run these commands to check the status.

# Check if BitLocker is enabled on the C drive
Manage-bde -status C:
# If protection is On, suspend or disable it before proceeding
# Manage-bde -off C:

# Check if Fast Startup is enabled
powercfg /h /type
# If hibernation is enabled, Fast Startup is likely active
# Disable hibernation to turn off Fast Startup
powercfg /h /off

Back up before you shrink. Partition tools can fail silently.

Create the installer and partition the drive

Download the Fedora Workstation ISO and write it to a USB drive. The dd command writes the image byte-for-byte. Ensure you target the USB device, not a partition.

# Write ISO to USB. /dev/sdX must be the USB device, not a partition.
# bs=4M speeds up the copy. status=progress shows the bar.
# oflag=sync ensures data is written before the command returns.
sudo dd if=Fedora-Workstation-Live-x86_64-41-1.4.iso of=/dev/sdX bs=4M status=progress oflag=sync

Boot from the USB. Press the boot menu key during POST. The key varies by manufacturer. F12, F10, or Del are common. Launch the Anaconda installer.

Select Custom partitioning. You need to control where Fedora goes. Select the free space you created in Windows. Let Fedora create its partitions automatically in that space, or create them manually.

If you create them manually, use this layout.

  • /boot/efi — 200 MB. Select the existing EFI partition. Do not format it. Just mount it here.
  • /boot — 1 GB ext4.
  • / — Remaining space. Btrfs or ext4.

Reuse the EFI partition. Multiple EFI partitions confuse the firmware.

Configure GRUB to see Windows

After installation, reboot. GRUB should show both Fedora and Windows Boot Manager. If Windows is missing, GRUB's os-prober tool is either disabled or cannot read the Windows partition.

Check the GRUB configuration. User modifications go in /etc/default/grub. Never edit files in /usr/lib/. Those files ship with the package and get overwritten on updates.

# Check if os-prober is disabled
grep GRUB_DISABLE_OS_PROBER /etc/default/grub
# If the output shows true, you must enable it
# Edit the file and change GRUB_DISABLE_OS_PROBER=true to false
sudo nano /etc/default/grub
# Regenerate the GRUB configuration
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

If os-prober runs but finds nothing, Fedora might lack the driver to read NTFS. Install ntfs-3g and try again.

# Install the NTFS driver required by os-prober
sudo dnf install ntfs-3g
# Regenerate the configuration again
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Run grub2-mkconfig after every kernel update. os-prober does not run automatically during package upgrades.

Recover GRUB when the boot menu vanishes

Windows updates sometimes overwrite the EFI boot order or corrupt the EFI partition. If Fedora fails to boot and you see a GRUB rescue prompt, you can repair the bootloader from the Live USB without reinstalling.

Boot the Fedora Live USB. Open a terminal. Mount the Fedora root partition and the EFI partition. Bind mount the system directories. Chroot into the installed system. Reinstall GRUB.

  1. Boot the Fedora Live USB and open a terminal.
  2. Identify the Fedora root partition and EFI partition using lsblk.
  3. Mount the root partition to /mnt.
  4. Mount the EFI partition to /mnt/boot/efi.
  5. Bind mount /dev, /proc, and /sys.
  6. Chroot into /mnt.
  7. Run grub2-install and grub2-mkconfig.
  8. Exit the chroot and reboot.
# Mount the root partition. Replace /dev/nvme0n1p3 with your actual root device.
sudo mount /dev/nvme0n1p3 /mnt
# Mount the EFI partition. Replace /dev/nvme0n1p1 with your EFI device.
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
# Bind mount system directories to make the chroot functional
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
# Enter the installed system
sudo chroot /mnt
# Reinstall GRUB to the EFI directory
grub2-install --target=x86_64-efi --efi-directory=/boot/efi
# Regenerate configuration
grub2-mkconfig -o /boot/grub2/grub.cfg
# Exit the chroot
exit
# Unmount everything and reboot
sudo umount -R /mnt
reboot

Chroot from the Live USB. You can fix a broken boot without reinstalling.

Common errors and fixes

If you see error: file '/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi' not found in GRUB, the EFI directory structure is broken. Windows might have moved its bootloader. Boot Windows, run bcdboot C:\Windows /s S: /f UEFI in an elevated command prompt to restore the Windows EFI files, then run grub2-mkconfig in Fedora.

If you get The disk contains an unclean file system when trying to mount the Windows partition in Fedora, Fast Startup is still active. Boot Windows, disable Fast Startup in Power Options, and shut down completely. Do not use Restart. Restart keeps the hibernation file intact.

SELinux does not interfere with GRUB configuration. The bootloader runs before the kernel loads the security policy. You can keep SELinux in enforcing mode without breaking the dual boot setup.

Check efibootmgr. The firmware order determines the default OS.

# List EFI boot entries. Look for both Fedora and Windows Boot Manager
sudo efibootmgr
BootCurrent: 0001
BootOrder: 0001,0000
Boot0000* Windows Boot Manager
Boot0001* Fedora

If the order is wrong, change it with sudo efibootmgr -o 0001,0000. The first entry boots by default.

Choose your boot and filesystem strategy

Use UEFI mode when your hardware is from the last decade and you want secure boot support. Use Legacy BIOS mode only when your hardware predates 2012 and lacks UEFI firmware. Use a separate drive for Windows when you want zero risk of partition table corruption during Linux updates. Use Btrfs for Fedora when you want subvolumes and snapshots for easy rollback. Use ext4 for Fedora when you prefer simplicity and maximum compatibility with older tools.

Trust the package manager. Manual GRUB edits drift away on updates.

Where to go next