From 8acf623e0233f78e6bbcf53532a0d29adcca6aa8 Mon Sep 17 00:00:00 2001 From: paxx12 <245230251+paxx12@users.noreply.github.com> Date: Wed, 18 Feb 2026 09:34:53 +0100 Subject: [PATCH] Add `upgrade-rootfs.sh` script and `overlays` Makefile target --- Makefile | 8 +++++++- scripts/dev/upgrade-rootfs.sh | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100755 scripts/dev/upgrade-rootfs.sh diff --git a/Makefile b/Makefile index 7ca6ec7f..1866ca62 100644 --- a/Makefile +++ b/Makefile @@ -32,9 +32,15 @@ endif .PHONY: build build: $(OUTPUT_FILE) +EXTRACT_DIR := tmp/extracted + .PHONY: extract extract: firmware/$(FIRMWARE_FILE) tools - ./scripts/extract_squashfs.sh $< tmp/extracted + ./scripts/extract_squashfs.sh $< $(EXTRACT_DIR) + +.PHONY: overlays +overlays: + @echo $(OVERLAYS) .PHONY: profiles profiles: diff --git a/scripts/dev/upgrade-rootfs.sh b/scripts/dev/upgrade-rootfs.sh new file mode 100755 index 00000000..df76e1fe --- /dev/null +++ b/scripts/dev/upgrade-rootfs.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +if [[ $# -lt 2 ]]; then + echo "usage: $0 [command]" + exit 1 +fi + +SSH_HOST="$1" +PROFILE="$2" +shift 2 + +PASSWORD="${PASSWORD:-snapmaker}" +SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" + +overlays_list() { + make -s overlays PROFILE="$1" +} + +tar_overlays_root() { + for overlay; do + [[ -d "$overlay/root" ]] && echo "-C $(realpath "$overlay/root") ." + done +} + +# Use `tar` instead of `scp` as being significantly faster when there are many small files. + +echo ">> Uploading rootfs overlays..." +tar -cf - $(tar_overlays_root $(overlays_list "$PROFILE")) | + sshpass -p "$PASSWORD" ssh $SSH_OPTS "$SSH_HOST" tar -C / -xf - + +if [[ $# -gt 0 ]]; then + echo ">> Running command: $*" + sshpass -p "$PASSWORD" ssh $SSH_OPTS "$SSH_HOST" "$@" +fi + +echo ">> Done."