#1139922 grub-install --force-extra-removable create broken BOOT directory

Package:
grub-efi-amd64-signed
Source:
grub-efi-amd64-signed
Description:
GRand Unified Bootloader, version 2 (amd64 UEFI signed by Debian)
Submitter:
Harald Dunkel
Date:
2026-06-21 17:29:02 UTC
Severity:
normal
#1139922#5
Date:
2026-06-13 14:58:11 UTC
From:
To:
Package: grub-efi-amd64-signed
Version: 1+2.12-9+deb13u2

Using "grub-install --force-extra-removable" it seems the BOOT entry written to
/boot/efi/EFI lacks a grub.cfg file. It doesn't boot. I just get a grub prompt
at boot time. Example:


# rm -rf /boot/efi/EFI/*
# grub-install --recheck --efi-directory=/boot/efi --bootloader-id=usbpc --force-extra-removable
# find /boot/efi/EFI -ls
        4      4 drwxr-xr-x   4 root     root         4096 Jun 13 14:04 /boot/efi/EFI/
       19      4 drwxr-xr-x   2 root     root         4096 Jun 13 14:04 /boot/efi/EFI/usbpc
       20    936 -rwxr-xr-x   1 root     root       957136 Jun 13 14:04 /boot/efi/EFI/usbpc/shimx64.efi
       21   2624 -rwxr-xr-x   1 root     root      2684352 Jun 13 14:04 /boot/efi/EFI/usbpc/grubx64.efi
       22    832 -rwxr-xr-x   1 root     root       850176 Jun 13 14:04 /boot/efi/EFI/usbpc/mmx64.efi
       23     88 -rwxr-xr-x   1 root     root        87888 Jun 13 14:04 /boot/efi/EFI/usbpc/fbx64.efi
       24      4 -rwxr-xr-x   1 root     root          108 Jun 13 14:04 /boot/efi/EFI/usbpc/BOOTX64.CSV
       30      4 -rwxr-xr-x   1 root     root          201 Jun 13 14:04 /boot/efi/EFI/usbpc/grub.cfg
       25      4 drwxr-xr-x   2 root     root         4096 Jun 13 14:04 /boot/efi/EFI/BOOT
       26    936 -rwxr-xr-x   1 root     root       957136 Jun 13 14:04 /boot/efi/EFI/BOOT/BOOTX64.EFI
       27   2624 -rwxr-xr-x   1 root     root      2684352 Jun 13 14:04 /boot/efi/EFI/BOOT/grubx64.efi
       28    832 -rwxr-xr-x   1 root     root       850176 Jun 13 14:04 /boot/efi/EFI/BOOT/mmx64.efi
       29     88 -rwxr-xr-x   1 root     root        87888 Jun 13 14:04 /boot/efi/EFI/BOOT/fbx64.efi


If I generate the regular boot entry using a dedicated boot loader id and the
"removable" BOOT entry in 2 steps, then it works as expected:

# rm -rf /boot/efi/EFI/*
# grub-install --recheck --efi-directory=/boot/efi --no-nvram --removable
# find /boot/efi/EFI -ls
        4      4 drwxr-xr-x   3 root     root         4096 Jun 13 14:09 /boot/efi/EFI/
       31      4 drwxr-xr-x   2 root     root         4096 Jun 13 14:09 /boot/efi/EFI/BOOT
       32    936 -rwxr-xr-x   1 root     root       957136 Jun 13 14:09 /boot/efi/EFI/BOOT/BOOTX64.EFI
       33   2624 -rwxr-xr-x   1 root     root      2684352 Jun 13 14:09 /boot/efi/EFI/BOOT/grubx64.efi
       34    832 -rwxr-xr-x   1 root     root       850176 Jun 13 14:09 /boot/efi/EFI/BOOT/mmx64.efi
       35      4 -rwxr-xr-x   1 root     root          108 Jun 13 14:09 /boot/efi/EFI/BOOT/BOOTX64.CSV
       36      4 -rwxr-xr-x   1 root     root          201 Jun 13 14:09 /boot/efi/EFI/BOOT/grub.cfg

