proxmox-boot: add grub.cfg header snippet

If the system seems to be booted using proxmox-boot, write a header at
the beginning of the grub.cfg generated when running `update-grub`

Additionally print a warning in case the script is run interactively.
This is determined by checking for DPKG_VERSION, which is set when
running as post-inst task (after a kernel install/removal)
and for PVE_EFIBOOT_UNSHARED, which is set by proxmox-boot-tool when
running `proxmox-boot-tool refresh.`

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
Stoiko Ivanov 2021-04-23 11:04:48 +02:00 committed by Thomas Lamprecht
parent 593001de1b
commit ff28956d40
3 changed files with 27 additions and 0 deletions

View File

@ -1,3 +1,4 @@
etc/grub.d/000_proxmox_boot_header
etc/kernel/postinst.d/*
etc/kernel/postrm.d/*
etc/initramfs/post-update.d/proxmox-boot-sync

View File

@ -0,0 +1,22 @@
#! /bin/sh
set -e
. /usr/share/pve-kernel-helper/scripts/functions
if proxmox-boot-tool status --quiet; then
cat <<- EOF
#
# This system is booted via proxmox-boot-tool! The grub-config used when
# booting from the disks configured with proxmox-boot-tool resides on the vfat
# partitions with UUIDs listed in ${ESP_LIST}.
# /boot/grub/grub.cfg is NOT read when booting from those disk!
EOF
if [ -z "$DPKG_RUNNING_VERSION" ] && [ -z "$PVE_EFIBOOT_UNSHARED" ]; then
warn "W: This system is booted via proxmox-boot-tool:"
warn "W: Running update-grub does not update the correct config!"
warn "W: Run 'proxmox-boot-tool refresh' instead."
warn ""
fi
fi

View File

@ -1,11 +1,13 @@
KERNEL_HOOKSCRIPTS = proxmox-auto-removal zz-proxmox-boot
INITRAMFS_HOOKSCRIPTS = proxmox-boot-sync
SHARE_FILES = functions
GRUB_CFG_SNIPPET = 000_proxmox_boot_header
POSTINSTHOOKDIR = ${DESTDIR}/etc/kernel/postinst.d
POSTRMHOOKDIR = ${DESTDIR}/etc/kernel/postrm.d
POSTINITRAMFSHOOKDIR = ${DESTDIR}/etc/initramfs/post-update.d
SHARE_SCRIPTDIR = ${DESTDIR}/usr/share/pve-kernel-helper/scripts
GRUB_CFG_DIR = ${DESTDIR}/etc/grub.d
.PHONY: all
all:
@ -19,6 +21,8 @@ install:
install -m 0755 ${INITRAMFS_HOOKSCRIPTS} ${POSTINITRAMFSHOOKDIR}
install -d ${SHARE_SCRIPTDIR}
install -m 0755 ${SHARE_FILES} ${SHARE_SCRIPTDIR}
install -d ${GRUB_CFG_DIR}
install -m 0755 ${GRUB_CFG_SNIPPET} ${GRUB_CFG_DIR}
.PHONY: clean distclean
distclean: