Add cloud-init support for automated KDE installation: include a new example user-data file for EMMC provisioning that installs KDE Plasma with touch options, sets it as the default session, and configures the on-screen keyboard. Update documentation to reflect these changes. Enhance eMMC provisioning scripts with new shrink functionality and improve error handling in backup processes.

This commit is contained in:
nearxos
2026-02-19 00:00:03 +02:00
parent 262bc3e515
commit d76e19169c
12 changed files with 336 additions and 61 deletions

View File

@@ -2,19 +2,53 @@
# Run on the provisioning HOST (root) to install PiShrink and dependencies.
# Enables shrinking backups in flash-emmc-on-connect.sh when SHRINK_BACKUP=1.
# PiShrink: https://github.com/Drewsif/PiShrink
#
# Offline install (when host has no internet):
# 1. On a machine with internet: curl -Lo pishrink.sh https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
# 2. scp pishrink.sh root@HOST:/tmp/
# 3. On host: bash install-pishrink-on-host.sh /tmp/pishrink.sh
#
# Optional: PISHRINK_URL=... or pass path to local pishrink.sh as first argument.
set -e
PISHRINK_URL="${PISHRINK_URL:-https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh}"
LOCAL_PISHRINK="$1"
echo "Installing PiShrink dependencies..."
apt-get update
apt-get install -y wget parted gzip pigz xz-utils udev e2fsprogs
echo "Installing PiShrink dependencies (parted, e2fsprogs, xz-utils, ...)..."
if apt-get update 2>/dev/null && apt-get install -y wget parted gzip pigz xz-utils udev e2fsprogs 2>/dev/null; then
echo "Dependencies installed."
else
echo "Warning: apt install failed (e.g. host has no internet). Skipping packages."
echo "PiShrink needs: parted, e2fsprogs; optional: gzip/pigz, xz-utils. Install them manually if missing."
for cmd in parted resize2fs; do
if ! command -v "$cmd" &>/dev/null; then
echo " Missing: $cmd — install with apt when the host has network, or use a local mirror."
fi
done
fi
echo "Downloading PiShrink..."
wget -q -O /usr/local/bin/pishrink.sh "$PISHRINK_URL"
chmod +x /usr/local/bin/pishrink.sh
if [[ -n "$LOCAL_PISHRINK" && -f "$LOCAL_PISHRINK" ]]; then
echo "Using local PiShrink script: $LOCAL_PISHRINK"
cp "$LOCAL_PISHRINK" /usr/local/bin/pishrink.sh
chmod +x /usr/local/bin/pishrink.sh
echo "PiShrink installed at /usr/local/bin/pishrink.sh"
elif command -v wget &>/dev/null && wget -q -O /usr/local/bin/pishrink.sh "$PISHRINK_URL" 2>/dev/null; then
chmod +x /usr/local/bin/pishrink.sh
echo "PiShrink installed at /usr/local/bin/pishrink.sh"
else
echo "Could not download PiShrink (no wget or no network)."
echo ""
echo "Offline install:"
echo " 1. On a machine WITH internet run:"
echo " curl -Lo pishrink.sh $PISHRINK_URL"
echo " 2. Copy to host:"
echo " scp pishrink.sh root@YOUR_HOST:/tmp/"
echo " 3. On the host run:"
echo " bash install-pishrink-on-host.sh /tmp/pishrink.sh"
exit 1
fi
echo "PiShrink installed at /usr/local/bin/pishrink.sh"
echo ""
echo "To shrink backups automatically, add to /opt/cm4-provisioning/env:"
echo " SHRINK_BACKUP=1"
echo " # optional: PISHRINK_COMPRESS=gz or PISHRINK_COMPRESS=xz"