How to Fix GRUB and Boot Issues on a Dual Boot System
You installed Linux alongside Windows on the same computer and now something is wrong with booting. Maybe GRUB (the Linux boot loader) does not appear and the computer boots straight into Windows. Maybe GRUB appears but Windows is missing from the menu. Maybe GRUB shows an error and drops to a command prompt. Or maybe a Windows update wiped GRUB entirely and you cannot get into Linux anymore. Dual boot systems have two operating systems sharing one boot process, and that process breaks more easily than a single-OS setup.
Understanding the boot process
On a dual boot system, the boot sequence works like this:
- The computer's firmware (UEFI or legacy BIOS) runs first and looks for a boot loader
- On most dual boot setups, GRUB is the boot loader. GRUB presents a menu listing both Linux and Windows
- You select an operating system from the GRUB menu, and GRUB hands off control to that OS
When this breaks, it is usually because GRUB was overwritten, the boot order in UEFI was changed, or the partition layout was modified by one of the operating systems.
GRUB disappeared — boots straight to Windows
This is the most common dual boot problem. You had a working dual boot, and after a Windows update or a BIOS/UEFI update, the computer goes directly to Windows without showing the GRUB menu.
What happened
Windows updates sometimes overwrite the UEFI boot order, putting the Windows Boot Manager first and removing or deprioritizing the GRUB entry. GRUB itself is still installed on your Linux partition — it just is not being called by the firmware anymore.
Fix from UEFI settings
- Restart the computer and enter UEFI settings (usually by pressing F2, Del, or F12 during boot — the key varies by manufacturer)
- Find the Boot Order or Boot Priority section
- Look for an entry called ubuntu, grub, or your Linux distribution name alongside Windows Boot Manager
- Move the Linux/GRUB entry above Windows Boot Manager in the priority list
- Save and exit. The computer should now boot to GRUB first, showing both Linux and Windows
Fix from Windows using bcdedit
If the GRUB entry does not appear in UEFI boot settings, you can add it from Windows. Open Command Prompt as Administrator and run:
- bcdedit /enum firmware — Lists all firmware boot entries. Look for the GRUB or Linux entry. If it exists, note its identifier
- bcdedit /set {fwbootmgr} displayorder {identifier} /addfirst — Moves the GRUB entry to the top of the boot order
Reinstall GRUB from a Linux live USB
If GRUB was completely removed (not just deprioritized), you need to reinstall it. Boot from a Linux live USB (the same distribution you have installed) and reinstall GRUB to the EFI System Partition:
- Boot from the live USB
- Open a terminal
- Identify your Linux root partition: run lsblk to list all partitions and find the one with your Linux installation (usually the largest ext4 partition)
- Mount it: sudo mount /dev/sdXN /mnt (replace sdXN with your actual partition)
- If you have a separate EFI partition, mount it too: sudo mount /dev/sdX1 /mnt/boot/efi (the EFI partition is usually the first small FAT32 partition, around 100 to 500 MB)
- Mount the necessary virtual filesystems: sudo mount --bind /dev /mnt/dev and sudo mount --bind /proc /mnt/proc and sudo mount --bind /sys /mnt/sys
- Chroot into your installation: sudo chroot /mnt
- Reinstall GRUB: grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
- Update the GRUB configuration: update-grub
- Exit the chroot: exit
- Reboot and remove the USB
Windows missing from GRUB menu
GRUB appears but only shows Linux — Windows is not listed. This usually means GRUB's configuration does not include an entry for the Windows boot loader.
Regenerate the GRUB configuration
Boot into Linux and open a terminal:
- sudo os-prober — This scans for other operating systems on the disk. It should detect Windows and output a line showing the Windows Boot Manager location
- If os-prober does not detect Windows, install it: sudo apt install os-prober (Debian/Ubuntu) or sudo pacman -S os-prober (Arch)
- Some Linux distributions disable os-prober by default for security. Check /etc/default/grub and make sure the line GRUB_DISABLE_OS_PROBER=false exists. Add it if it is missing
- Regenerate the GRUB configuration: sudo update-grub (Debian/Ubuntu) or sudo grub-mkconfig -o /boot/grub/grub.cfg (Arch/other)
After regenerating, reboot and the GRUB menu should now include a Windows entry.
Manual GRUB entry for Windows
If os-prober still does not detect Windows, you can add a manual entry. Edit /etc/grub.d/40_custom and add:
- A menuentry block that chainloads the Windows EFI boot loader from the EFI System Partition. The exact path is typically /EFI/Microsoft/Boot/bootmgfw.efi
Then run update-grub again. The manual entry will appear in the GRUB menu.
GRUB drops to a command line
Instead of showing a menu, GRUB shows a command prompt that says grub> or grub rescue>. This means GRUB is running but cannot find its configuration file or the kernel it needs to boot.
grub> prompt (normal command line)
GRUB loaded but could not find grub.cfg. You can boot manually:
- Find your Linux partition: type ls to list partitions, then ls (hd0,gpt2)/ (try different numbers) until you find one with a Linux filesystem
- Set the root: set root=(hd0,gptN)
- Load the kernel: linux /boot/vmlinuz root=/dev/sdXN
- Load the initramfs: initrd /boot/initrd.img
- Boot: boot
Once you are in Linux, run sudo update-grub and sudo grub-install to fix the configuration permanently.
grub rescue> prompt
This is a more limited environment that appears when GRUB cannot find its core modules. The fix is to boot from a live USB and reinstall GRUB entirely (see the reinstall steps above).
Preventing future boot problems
- After Windows updates: Major Windows updates can overwrite the boot order. Check the UEFI boot priority after major updates. Consider keeping a Linux live USB handy to reinstall GRUB if needed
- Partition changes: Never resize, move, or delete partitions used by the other OS. If Windows needs more space, do not shrink the Linux partition from Windows — use a Linux live environment for that. If Linux needs more space, do not modify the Windows partitions from Linux
- Separate drives: If possible, install Windows and Linux on separate physical drives. Each OS gets its own boot loader on its own drive, and you can switch between them using the UEFI boot menu (usually F12 at startup) without either OS interfering with the other's boot process
- Backup the EFI partition: The EFI System Partition contains the boot loaders for both operating systems. Backing up this small partition (usually under 500 MB) lets you restore the boot configuration without reinstalling anything
Dual boot help in Marion
If your dual boot system is broken and you cannot get into one or both of your operating systems, LuxuriousComputers in Marion can repair the boot loader, restore GRUB, fix partition configurations, and get both Windows and Linux booting correctly again without losing data on either installation.