I just now encountered this issue. I booted a rescue USB stick. Let me describe the fix that worked for me.
Prowling around with gdisk -l /dev/sda
I can see that my original root partition is /dev/sda2
. To access it, I type sudo mount /dev/sda2 /mnt
So far, so good. Let me first describe what didn't work, and then a solution. Some pages advise chroot /mnt
and then grub-install
, but this won't work; giving the grub-install: error: cannot find EFI directory.
error.
Following other suggestions, I see that my EFI partition is /dev/sda1
so I try sudo mount /dev/sda1 /mnt/boot/efi
and chroot again. Now, grub complains about missing /dev
so I mount --bind /dev/ /mnt/dev
. ... But then grub complains about something else. It's snowballing out of control. chroot
is not the answer.
What did work was this: grub-install -d /mnt/usr/lib/grub/x86_64-efi --boot-directory=/mnt/boot /dev/sda
Note that the -d
flag is mandatory, as otherwise, grub tries to use /usr/lib/grub/i386-pc
from the rescue image, which does not contain the correct stuff.
Yayy! My system is now bootable again!