0

Update for Answer

For anyone who wants the authoritative source see section 13.3.1.3 of the standard which describes the directory structure.

Objective

Make a UEFI bootable Ubuntu Linux USB drive with an EFI partition for booting and Linux on a separate EXT4 partition. (Note: This is not my idea and I cannot deviate from these conditions otherwise I would do something more straightforward.)

What I Did

  1. Booted a live CD and went through the usual installation sequence
  2. When I got to partitioning created a 512MB EFI partition and made it bootable
  3. Set Ubuntu to use one partition with / mount point on an EXT4 filesystem
  4. Installed as normal
  5. Moved the USB drive to a different computer, tried to boot

Result

enter image description here

You click EFI USB Device and the screen flashes black briefly and immediately returns to the same screen. However, if I boot the USB drive on the computer where I originally installed - it works.

My Diagnosis

My understanding of the EFI boot process is at this stage that option should point at the grub.efi file at which point grub should fire up and then take over the boot sequence.

It looks like grub isn't starting based on what I'm seeing? If so, I don't understand why it doesn't. My understanding is that what is going on here is the system firmware scans all storage media for viable EFI partitions. The fact that this is populated tells me that it must have found this one on the USB correctly but then the stuff in the EFI partition here isn't working. I've looked in the EFI partition and what is odd to me is there is a single folder called EFI with a folder that has my system name, and then a single file called grubx64.efi. Should there be more in there?

1 Answer 1

2

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.

2
  • 1
    You are a champion my friend! That was exactly it. I just opened up the EFI folder, renamed things ad it worked immediately! Commented Apr 13, 2022 at 1:36
  • Please add to this old but current bug for installing UEFI grub to anything other than first drive. bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1396379 It also has various work arounds.
    – oldfred
    Commented Apr 13, 2022 at 13:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .