It's a common frustration for dual-boot users: you install a Windows 11 update, reboot your computer, and suddenly your familiar GRUB menu is gone, replaced by Windows booting directly. This happens because Windows updates, particularly major feature updates, often overwrite the boot sector (MBR for older systems or the EFI System Partition for modern UEFI systems) with the Windows Boot Manager, effectively sidelining GRUB.
Fortunately, this doesn't mean your Linux installation is lost. You can repair the GRUB bootloader and restore access to both operating systems. This guide provides comprehensive methods to fix the issue.
The bootloader is a critical piece of software that loads your operating system when you turn on your computer. In a dual-boot system with Windows and Linux, GRUB (GRand Unified Bootloader) typically manages the boot process, presenting a menu that allows you to choose which OS to start.
Windows, however, primarily recognizes its own bootloader. During updates, it may rewrite the boot information stored in the Master Boot Record (MBR) on older BIOS systems or the EFI System Partition (ESP) on modern UEFI systems. When this happens, the Windows Boot Manager takes precedence, and the GRUB menu is bypassed.
The method for repairing GRUB slightly differs depending on whether your system uses UEFI (Unified Extensible Firmware Interface) or the older BIOS (Basic Input/Output System).
This guide primarily focuses on the more common UEFI systems but includes notes for BIOS where applicable.
To repair GRUB, you need to boot into a temporary Linux environment. The easiest way is using a live USB drive of your Linux distribution (e.g., Ubuntu, Fedora, Manjaro) or a dedicated repair tool.
Accessing the BIOS/UEFI boot menu is often required to boot from a USB drive.
This method involves using the command line from a live Linux environment. It offers more control but requires careful execution.
Start your computer from the live Linux USB you prepared. Choose the option to "Try" or run the live environment without installing.
Once in the live environment, open a terminal. You need to find out which partitions contain your installed Linux system's root filesystem (/
) and the EFI System Partition (ESP).
Use the lsblk
command:
lsblk
Look for your main hard drive (e.g., /dev/sda
, /dev/nvme0n1
). Identify the Linux root partition (often formatted as ext4 or btrfs) and the ESP (typically a smaller FAT32 partition around 100-500MB, often mounted at /boot/efi
in your installed system).
The lsblk
command helps identify your disk partitions.
Note down the identifiers (e.g., /dev/sda2
for root, /dev/sda1
for EFI).
Create mount points and mount your partitions. Replace /dev/sdXY
with your root partition and /dev/sdXZ
with your EFI partition.
sudo mount /dev/sdXY /mnt
# Example: sudo mount /dev/sda2 /mnt
# Mount the EFI partition (only for UEFI systems)
# Create the mount point if it doesn't exist within the mounted root
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sdXZ /mnt/boot/efi
# Example: sudo mount /dev/sda1 /mnt/boot/efi
To run commands as if you were logged into your installed Linux system, you need to mount several pseudo-filesystems and then use chroot
.
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run # Sometimes needed
Change the root environment to your mounted Linux installation:
sudo chroot /mnt
Your terminal prompt might change, indicating you are now operating within your installed system.
Now, reinstall GRUB. The command depends on whether your system uses UEFI or BIOS.
For UEFI systems (most common):
# Replace 'ubuntu' with your distribution's identifier if different (e.g., 'fedora', 'GRUB')
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck
# If the above fails, sometimes a simpler command works:
# grub-install --recheck /dev/sdX (Where sdX is the *drive*, not partition, e.g., /dev/sda)
For BIOS systems:
# Replace /dev/sdX with your main hard drive identifier (e.g., /dev/sda)
grub-install --recheck /dev/sdX
Generate a new GRUB configuration file. This step scans your drives for operating systems (including Windows) and adds them to the boot menu.
update-grub
# On some systems like Fedora, the command is:
# grub2-mkconfig -o /boot/grub2/grub.cfg
# Or for EFI systems on Fedora:
# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Note on os-prober
: For GRUB to detect Windows, the os-prober
utility must be installed and enabled. Most distributions include it. If Windows isn't detected, ensure os-prober
is installed (e.g., sudo apt install os-prober
on Debian/Ubuntu) and check if it's disabled in /etc/default/grub
(look for GRUB_DISABLE_OS_PROBER=false
). If you make changes, run update-grub
again.
Leave the chroot environment, unmount the filesystems, and reboot.
exit
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt/run # If you mounted it
sudo umount /mnt/boot/efi # For UEFI systems
sudo umount /mnt
sudo reboot
Remove the live USB when prompted. Your GRUB menu should now appear on startup.
If the manual method seems daunting, the Boot-Repair utility provides an automated way to fix common boot problems, including missing GRUB.
You can run Boot-Repair from:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install -y boot-repair
Boot your computer from the live USB containing Boot-Repair. Launch the Boot-Repair application (it might start automatically or you may need to search for it).
The Boot-Repair tool offers a simplified way to fix boot issues.
Click the "Recommended repair" button. The tool will analyze your system and attempt to automatically fix boot issues, including reinstalling GRUB and ensuring Windows is detected.
Follow any on-screen prompts. Once completed, Boot-Repair will usually provide a URL with logs (useful if further troubleshooting is needed). Reboot your computer.
This mindmap illustrates the core problem, the solutions, and important considerations when repairing GRUB after a Windows 11 update disrupts your dual-boot setup.
Choosing between manual repair and using Boot-Repair depends on your comfort level with the command line and the complexity of your setup. The radar chart below provides a comparison based on several factors:
As the chart suggests, Boot-Repair is generally easier and faster for standard issues, while manual repair offers more control and insight, albeit with a steeper learning curve.
After successfully reinstalling GRUB, the most crucial step is to check your computer's BIOS/UEFI settings. Windows updates can change the default boot device.
Example of a UEFI boot order menu where you prioritize your Linux bootloader.
If you encounter a black screen with only grub rescue>
, it means GRUB loaded but couldn't find its configuration file or necessary modules. This often happens if partitions were changed or GRUB's core files are missing/corrupted. The manual repair process described earlier (booting from live USB, chrooting, reinstalling GRUB) is usually the correct way to fix this.
The grub rescue>
prompt indicates a problem locating GRUB files.
efibootmgr
(Advanced)From a booted Linux system (either your installed one or a live environment), you can use the efibootmgr
command (install if necessary) to view and manage UEFI boot entries directly without entering the firmware setup. This can be useful for verifying or correcting the boot order.
sudo efibootmgr -v
: Lists all boot entries and their details.sudo efibootmgr -o XXXX,YYYY,...
: Sets the boot order (replace XXXX, YYYY with the numbers from the list).Here's a table summarizing the key commands used during the manual GRUB repair process:
Command | Purpose | Example Usage |
---|---|---|
lsblk |
List block devices (disks and partitions). | lsblk |
sudo mount /dev/sdXY /mnt |
Mount the Linux root partition. | sudo mount /dev/sda2 /mnt |
sudo mount /dev/sdXZ /mnt/boot/efi |
Mount the EFI System Partition (UEFI only). | sudo mount /dev/sda1 /mnt/boot/efi |
sudo mount --bind /dev /mnt/dev |
Bind mount the /dev directory. | sudo mount --bind /dev /mnt/dev |
sudo chroot /mnt |
Change root into the mounted Linux system. | sudo chroot /mnt |
grub-install --target=... |
Reinstall the GRUB bootloader (UEFI). | grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck |
grub-install /dev/sdX |
Reinstall the GRUB bootloader (BIOS). | grub-install --recheck /dev/sda |
update-grub |
Generate the GRUB configuration file (Debian/Ubuntu). | update-grub |
grub2-mkconfig -o ... |
Generate the GRUB configuration file (Fedora/RHEL). | grub2-mkconfig -o /boot/grub2/grub.cfg |
exit |
Exit the chroot environment. | exit |
sudo umount ... |
Unmount filesystems before rebooting. | sudo umount /mnt/dev |
Watching someone go through the process can be very helpful. This video provides a walkthrough of reinstalling the GRUB bootloader, covering concepts similar to those discussed in the manual repair section. While specifics might vary slightly based on your distribution, the general approach remains the same.