[pve-devel] [PATCH pve-kernel-meta 2/5] proxmox-boot: divert call to grub-install to p-b-t init

Stoiko Ivanov s.ivanov at proxmox.com
Wed Jul 7 23:09:51 CEST 2021


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 at proxmox.com>
---
 bin/grub-install-wrapper | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/bin/grub-install-wrapper b/bin/grub-install-wrapper
index 35f03fa..2e70789 100755
--- a/bin/grub-install-wrapper
+++ b/bin/grub-install-wrapper
@@ -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
-- 
2.30.2






More information about the pve-devel mailing list