[pbs-devel] [PATCH v2 proxmox-backup 16/20] debian/client: add postinst hook to rebuild file-restore initramfs
Stefan Reiter
s.reiter at proxmox.com
Wed Mar 24 16:18:23 CET 2021
This will be triggered on updating proxmox-file-restore (via configure,
necessary since the daemon binary might change) and
proxmox-backup-restore-image (via 'activate-noawait', necessary since
the base image might change).
Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
---
v2:
* update 'proxmox-backup-restore-image' and trigger naming
debian/proxmox-file-restore.postinst | 63 ++++++++++++++++++++++++++++
debian/proxmox-file-restore.triggers | 1 +
2 files changed, 64 insertions(+)
create mode 100755 debian/proxmox-file-restore.postinst
create mode 100644 debian/proxmox-file-restore.triggers
diff --git a/debian/proxmox-file-restore.postinst b/debian/proxmox-file-restore.postinst
new file mode 100755
index 00000000..bb039fae
--- /dev/null
+++ b/debian/proxmox-file-restore.postinst
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+set -e
+
+update_initramfs() {
+ # regenerate initramfs for single file restore VM
+ INST_PATH="/usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore"
+ CACHE_PATH="/var/cache/proxmox-backup/file-restore-initramfs.img"
+
+ # cleanup first, in case proxmox-file-restore was uninstalled since we do
+ # not want an unuseable image lying around
+ rm -f "$CACHE_PATH"
+
+ [ -f "$INST_PATH/initramfs.img" ] || \
+ echo "proxmox-backup-restore-image is not installed correctly" >2 || \
+ exit 1
+
+ echo "Updating file-restore initramfs..."
+
+ # avoid leftover temp file
+ cleanup() {
+ rm -f "$CACHE_PATH.tmp"
+ }
+ trap cleanup EXIT
+
+ mkdir -p "/var/cache/proxmox-backup"
+ cp "$INST_PATH/initramfs.img" "$CACHE_PATH.tmp"
+
+ # cpio uses passed in path as offset inside the archive as well, so we need
+ # to be in the same dir as the daemon binary to ensure it's placed in /
+ ( cd "$INST_PATH"; \
+ printf "./proxmox-restore-daemon" \
+ | cpio -o --format=newc -A -F "$CACHE_PATH.tmp" )
+ mv -f "$CACHE_PATH.tmp" "$CACHE_PATH"
+
+ trap - EXIT
+}
+
+case "$1" in
+ configure)
+ # in case restore daemon was updated
+ update_initramfs
+ ;;
+
+ triggered)
+ if [ "$2" = "proxmox-backup-restore-image-update" ]; then
+ # in case base-image was updated
+ update_initramfs
+ else
+ echo "postinst called with unknown trigger name: \`$2'" >&2
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/debian/proxmox-file-restore.triggers b/debian/proxmox-file-restore.triggers
new file mode 100644
index 00000000..c316dc34
--- /dev/null
+++ b/debian/proxmox-file-restore.triggers
@@ -0,0 +1 @@
+interest-noawait proxmox-backup-restore-image-update
--
2.20.1
More information about the pbs-devel
mailing list