3 minutes
How to Fix Missing GRUB Boot Menu after a Windows Update
You’ve installed your favorite Linux distro alongside Windows and have been happily enjoying the best of both worlds, without having to override your Windows installation. This is possible thanks to the incredible bootloader: GRUB.
Until one day you notice that the GRUB boot menu no longer appears, causing your computer to automatically boot on Windows — locking you out of your Linux installation. If you have been plagued by this issue, cursing Linux or GRUB will be of no help. The real culprit here is Windows.
Here is what actually happened. Unlike GRUB which is intelligent by design to detect the presence of other operating systems, the Windows bootloader doesn’t take into account other operating systems that are installed on the computer. Whenever a major Windows update is available, the GRUB bootloader gets replaced by the Windows bootloader. Therefore, in order to bring back the GRUB boot menu, all we have to do is replace the Windows bootloader with GRUB.
Restore Missing GRUB Boot Menu
The instructions below explain how to restore / reinstall GRUB on Ubuntu, Debian, Manjaro, Arch Linux and other derivatives.
Step 1: Boot from a Live USB
First, you need to boot from a live Linux USB. Then, open a Terminal window.
Step 2: Identify Root Partition and EFI Partition
Run the following command to determine the current root
and EFI
partitions:
lsblk -io KNAME,MOUNTPOINT | grep "/"
We’ll now create shell variables to denote the root
and EFI
partitions:
Caution
$ROOT_PART
and $EFI_PART
with the proper partition names you obtained above! Also, don't forget to add /dev/
in front of the partition name as shown below:export ROOT_PART="/dev/nvme0n1p5"
export EFI_PART="/dev/nvme0n1p1"
Step 3: Mount Root Partition and EFI Partition
Next, mount these partitions and set proper permissions:
sudo mount $ROOT_PART /mnt
sudo mount $EFI_PART /mnt/boot/efi
sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /proc /mnt/proc
sudo mount -o bind /sys /mnt/sys
sudo mount -o bind /run /mnt/run
sudo chroot /mnt/
Step 4: Fix GRUB Installation
Once the proper partitions have been mounted, run the appropriate commands below depending on your Linux distro.
- Ubuntu and Debian derivatives (For UEFI or Non-UEFI):
sudo apt-get install --reinstall grub-efi
sudo update-grub
- Manjaro and Arch Linux derivatives (For UEFI):
sudo pacman -S grub efibootmgr os-prober
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
- Manjaro and Arch Linux derivatives (For Non-UEFI):
sudo pacman -S grub
sudo grub-install --recheck --target=i386-pc $ROOT_PART
sudo grub-mkconfig -o /boot/grub/grub.cfg
Step 5: Reboot
Finally, restart your computer and you should be good to boot on Linux again :)
sudo reboot
Tip
If you still don’t see the GRUB boot menu, you’ll need to change the boot order in the BIOS. It is also possible to do this from Windows without entering the BIOS as explained below.
Changing GRUB Boot Order in Windows
The following steps will enable you to change the boot order priority to set GRUB as the preferred bootloader without entering the BIOS.
Step 1
In Windows, click on the Start Menu and search for “Command Prompt”.
Step 2
Right click on the Command Prompt menu option and click “Run as administrator”.
Note
Step 3
Copy and paste the appropriate command below depending on your Linux distro in the Command Prompt window and press ENTER:
- For Ubuntu:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
- For Manjaro:
bcdedit /set {bootmgr} path \EFI\Manjaro\grubx64.efi
- For Arch Linux:
bcdedit /set {bootmgr} path \EFI\Arch\grubx64.efi
Next, reboot your machine and you should see the GRUB boot menu again :)
# Footnotes
https://wiki.archlinux.org/title/GRUB
https://www.bleepingcomputer.com/forums/t/734220/lost-my-grub-menu-on-manjarowin-10-dual-boot/
Comments
GUEST
ADMIN
GUEST
ADMIN
GUEST
ADMIN
GUEST
Please wait...