fedora grub entries disappearing
fedora grub entries disappearing after kernel updates, here’s why and how to fix it
Every kernel update, your Fedora boot entry vanishes from UEFI. Duplicate bad entries confuse the system. Delete them, add a hook, problem solved.
July 24, 2026 · 5 min
Every time a new kernel arrives via dnf upgrade, your Fedora EFI boot entry disappears. You reboot and the UEFI firmware can’t find Fedora anymore. You have to manually regenerate GRUB and recreate the boot entry. Again.
This is a Fedora issue with duplicate or malformed boot entries in the UEFI firmware. The kernel update process has hooks that regenerate GRUB, but if you have bad entries sitting there, the system gets confused and deletes the good one instead of refreshing it.
understanding the problem
Your UEFI firmware has a boot entry list. When Fedora installs, it creates entries that point to shimx64.efi (the bootloader). If something goes wrong during install or updates, you can end up with multiple Fedora entries, some pointing to grubx64.efi directly, some pointing to shimx64.efi. Some might even point to partitions that don’t exist anymore.
When a kernel update runs grub2-mkconfig and grub2-install, those tools look at the boot entries. If they see duplicates or malformed entries, they get paranoid and start deleting things to clean up. Sometimes they delete the good entry by mistake.
checking your current state
First, see what boot entries you actually have:
sudo efibootmgr -v | grep -i fedora
If you see multiple Fedora entries, that is the problem. You should only have ONE. Boot0006 in my case, which points to shimx64.efi, not grubx64.efi.
Also check if your EFI partition is mounted in fstab:
grep /boot/efi /etc/fstab
Should show something like:
UUID=87A5-9EED /boot/efi vfat defaults,uid=0,gid=0,umask=0077,shortname=winnt 0 2
If it has noauto, change it to defaults so the EFI partition stays mounted.
my situation
I had this:
Boot0001* \EFI\fedora\grubx64.efi pointing to sda1
Boot0002* \EFI\fedora\grubx64.efi pointing to a UUID that doesn't exist
Boot0006* Fedora pointing to shimx64.efi on sda1
Boot0001 and Boot0002 were duplicates created during installs. They pointed directly to grubx64.efi instead of shimx64.efi. When kernel updates ran, GRUB saw three entries, got confused, and deleted or broke them.
the fix
Three steps. Delete the bad entries, install a kernel hook, set the boot order.
step 1 – delete duplicate entries
First, identify which ones to delete. grubx64.efi directly is wrong. shimx64.efi is correct. Delete anything that points to grubx64.efi without shimx64.efi in the path.
sudo efibootmgr --bootnum 1 --delete-bootnum
sudo efibootmgr --bootnum 2 --delete-bootnum
Replace 1 and 2 with whatever your bad entries are. Verify they are gone:
sudo efibootmgr -v | grep -i fedora
Should show only ONE entry now. Mine is Boot0006.
step 2 – install a kernel post-install hook
This is the key. Every time a kernel updates, Fedora runs scripts in /etc/kernel/postinst.d/. You can add your own hook there that regenerates GRUB after the update.
Create the directory if it does not exist:
sudo mkdir -p /etc/kernel/postinst.d
Now create the hook script:
sudo bash -c 'cat > /etc/kernel/postinst.d/99-grub-regenerate << "EOF"
#!/bin/bash
/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
/usr/sbin/grub2-install --efi-directory=/boot/efi --force /dev/sda
EOF
chmod +x /etc/kernel/postinst.d/99-grub-regenerate
'
What this does. After a kernel install finishes, this script runs. It regenerates the GRUB config file with the new kernel, then reinstalls the bootloader to the EFI partition. The –force flag bypasses paranoia about Secure Boot.
Verify it was created:
ls -la /etc/kernel/postinst.d/
cat /etc/kernel/postinst.d/99-grub-regenerate
step 3 – set boot order
Make sure your good Fedora entry is first in the boot order:
sudo efibootmgr --bootorder 0006,0000,0003,0004,0005
Replace 0006 with your actual Fedora boot entry number. Replace the rest with whatever else you have (USB, NVMe, DVD, etc). Verify:
sudo efibootmgr -v | head -5
Should show your Fedora entry (0006 or whatever) as first.
why this works
Before: duplicate entries exist, kernel update runs GRUB tools, tools see multiple entries and get confused, they delete something or fail to regenerate, you lose your boot entry.
After: only one correct entry exists, kernel update runs GRUB tools, tools see one entry and regenerate it properly, the hook makes sure GRUB is reinstalled to the EFI partition, your entry sticks through every update.
The hook is the permanent fix. It ensures that no matter what GRUB does during a kernel update, the bootloader gets reinstalled and the entry stays valid.
testing it
When the next kernel update comes, run:
sudo dnf upgrade
Let it install. After it finishes, reboot:
sudo systemctl reboot
Fedora should boot normally. Then check:
sudo efibootmgr -v | grep -i fedora
Your entry should still be there. If it is, the hook worked and your entries will stick from now on.
why you have to do this
Fedora’s default install creates boot entries. If you have other distros on other drives or if something goes wrong during install, you can end up with duplicates or malformed entries. The kernel update process assumes entries are clean. If they are not, things break.
The hook fixes it by making sure GRUB is regenerated and reinstalled after every update. It is not a Fedora default but it should be. This is why I keep notes and document it.
takeaway
Duplicate UEFI boot entries cause GRUB to break during kernel updates. Delete the bad ones. Install a kernel post-install hook to regenerate and reinstall GRUB after every update. Set the correct entry first in boot order.
After that, your Fedora entry stays put through every kernel update you throw at it.

Leave a Reply