When you try to boot a EFI removable drive, the firmware looks for the executable at
/EFI/BOOT/BOOTX64.EFI (or at
/EFI/BOOT/BOOTIA32.EFI if the system is 32-bit). This is the usual location where the bootloader is expected to be present if the system is meant to be removable.
The Ubuntu installation expects that the drive will be non-removable, and so installs GRUB into some other location under /EFI. This is usually not an issue, as it also creates a EFI boot entry which contains GRUB’s location. However, boot entries are machine-specific, so if you move the drive, the other computer won’t be able to find GRUB.
The solution is to boot into the system on the original machine where it was installed (it should still contain the needed boot entry). If it’s not possible, an alternative is to chroot into your Ubuntu from some other Linux machine. Then you can run
grub-install with the
--removable flag to install GRUB to one of the removable bootloader paths.
Read more here: Source link