]> git.proxmox.com Git - pve-kernel-meta.git/commitdiff
proxmox-boot: divert call to grub-install to p-b-t init
authorStoiko Ivanov <s.ivanov@proxmox.com>
Wed, 7 Jul 2021 21:09:51 +0000 (23:09 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 8 Jul 2021 06:44:35 +0000 (08:44 +0200)
This way all ESPs (in case of a legacy booted system) get an
updated grub installation.

running only once between reboots (the markerfile is in /tmp) should
be enough. Sadly the environment does not provide a hint which version
grub is installed to.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
bin/grub-install-wrapper

index 35f03faf3068df11e5471efc09877990fb8a3665..2e70789266f2092e86dcf8a2bb2fbbe32ede35b8 100755 (executable)
@@ -3,12 +3,33 @@ set -e
 
 . /usr/share/pve-kernel-helper/scripts/functions
 
+init_boot_disks() {
+       if ! (echo "${curr_uuid}" | grep -qE '[0-9a-fA-F]{4}-[0-9a-fA-F]{4}'); then
+               warn "WARN: ${curr_uuid} read from ${ESP_LIST} does not look like a VFAT-UUID - skipping"
+               return
+       fi
+
+       path="/dev/disk/by-uuid/$curr_uuid"
+       if [ ! -e "${path}" ]; then
+               warn "WARN: ${path} does not exist - clean '${ESP_LIST}'! - skipping"
+               return
+       fi
+       proxmox-boot-tool init "$path"
+}
+
 if proxmox-boot-tool status --quiet; then
        #detect when being called by dpkg (e.g. grub-pc.postinst
        if [ -n "$DPKG_RUNNING_VERSION" ] && \
        echo "$DPKG_MAINTSCRIPT_PACKAGE" | grep -sq "^grub-"; then
-               warn "This system is booted via proxmox-boot-tool, ignoring dpkg call to grub-install"
-               exit 0
+               MARKER_FILE="/tmp/proxmox-boot-tool.dpkg.marker"
+               if [ ! -e "$MARKER_FILE" ]; then
+                   warn "This system is booted via proxmox-boot-tool, running proxmox-boot-tool init for all configured bootdisks"
+                   loop_esp_list init_boot_disks
+                   touch "$MARKER_FILE"
+                   exit 0
+               else
+                   exit 0
+               fi
        fi
        warn "grub-install is disabled because this system is booted via proxmox-boot-tool, if you really need to run it, run /usr/sbin/grub-install.real"
        exit 1