# Host-side provisioning scripts These files run on the **provisioning host** (e.g. the Proxmox host where the reTerminal is connected via USB). | File | Purpose | |------|--------| | **flash-emmc-on-connect.sh** | Runs `rpiboot`, detects eMMC, waits for dashboard choice (Backup/Deploy), then runs `dd`. Install to `/opt/cm4-provisioning/`. | | **cm4-flash-trigger.sh** | Started by udev when USB device 2b8e is added. Launches the flash script via `systemd-run`. Install to `/usr/local/bin/`. | | **90-cm4-boot-mode.rules** | udev rule: on USB add (vendor 2b8e), run the trigger. Install to `/etc/udev/rules.d/`. | See [../docs/EMMC-PROVISIONING-GUIDE.md](../docs/EMMC-PROVISIONING-GUIDE.md) for full setup. The [deploy script](../scripts/deploy-to-proxmox.sh) copies these into place on the Proxmox host and LXC. ### Stuck “finalizing: Compressing image (xz)…” on the host If the dashboard still shows that message, run on the **host** (e.g. `ssh root@10.20.30.152`): ```bash # 1) See current status and whether build/xz is still running PROV="${CM4_PROVISIONING_DIR:-/var/lib/cm4-provisioning}" cat "$PROV/build_cloudinit_status.json" ps aux | grep -E 'build-cloudinit|xz.*\.img' | grep -v grep # 2a) If a build is still running and you want to cancel it touch "$PROV/build_cloudinit_cancel" # Script checks every 2s; after it exits, status will show "cancelled" # 2b) If no build process is running but status is stuck, reset to idle echo '{"phase":"idle","message":"","output_name":null,"error":null,"updated":'$(date +%s)'}' > "$PROV/build_cloudinit_status.json" ``` Then refresh the dashboard or click **Dismiss** to clear the message.