# grub-install --recheck --efi-directory=/boot/efi --bootloader-id=usbpc
# find /boot/efi/EFI -ls
        4      4 drwxr-xr-x   4 root     root         4096 Jun 13 14:11 /boot/efi/EFI/
       31      4 drwxr-xr-x   2 root     root         4096 Jun 13 14:09 /boot/efi/EFI/BOOT
       32    936 -rwxr-xr-x   1 root     root       957136 Jun 13 14:09 /boot/efi/EFI/BOOT/BOOTX64.EFI
       33   2624 -rwxr-xr-x   1 root     root      2684352 Jun 13 14:09 /boot/efi/EFI/BOOT/grubx64.efi
       34    832 -rwxr-xr-x   1 root     root       850176 Jun 13 14:09 /boot/efi/EFI/BOOT/mmx64.efi
       35      4 -rwxr-xr-x   1 root     root          108 Jun 13 14:09 /boot/efi/EFI/BOOT/BOOTX64.CSV
       36      4 -rwxr-xr-x   1 root     root          201 Jun 13 14:09 /boot/efi/EFI/BOOT/grub.cfg
       37      4 drwxr-xr-x   2 root     root         4096 Jun 13 14:11 /boot/efi/EFI/usbpc
       38    936 -rwxr-xr-x   1 root     root       957136 Jun 13 14:11 /boot/efi/EFI/usbpc/shimx64.efi
       39   2624 -rwxr-xr-x   1 root     root      2684352 Jun 13 14:11 /boot/efi/EFI/usbpc/grubx64.efi
       40    832 -rwxr-xr-x   1 root     root       850176 Jun 13 14:11 /boot/efi/EFI/usbpc/mmx64.efi
       41     88 -rwxr-xr-x   1 root     root        87888 Jun 13 14:11 /boot/efi/EFI/usbpc/fbx64.efi
       42      4 -rwxr-xr-x   1 root     root          108 Jun 13 14:11 /boot/efi/EFI/usbpc/BOOTX64.CSV
       43      4 -rwxr-xr-x   1 root     root          201 Jun 13 14:11 /boot/efi/EFI/usbpc/grub.cfg


Regards

Harri

#1139922#10
Date:
2026-06-14 09:02:57 UTC
From:
To:
Note that this issue is not directly related with grub-efi-amd64-signed.
This package only signs the monolithic images built by grub2 source
package an shipped in grub-efi-amd64-unsigned binary package.

The normal monolithic image grubx64.efi has $prefix hardcoded to
/EFI/debian and originally only looked up grub.cfg in this path, so it
made no sense to install a copy of grub.cfg in /EFI/BOOT. Currently it
searches grub.cfg in the image path ($fw_path), then in $prefix.
Executing it from the removable media path /EFI/BOOT works with the
default $GRUB_DISTRIBUTOR or --bootloader-id (Debian) because grub.cfg
is installed in /EFI/debian, but not with a custom one.

However when grub-install --force-extra-removable is executed without
--no-nvram, a copy of fbx64.efi is installed in /EFI/BOOT. When 
shimx64.efi is invoked as /EFI/BOOT/BOOTX64.EFI, it executes fbx64.efi
if present, or grubx64.efi otherwise. fbx64.efi scans
/EFI/*/BOOTX64.CSV, re-creates EFI boot entries for each found and
chainloads one of them. In your case, it should find
/EFI/usbpc/BOOTX64.CSV and chainload /EFI/usbpc/shimx64.efi, so
/EFI/BOOT/grubx64.efi should not be executed. This works as expected for
me in a QEMU virtual machine.

However grub-install --force-extra-removable --no-nvram does not install
fbx64.efi in /EFI/BOOT so IMO it should install a copy of grub.cfg in
/EFI/BOOT.

Note that --no-nvram is implicit with --removable.

#1139922#15
Date:
2026-06-21 13:28:06 UTC
From:
To:
What happens if I use --bootloader-id to set a new ID, and there already
is a "debian" in nvram, eg from a previous run or from another bootable
disk? Is /boot/efi/EFI/debian renamed or removed on setting a bootloader
ID?

I think it should be made much more visible in the man page that grub-
install sets up just one or two directories of boot loader items, and
that it doesn't clean up if there is a mess.

Just my $0.02 of course.

Regards
Harri

#1139922#20
Date:
2026-06-21 17:26:26 UTC
From:
To:
No. Why would it ?