From cc745fbdfa859b9a429c98961c86bf08518b625f Mon Sep 17 00:00:00 2001 From: "Aaron D. Lee" Date: Thu, 8 Jan 2026 11:02:01 -0500 Subject: [PATCH] Add auto-expand service in pull-image.sh Create a systemd oneshot service that expands the rootfs on first boot after flashing. The service self-destructs after running. This ensures release images fill the SD card while keeping the download size small (16GB shrunk image). Co-Authored-By: Claude Opus 4.5 --- rpi/pull-image.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/rpi/pull-image.sh b/rpi/pull-image.sh index b290aa6..f6a88c3 100755 --- a/rpi/pull-image.sh +++ b/rpi/pull-image.sh @@ -123,6 +123,37 @@ else echo -e "${GREEN} Rootfs already ~16GB${NC}" fi +# ============================================================================ +# Re-enable auto-expand for release image +# ============================================================================ +echo +echo -e "${YELLOW}Re-enabling auto-expand for release...${NC}" +TEMP_ROOT=$(mktemp -d) +mount "$ROOT_PART" "$TEMP_ROOT" + +# Create the resize service that runs on first boot +cat > "$TEMP_ROOT/etc/systemd/system/rpi-resizerootfs.service" <<'RESIZE_EOF' +[Unit] +Description=Resize root filesystem to fill SD card +After=local-fs.target + +[Service] +Type=oneshot +ExecStart=/bin/bash -c 'resize2fs $(findmnt -n -o SOURCE /) && systemctl disable rpi-resizerootfs.service && rm -f /etc/systemd/system/rpi-resizerootfs.service' +ExecStartPost=/bin/systemctl daemon-reload + +[Install] +WantedBy=multi-user.target +RESIZE_EOF + +# Enable the service +mkdir -p "$TEMP_ROOT/etc/systemd/system/multi-user.target.wants" +ln -sf /etc/systemd/system/rpi-resizerootfs.service "$TEMP_ROOT/etc/systemd/system/multi-user.target.wants/rpi-resizerootfs.service" + +umount "$TEMP_ROOT" +rmdir "$TEMP_ROOT" +echo -e "${GREEN} Auto-expand service installed${NC}" + # ============================================================================ # Pull image # ============================================================================