Cover banner image for fixing 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 "/"
List / View root and EFI partitions on Linux

We’ll now create shell variables to denote the root and EFI partitions:


Make sure to set the variables $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.

  1. Ubuntu and Debian derivatives (For UEFI or Non-UEFI):
sudo apt-get install --reinstall grub-efi
sudo update-grub
  1. 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
  1. 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


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”.


It is important to open the Command Prompt with Administrator privileges, otherwise the step below will not work!
Open Windows Command Prompt as administrator

Step 3

Copy and paste the appropriate command below depending on your Linux distro in the Command Prompt window and press ENTER:

  1. For Ubuntu:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
  1. For Manjaro:
bcdedit /set {bootmgr} path \EFI\Manjaro\grubx64.efi
  1. 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