The Situation

I woke up one fine day, powered on my laptop, expecting the usual GRUB menu where I choose between Kali Linux and Windows 11. But instead, the system booted straight into Windows.

No GRUB. No Kali. No mercy.

I opened my BIOS boot menu hoping to manually select Kali, but the only things listed were:

Windows Boot Manager
EFI PXE Network (which I don't use)

That’s when I realized: The BIOS update I recently installed wiped my GRUB boot entry.

My data was still there β€” just the bootloader had vanished.


🧠 Understanding What Happened

Your system uses UEFI firmware to remember boot entries. When you dual boot, it looks like this:

[UEFI Firmware]
      |
      v
+-----------------+
| GRUB Bootloader  |
+-----------------+
   |          |
   v          v
Kali Linux   Windows

But after the BIOS update:

[UEFI Firmware]
      |
      v
+------------------------+
| Windows Boot Manager   |
+------------------------+
           |
           v
       boots Windows only

GRUB wasn’t deleted β€” its boot entry was just erased.


πŸ’‘ Goal

Restore the GRUB boot entry without reinstalling anything. No formatting, no fresh installs β€” just fixing boot logic.

Final expected result:

GRUB Menu
β”œβ”€β”€ Kali Linux
└── Windows Boot Manager

Step 1 β€” Boot Into Kali Live Mode

I created/brought my existing Kali Live USB, plugged it in, and rebooted.

I opened the boot menu and this is important:

I selected the entry that said UEFI: <USB Name> β€” NOT the legacy one.

To confirm I really booted in UEFI mode:

ls /sys/firmware/efi

If this directory exists, I’m in UEFI mode βœ… If not β†’ reboot and select UEFI USB entry ❌


Step 2 β€” Identify My Linux and EFI Partitions

I ran:

sudo fdisk -l

I found:

PurposePartition
Kali Root Filesystem/dev/nvme0n1p7
Kali EFI Partition/dev/nvme0n1p4
Windows EFI Partition/dev/nvme0n1p1

It’s critical to identify these correctly.


Step 3 β€” Mount Kali System and Enter It

I mounted my system like this:

sudo mount /dev/nvme0n1p7 /mnt
sudo mount /dev/nvme0n1p4 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount --bind $i /mnt$i; done
sudo chroot /mnt

At this point, I was inside my installed Kali.


Step 4 β€” Reinstall GRUB

grub-install /dev/nvme0n1
update-grub

When update-grub ran, I got:

Found Windows Boot Manager on /dev/nvme0n1p1

Perfect.


Step 5 β€” The Critical Part I Almost Missed

When I first tried to restore the boot entry, I got:

EFI variables are not supported on this system.

This means EFI vars weren’t mounted, so I fixed it:

mount -t efivarfs efivarfs /sys/firmware/efi/efivars

Without this, efibootmgr WILL FAIL.


Step 6 β€” Recreate the GRUB UEFI Boot Entry

efibootmgr -c -d /dev/nvme0n1 -p 4 -l "\EFI\kali\grubx64.efi" -L "Kali Linux"

Then I checked:

efibootmgr

I got:

Boot0003* Kali Linux
Boot0004* Windows Boot Manager

Beautiful.


Step 7 β€” Make Kali (GRUB) Boot First

efibootmgr -o 0003,0004

This sets the boot order like:

1. Kali (GRUB)
2. Windows Boot Manager

Step 8 β€” Reboot (Without USB)

exit
reboot

GRUB appeared. My dual boot was fully back.


βœ… Final State

[UEFI Firmware]
       |
       v
+-----------------+
| GRUB Bootloader |
+-----------------+
   |          |
   v          v
Kali Linux   Windows

πŸ›‘οΈ Bonus: Prevent This Happening Again

Disable Windows Fast Startup (this prevents EFI entries from being overwritten):

Control Panel β†’ Power Options β†’ Choose what the power buttons do β†’ Disable Fast Startup

Conclusion

I didn’t reinstall anything. I didn’t lose data. I didn’t break Windows.

I simply restored GRUB the correct way.

If your system suddenly forgets about Linux β€” don’t panic. Your data is still there. You just need to remind your motherboard that Kali exists πŸ˜‰

Happy hacking πŸ‰πŸ’»