On a very ordinary day I decided to upgrade my Plex server from Fedora Server 27 to version 29. When I rebooted, Grub failed to find anything bootable. Then my day stopped being ordinary.
Luckily I snapshotted the VM first, since figuring this out involved restoring and trying again more times than I’d like to admit. But enough of my story of woe. If you’re here, you just want to know how to fix grub!
The relevant information is in Fedora’s official documentation, but I’ll give you the quick version of what worked for me: https://fedoraproject.org/wiki/GRUB_2?rd=Grub2#Updating_GRUB_2_configuration_on_UEFI_systems
Likely you rebooted before noticing something was wrong. If this was a VM that you have a working snapshot of, restore the snapshot and skip ahead to “Fixin’ Time!”. If not, boot a Fedora live DVD, choose rescue, then option 1 to mount all of your partitions.
Once mounted, follow the on-screen instructions to chroot into your mounted partition.
Make sure /boot and /boot/efi are mounted. If not, this fix won’t work.
mount /boot && mount /boot/efi
If you’ve got a standard installation like mine, you won’t have the grub tools installed, so install them.
dnf install grub2-efi-x64 shim-x64
Now the magic step.
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Do NOT run grub2-install. This is not for EFI systems and will end up with getting nothing but a blank Grub prompt.
That’s it! You should have a working Grub menu now. If not, you may need to try some of the additional steps listed in Fedora’s documentation linked above.