How to Dual Boot Fedora and Windows 11 (UEFI/GPT)

Shrink your Windows partition using Disk Management, then boot the Fedora installer to create a new Linux partition in the freed space while ensuring the bootloader installs to the EFI System Partition.

The scenario

You just finished shrinking your Windows 11 partition and booted the Fedora Workstation ISO. The installer sees the free space, but the default automatic partitioning option looks suspicious. You know a botched bootloader installation can lock you out of Windows entirely. You need to know exactly where the EFI System Partition lives, how GRUB shares it with Windows Boot Manager, and what to do when the dual-boot menu refuses to show up after the first reboot.

What is actually happening under the hood

Modern PCs use UEFI firmware instead of legacy BIOS. UEFI expects a specific partition layout on your drive: a GUID Partition Table (GPT) and a small FAT32 partition called the EFI System Partition (ESP). The ESP stores bootloaders as plain executable files. Windows places its bootloader in /EFI/Microsoft/Boot/bootmgfw.efi. Linux distributions place theirs in /EFI/fedora/grubx64.efi. The firmware reads a non-volatile RAM entry that points to one of these files.

When you install Fedora, the installer registers a new NVRAM entry and drops the GRUB EFI binary into the existing ESP. GRUB then acts as a chainloader. It presents a menu, and when you select Windows, it hands control back to the Windows Boot Manager. The entire process relies on both operating systems sharing that single FAT32 partition without overwriting each other. The ESP is not a Linux filesystem. It is a shared staging area that the firmware reads before any operating system loads. Treat it with care.

Preparing the Windows side

Windows 11 manages disk space aggressively. Fast Startup and hibernation lock the NTFS volume, which can cause the Fedora installer to refuse to write to the drive or mount it read-only. Disable Fast Startup before you shrink the partition. Open Control Panel, navigate to Power Options, and click Choose what the power buttons do. Uncheck Turn on fast startup and save changes. Reboot into Windows normally.

Open Disk Management by right-clicking the Start button and selecting Disk Management. Right-click your primary C: drive and choose Shrink Volume. Free up at least 60 GB. Fedora needs space for the root filesystem, swap, and future package updates. Leave the unallocated space exactly as it is. Do not format it. Do not create a new volume. The Fedora installer will claim it during the custom partitioning step.

Back up your critical data. Partition resizing carries a small risk of metadata corruption. A sudden power loss during the shrink operation can render the NTFS volume unreadable. Keep a recent backup on external media before proceeding. Run chkdsk /f in an elevated command prompt to clear any pending filesystem checks that might block the Linux installer.

Shrink the drive while Windows is fully awake. Never resize partitions from a hibernated state.

Installing Fedora alongside Windows

Boot from the Fedora installation media. The installer will detect the existing Windows installation and the unallocated space. Select Custom under Installation Destination to take manual control of the partition table. You will see a list of existing partitions, including the EFI System Partition and the Windows recovery and boot partitions.

Identify the ESP. It is typically 100 to 512 MB in size and formatted as FAT32. It usually mounts at /boot/efi. Do not format it. Do not change its mount point. The installer will automatically mount it if you leave the defaults alone. Create a new partition in the unallocated space for the root filesystem. Format it as ext4 and set the mount point to /. Create a swap partition if your system has less than 16 GB of RAM. Modern Fedora uses zram by default, so a dedicated swap partition is optional for most desktop workloads.

The bootloader installation path is the most critical step. The installer defaults to installing GRUB to the EFI System Partition. Verify that the Bootloader Installation Destination points to the existing ESP device, typically /dev/nvme0n1p1 or /dev/sda1. If the installer suggests creating a new EFI partition, cancel and start over. A second ESP will confuse the UEFI firmware and break the boot chain.

Begin the installation. The installer will mount the ESP, drop the GRUB EFI binary into /EFI/fedora/, and register a new NVRAM boot entry. It will also run os-prober to detect the Windows bootloader and generate a GRUB menu entry.

Leave the ESP untouched. The firmware expects exactly one FAT32 partition with the EFI flag set.

Fixing a missing Windows entry in GRUB

The installer sometimes fails to detect Windows during the first boot. This usually happens when os-prober runs before the Windows partition is fully unmounted, or when Secure Boot blocks the prober from reading the EFI directory. Boot into Fedora and check the GRUB configuration.

Here is how to verify whether the Windows entry exists in the current GRUB configuration.

grep -i windows /boot/grub2/grub.cfg # WHY: searches for the Windows menu entry in the generated config
grep -i chainloader /boot/grub2/grub.cfg # WHY: confirms GRUB knows how to hand off to the Windows bootloader
cat /boot/efi/EFI/fedora/grub.cfg # WHY: checks the fallback config in case the main path differs

