[pve-devel] [PATCH kernel-meta 2/2] Add efiboot refresh hook to update-initramfs

Stefan Reiter s.reiter at proxmox.com
Thu Aug 1 13:01:03 CEST 2019


As explained in [0], we can add a hook script that will be called after
update-initramfs did its job (and thus, a new initrd has been created).

We can use this to automatically sync the ESPs using 'pve-efiboot-tool
refresh', if update-initramfs was called manually (on kernel upgrade we
already have a hook that does this).

[0]: https://kernel-team.pages.debian.net/kernel-handbook/ch-update-hooks.html

Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
---

Found a hook we can use :)

Ignore the previous patch to docs then, since the ESP refresh now happens
automatically. I'll send a new one later.

 debian/pve-kernel-helper.install |  1 +
 efiboot/Makefile                 |  4 ++++
 efiboot/pve-efiboot-sync         | 11 +++++++++++
 3 files changed, 16 insertions(+)
 create mode 100644 efiboot/pve-efiboot-sync

diff --git a/debian/pve-kernel-helper.install b/debian/pve-kernel-helper.install
index ad265a5..6f7f713 100644
--- a/debian/pve-kernel-helper.install
+++ b/debian/pve-kernel-helper.install
@@ -1,4 +1,5 @@
 etc/kernel/postinst.d/*
 etc/kernel/postrm.d/*
+etc/initramfs/post-update.d/pve-efiboot-sync
 usr/sbin/pve-efiboot-tool
 usr/share/pve-kernel-helper/scripts/functions
diff --git a/efiboot/Makefile b/efiboot/Makefile
index 766faca..fc9e333 100644
--- a/efiboot/Makefile
+++ b/efiboot/Makefile
@@ -1,8 +1,10 @@
 KERNEL_HOOKSCRIPTS = pve-auto-removal zz-pve-efiboot
+INITRAMFS_HOOKSCRIPTS = pve-efiboot-sync
 SHARE_FILES = functions
 
 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
 
 .PHONY: all
@@ -13,6 +15,8 @@ install:
 	install -m 0755 ${KERNEL_HOOKSCRIPTS} ${POSTINSTHOOKDIR}
 	install -d ${POSTRMHOOKDIR}
 	install -m 0755 ${KERNEL_HOOKSCRIPTS} ${POSTRMHOOKDIR}
+	install -d ${POSTINITRAMFSHOOKDIR}
+	install -m 0755 ${INITRAMFS_HOOKSCRIPTS} ${POSTINITRAMFSHOOKDIR}
 	install -d ${SHARE_SCRIPTDIR}
 	install -m 0755 ${SHARE_FILES} ${SHARE_SCRIPTDIR}
 
diff --git a/efiboot/pve-efiboot-sync b/efiboot/pve-efiboot-sync
new file mode 100644
index 0000000..c3ccf8e
--- /dev/null
+++ b/efiboot/pve-efiboot-sync
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+set -e
+
+# Only run the refresh if update-initramfs has been called manually.
+# If this script is being run as part of a post-kernel-install hook,
+# this variable will be set to 1 and we do nothing, since our pve-kernel
+# hooks will update the ESPs all at once anyway.
+if [ -z "$INITRAMFS_TOOLS_KERNEL_HOOK" ]; then
+	/usr/sbin/pve-efiboot-tool refresh --hook 'zz-pve-efiboot'
+fi
-- 
2.20.1





More information about the pve-devel mailing list