container-management

🐄 btrfs 'container' management pacman hook which makes a snapshot of the current state after moving the prior two and copies the current running kernel image before applying pacman operations allowing one to boot the snapshot directly without concern
Log | Files | Refs

container-management (1775B)


      1 #!/bin/bash
      2 # copy kernel and create snapshot of current state
      3 # assumes $fsroot will be mounted
      4 bin=$(dirname "$0")
      5 # load config
      6 source "$bin/config"
      7 
      8 # some variables
      9 subvolume_a="$prefix$a"
     10 subvolume_b="$prefix$b"
     11 subvolume_c="$prefix$c"
     12 subvolume_d="$prefix$d"
     13 
     14 # copy kernel
     15 printf -- "%s\n" "copying /boot/$b-vmlinuz-$kernel to /boot/$c-vmlinuz-$kernel"
     16 cp "/boot/$b-vmlinuz-$kernel" "/boot/$c-vmlinuz-$kernel"
     17 printf -- "%s\n" "copying /boot/$b-initramfs-$kernel.img to /boot/$c-initramfs-$kernel.img"
     18 cp "/boot/$b-initramfs-$kernel.img" "/boot/$c-initramfs-$kernel.img"
     19 printf -- "%s\n" "copying /boot/$b-initramfs-$kernel-fallback.img to /boot/$c-initramfs-$kernel-fallback.img"
     20 cp "/boot/$b-initramfs-$kernel-fallback.img" "/boot/$c-initramfs-$kernel-fallback.img"
     21 printf -- "%s\n" "copying /boot/vmlinuz-$kernel to /boot/$b-vmlinuz-$kernel"
     22 cp "/boot/vmlinuz-$kernel" "/boot/$b-vmlinuz-$kernel"
     23 printf -- "%s\n" "copying /boot/initramfs-$kernel.img to /boot/$b-initramfs-$kernel.img"
     24 cp "/boot/initramfs-$kernel.img" "/boot/$b-initramfs-$kernel.img"
     25 printf -- "%s\n" "copying /boot/initramfs-$kernel-fallback.img to /boot/$b-initramfs-$kernel-fallback.img"
     26 cp "/boot/initramfs-$kernel-fallback.img" "/boot/$b-initramfs-$kernel-fallback.img"
     27 
     28 # rotate snapshots start by deleting d
     29 btrfs subvolume delete "$fsroot/$subvolume_d"
     30 printf -- "%s\n" "moving $fsroot/$subvolume_c to $fsroot/$subvolume_d"
     31 mv "$fsroot/$subvolume_c" "$fsroot/$subvolume_d"
     32 printf -- "%s\n" "moving $fsroot/$subvolume_b to $fsroot/$subvolume_c"
     33 mv "$fsroot/$subvolume_b" "$fsroot/$subvolume_c"
     34 
     35 # snapshot current state
     36 btrfs subvolume snapshot "$fsroot/$subvolume_a" "$fsroot/$subvolume_b"
     37 
     38 # create $stamp to date the latest snapshot
     39 date "+$stamp_format" > "$fsroot/$subvolume_b/$stamp"