- 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
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
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.
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
No. Why would it ?