aboutsummaryrefslogtreecommitdiff
path: root/build.sh
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-01-18 10:55:18 -0600
committerCraig Jennings <c@cjennings.net>2026-01-18 10:55:18 -0600
commit6505511f2e6b43a37570fc840f6d2851c7cc170c (patch)
tree31affaecded1bdd6bbe8234ebe26c03a99074225 /build.sh
parent5982a78ae7328fd3126c6346872de8ace242e9b9 (diff)
downloadarchangel-6505511f2e6b43a37570fc840f6d2851c7cc170c.tar.gz
archangel-6505511f2e6b43a37570fc840f6d2851c7cc170c.zip
Add grub-zfs-snap for ZFS snapshot boot entries
Add ability to boot into ZFS snapshots directly from GRUB menu: - grub-zfs-snap: generates GRUB submenu entries for recent snapshots - 40_zfs_snapshots: GRUB generator script installed to /etc/grub.d/ - zz-grub-zfs-snap.hook: pacman hook for automatic GRUB regeneration The GRUB menu automatically updates after kernel/ZFS package changes. Up to 10 most recent snapshots appear in a "ZFS Snapshots" submenu.
Diffstat (limited to 'build.sh')
-rwxr-xr-xbuild.sh10
1 files changed, 10 insertions, 0 deletions
diff --git a/build.sh b/build.sh
index dd334d3..cf5c086 100755
--- a/build.sh
+++ b/build.sh
@@ -180,6 +180,13 @@ cp "$CUSTOM_DIR/install-archzfs" "$PROFILE_DIR/airootfs/usr/local/bin/"
cp "$CUSTOM_DIR/install-claude" "$PROFILE_DIR/airootfs/usr/local/bin/"
cp "$CUSTOM_DIR/archsetup-zfs" "$PROFILE_DIR/airootfs/usr/local/bin/"
+# Copy grub-zfs-snap for ZFS snapshot boot entries
+info "Copying grub-zfs-snap..."
+cp "$CUSTOM_DIR/grub-zfs-snap" "$PROFILE_DIR/airootfs/usr/local/bin/"
+mkdir -p "$PROFILE_DIR/airootfs/usr/local/share/grub-zfs-snap"
+cp "$CUSTOM_DIR/40_zfs_snapshots" "$PROFILE_DIR/airootfs/usr/local/share/grub-zfs-snap/"
+cp "$CUSTOM_DIR/zz-grub-zfs-snap.hook" "$PROFILE_DIR/airootfs/usr/local/share/grub-zfs-snap/"
+
# Copy example config for unattended installs
mkdir -p "$PROFILE_DIR/airootfs/root"
cp "$CUSTOM_DIR/install-archzfs.conf.example" "$PROFILE_DIR/airootfs/root/"
@@ -197,6 +204,9 @@ if grep -q "file_permissions=" "$PROFILE_DIR/profiledef.sh"; then
/)/ i\ ["/usr/local/bin/archsetup-zfs"]="0:0:755"
}' "$PROFILE_DIR/profiledef.sh"
sed -i '/^file_permissions=(/,/)/ {
+ /)/ i\ ["/usr/local/bin/grub-zfs-snap"]="0:0:755"
+ }' "$PROFILE_DIR/profiledef.sh"
+ sed -i '/^file_permissions=(/,/)/ {
/)/ i\ ["/etc/shadow"]="0:0:400"
}' "$PROFILE_DIR/profiledef.sh"
fi