commit 4b26824e2b4a231cb87d05ad4afe8098e5d1d476
Author: gehidore <gehidore@gmail.com>
Date: Wed, 21 Aug 2024 22:28:12 -0700
add all the things
Diffstat:
4 files changed, 69 insertions(+), 0 deletions(-)
diff --git a/hooks/5-container-management-pre.hook b/hooks/5-container-management-pre.hook
@@ -0,0 +1,12 @@
+# Create snapshot of current state before operation
+
+[Trigger]
+Operation = Upgrade
+Type = Package
+Target = *
+
+[Action]
+Depends = coreutils
+When = PreTransaction
+Exec = /etc/pacman.d/hooks/bin/container-management
+AbortOnFail
diff --git a/hooks/bin/config b/hooks/bin/config
@@ -0,0 +1,9 @@
+stamp="/.stamp"
+stamp_format="%Y-%m-%d %H:%M:%S"
+fsroot="/var/lib/fsroot/root"
+kernel="linux"
+prefix="🐄"
+a="A"
+b="B"
+c="C"
+d="D"
diff --git a/hooks/bin/config.sample b/hooks/bin/config.sample
@@ -0,0 +1,9 @@
+stamp="/.stamp"
+STAMP_FORMAT="%Y-%m-%d %H:%M:%S"
+fsroot="/var/lib/fsroot"
+kernel="linux"
+prefix="#"
+a="A"
+b="B"
+c="C"
+d="D"
diff --git a/hooks/bin/container-management b/hooks/bin/container-management
@@ -0,0 +1,39 @@
+#!/bin/bash
+# copy kernel and create snapshot of current state
+# assumes $fsroot will be mounted
+bin=$(dirname "$0")
+# load config
+source "$bin/config"
+
+# some variables
+subvolume_a="$prefix$a"
+subvolume_b="$prefix$b"
+subvolume_c="$prefix$c"
+subvolume_d="$prefix$d"
+
+# copy kernel
+printf -- "%s\n" "copying /boot/$b-vmlinuz-$kernel to /boot/$c-vmlinuz-$kernel"
+cp "/boot/$b-vmlinuz-$kernel" "/boot/$c-vmlinuz-$kernel"
+printf -- "%s\n" "copying /boot/$b-initramfs-$kernel.img to /boot/$c-initramfs-$kernel.img"
+cp "/boot/$b-initramfs-$kernel.img" "/boot/$c-initramfs-$kernel.img"
+printf -- "%s\n" "copying /boot/$b-initramfs-$kernel-fallback.img to /boot/$c-initramfs-$kernel-fallback.img"
+cp "/boot/$b-initramfs-$kernel-fallback.img" "/boot/$c-initramfs-$kernel-fallback.img"
+printf -- "%s\n" "copying /boot/vmlinuz-$kernel to /boot/$b-vmlinuz-$kernel"
+cp "/boot/vmlinuz-$kernel" "/boot/$b-vmlinuz-$kernel"
+printf -- "%s\n" "copying /boot/initramfs-$kernel.img to /boot/$b-initramfs-$kernel.img"
+cp "/boot/initramfs-$kernel.img" "/boot/$b-initramfs-$kernel.img"
+printf -- "%s\n" "copying /boot/initramfs-$kernel-fallback.img to /boot/$b-initramfs-$kernel-fallback.img"
+cp "/boot/initramfs-$kernel-fallback.img" "/boot/$b-initramfs-$kernel-fallback.img"
+
+# rotate snapshots start by deleting d
+btrfs subvolume delete "$fsroot/$subvolume_d"
+printf -- "%s\n" "moving $fsroot/$subvolume_c to $fsroot/$subvolume_d"
+mv "$fsroot/$subvolume_c" "$fsroot/$subvolume_d"
+printf -- "%s\n" "moving $fsroot/$subvolume_b to $fsroot/$subvolume_c"
+mv "$fsroot/$subvolume_b" "$fsroot/$subvolume_c"
+
+# snapshot current state
+btrfs subvolume snapshot "$fsroot/$subvolume_a" "$fsroot/$subvolume_b"
+
+# create $stamp to date the latest snapshot
+date "+$stamp_format" > "$fsroot/$subvolume_b/$stamp"