Move filesystem expansion to first-boot wizard

Instead of a hidden systemd service, expand the filesystem
visibly during the first-boot wizard so users can see it
happening.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Aaron D. Lee
2026-01-08 12:00:47 -05:00
parent 4291dfad38
commit 0decb39b17
2 changed files with 22 additions and 31 deletions

View File

@@ -53,6 +53,28 @@ echo ""
gum confirm "Ready to begin setup?" || exit 0 gum confirm "Ready to begin setup?" || exit 0
# =============================================================================
# Step 0: Expand Filesystem
# =============================================================================
clear
gum style \
--foreground 212 --bold \
"Expanding filesystem..."
echo ""
# Get current and total size
ROOT_DEV=$(findmnt -n -o SOURCE /)
CURRENT_SIZE=$(df -h / | awk 'NR==2 {print $2}')
gum style --foreground 245 "Current size: $CURRENT_SIZE"
# Run resize2fs with a spinner
gum spin --spinner dot --title "Expanding to fill SD card..." -- sudo resize2fs "$ROOT_DEV" 2>/dev/null
NEW_SIZE=$(df -h / | awk 'NR==2 {print $2}')
gum style --foreground 82 "✓ Expanded to: $NEW_SIZE"
sleep 1
# ============================================================================= # =============================================================================
# Configuration Variables # Configuration Variables
# ============================================================================= # =============================================================================

View File

@@ -123,37 +123,6 @@ else
echo -e "${GREEN} Rootfs already ~16GB${NC}" echo -e "${GREEN} Rootfs already ~16GB${NC}"
fi fi
# ============================================================================
# Re-enable auto-expand for release image
# ============================================================================
echo
echo -e "${YELLOW}Re-enabling auto-expand for release...${NC}"
TEMP_ROOT=$(mktemp -d)
sudo mount "$ROOT_PART" "$TEMP_ROOT"
# Create the resize service that runs on first boot
sudo tee "$TEMP_ROOT/etc/systemd/system/rpi-resizerootfs.service" > /dev/null <<'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
sudo mkdir -p "$TEMP_ROOT/etc/systemd/system/multi-user.target.wants"
sudo ln -sf /etc/systemd/system/rpi-resizerootfs.service "$TEMP_ROOT/etc/systemd/system/multi-user.target.wants/rpi-resizerootfs.service"
sudo umount "$TEMP_ROOT"
rmdir "$TEMP_ROOT"
echo -e "${GREEN} Auto-expand service installed${NC}"
# ============================================================================ # ============================================================================
# Pull image # Pull image
# ============================================================================ # ============================================================================