if a fallback bootloader is installed, but the Grub packages are not set
up to manage it, inform the user about it. this setup is problematic if
the fallback bootloader is used as boot option (now or in the future),
so it's best to fix it up before a problem occurs.

for proxmox-boot-tool managed ESPs, we always install both when
(re)initing the ESPs, this only affects setup with a regular,
always-mounted, single ESP, such as ext4 on top of LVM.

Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com>
---
not sure whether this is the place we want to do this check in,
suggestions for that or wording welcome ;)

 src/proxmox-boot/zz-proxmox-boot | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/src/proxmox-boot/zz-proxmox-boot b/src/proxmox-boot/zz-proxmox-boot
index 09f9171..b5bd57d 100755
--- a/src/proxmox-boot/zz-proxmox-boot
+++ b/src/proxmox-boot/zz-proxmox-boot
@@ -243,6 +243,34 @@ check_grub_efi_package() {
        warn "Install 'grub-efi-amd64' to get updates."
 }
 
+check_grub_efi_removable_status() {
+       # not booted in EFI, no need to care about removable bootloader
+       if [ ! -d /sys/firmware/efi ]; then
+               return
+       fi
+
+       # no removable bootloader
+       if [ ! -f "/boot/efi/EFI/BOOT/BOOTX64.efi" ]; then
+               return
+       fi
+
+       debconf_value="$(debconf-show --db configdb grub-efi-amd64 grub-pc | 
grep 'force_efi_extra_removable')"
+
+       # packages already set up to install a removable copy, let's trust that 
it works
+       if echo "${debconf_value}" | grep -qE ': true$'; then
+               return
+       fi
+
+       echo ""
+       echo "Removable bootloader at '/boot/efi/EFI/BOOT/BOOTX64.efi' found, 
but Grub packages not set up to update it!"
+       echo "Run the following command:"
+       echo ""
+       echo "echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean 
true' | debconf-set-selections -v -u"
+       echo ""
+       echo "Followed by re-installing Grub with 'apt install --reinstall 
grub-efi-amd64'"
+       echo ""
+}
+
 set -- $DEB_MAINT_PARAMS
 mode="${1#\'}"
 mode="${mode%\'}"
@@ -257,6 +285,7 @@ case $0:$mode in
                update_esps
                disable_systemd_boot_hook
                check_grub_efi_package
+               check_grub_efi_removable_status
        ;;
         */postrm.d/*:|*/postrm.d/*:remove)
                reexec_in_mountns "$@"
@@ -265,6 +294,7 @@ case $0:$mode in
                update_esps
                disable_systemd_boot_hook
                check_grub_efi_package
+               check_grub_efi_removable_status
        ;;
 esac
 
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to