container-management

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 4b26824e2b4a231cb87d05ad4afe8098e5d1d476
Author: gehidore <gehidore@gmail.com>
Date:   Wed, 21 Aug 2024 22:28:12 -0700

add all the things

Diffstat:
Ahooks/5-container-management-pre.hook | 12++++++++++++
Ahooks/bin/config | 9+++++++++
Ahooks/bin/config.sample | 9+++++++++
Ahooks/bin/container-management | 39+++++++++++++++++++++++++++++++++++++++
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"