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:
| Purpose | Partition |
|---|---|
| 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 ππ»