If the search returns nothing, install os-prober and regenerate the configuration. Fedora ships os-prober by default, but it sometimes gets removed during minimal installs or gets blocked by a missing dependency.

sudo dnf install os-prober # WHY: ensures the external OS detection utility is present
sudo os-prober # WHY: runs the detector manually to see what it finds
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # WHY: rebuilds the GRUB menu using fresh detection results

If os-prober still returns empty, verify the ESP contents directly. The Windows bootloader must exist in the EFI directory for GRUB to chainload it.

ls -l /boot/efi/EFI/ # WHY: lists all bootloader directories on the shared ESP
ls -l /boot/efi/EFI/Microsoft/Boot/ # WHY: confirms the Windows boot manager binary is intact
file /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi # WHY: validates the file is a proper PE32 executable

You should see bootmgfw.efi in the Microsoft directory. If the file is missing, Windows Fast Startup or a disk check might have locked the volume. Reboot into Windows, run chkdsk /f, and shut down completely. Boot back into Fedora and run grub2-mkconfig again.

Run os-prober before you rebuild the config. Guessing the partition UUID wastes time.

Verifying the boot chain

A successful dual boot requires the UEFI firmware to recognize both bootloaders. Check the current boot order to ensure Fedora appears alongside Windows Boot Manager.

sudo efibootmgr # WHY: displays the UEFI NVRAM boot entries and their priority order
sudo efibootmgr -v # WHY: shows full paths and device mappings for each entry

Look for Fedora and Windows Boot Manager in the output. The BootOrder line shows which entry the firmware tries first. If Fedora is missing from the list, the installer failed to register the NVRAM entry. You can add it manually, but it is easier to reinstall GRUB to the ESP.

sudo grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Fedora # WHY: rewrites the EFI binary and registers the NVRAM entry
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # WHY: regenerates the menu after reinstalling the bootloader

Reboot the system. Hold the Shift key or tap F12 during startup to access the boot menu. Select Fedora. The GRUB menu should appear with both Fedora and Windows 11 listed. Select Windows to confirm the chainloader works. The Windows desktop should load without displaying a boot manager error.

Check efibootmgr before you trust the firmware. NVRAM entries get cleared after BIOS updates.

Common pitfalls and exact error messages

Secure Boot is enabled by default on most Windows 11 machines. Fedora signs its kernel and bootloader, so Secure Boot works out of the box. If you see Security policy prevents this firmware from being executed during boot, your firmware is blocking unsigned third-party drivers. Fedora's default installation does not require disabling Secure Boot. Keep it enabled unless you are compiling custom kernel modules that lack MOK signatures.

Fast Startup is the most common cause of partition lockouts. When Windows hibernates instead of shutting down, the NTFS filesystem remains in a dirty state. The Fedora installer will refuse to mount it and print NTFS is either inconsistent, or you don't have permission, or the disk is full. Disable Fast Startup in Windows before installing Linux.

GRUB sometimes fails to detect Windows when the ESP is mounted with incorrect permissions. The ESP must be mounted at /boot/efi with the umask=0077 option to protect bootloader files. Check your /etc/fstab entry for the ESP.

UUID=YOUR-ESP-UUID  /boot/efi  vfat  umask=0077,shortname=winnt  0  2

Edit /etc/fstab if the mount options differ. Never edit files in /usr/lib/. User modifications belong in /etc/. The package manager will overwrite /usr/lib/ files during updates. Run dnf upgrade --refresh weekly to keep the system current, but never force package installs that touch bootloader paths.

If the GRUB menu disappears entirely and the system boots straight into Windows, the UEFI firmware reset its boot order. Some motherboards prioritize Windows Boot Manager after a BIOS update or a CMOS clear. Access the firmware setup during POST and move Fedora to the top of the boot priority list.

If you need to change the default boot timeout or order, edit /etc/default/grub and run sudo grub2-mkconfig -o /boot/grub2/grub.cfg again. The GRUB_TIMEOUT variable controls how long the menu waits. The GRUB_DEFAULT variable sets the default entry. Use saved instead of a number if you want GRUB to remember your last selection.

Trust the package manager. Manual file edits drift, snapshots stay.

When to use this setup versus alternatives

Use native dual boot when you need full hardware access for both operating systems and want to run Windows-specific applications alongside a Linux desktop. Use a Windows VM under KVM/QEMU when you only need Windows for occasional software testing and want to avoid rebooting. Use WSL2 when you only need a Linux terminal inside Windows and do not care about native Linux desktop environments. Stay on a single Fedora installation when your workflow runs entirely in the cloud or inside containers.

Where to go next