# reTerminal DM4 eMMC provisioning Automatically **deploy** or **backup** the CM4 eMMC when the reTerminal is connected in **USB boot mode** or when it **boots over the network**. Uses **cloud-init** for first-boot configuration. --- ## Project layout ``` emmc-provisioning/ ├── README.md ← You are here ├── docs/ Documentation │ ├── EMMC-PROVISIONING-GUIDE.md Full setup and usage │ ├── PROXMOX-LXC-DEPLOYMENT.md Proxmox LXC + host setup │ └── PORTAL_STYLING_GUIDE.md Dashboard UI styling reference ├── host/ Scripts that run on the provisioning host (Proxmox host) │ ├── flash-emmc-on-connect.sh rpiboot + wait for Backup/Deploy choice, then dd │ ├── cm4-flash-trigger.sh Called by udev; starts the flash job │ └── 90-cm4-boot-mode.rules udev rule (USB vendor 2b8e) ├── scripts/ Deployment and one-off scripts │ ├── deploy-to-proxmox.sh One-command deploy to Proxmox host + LXC (by hostname) │ └── install-usbboot-on-host.sh Build and install rpiboot on the host ├── dashboard/ Flask web UI (runs in LXC or standalone) │ ├── app.py │ ├── templates/ │ ├── cm4-dashboard.service │ └── README.md ├── cloud-init/ Example NoCloud files for the golden image │ ├── user-data │ ├── meta-data │ └── network-config └── network-client/ For network-booted devices ├── provisioning-client.sh Register + poll, then Deploy or Backup └── README.md ``` --- ## Quick start 1. **Read** [docs/EMMC-PROVISIONING-GUIDE.md](docs/EMMC-PROVISIONING-GUIDE.md) for setup and usage. 2. **Proxmox:** Use [scripts/deploy-to-proxmox.sh](scripts/deploy-to-proxmox.sh) to deploy to a Proxmox host; see [docs/PROXMOX-LXC-DEPLOYMENT.md](docs/PROXMOX-LXC-DEPLOYMENT.md). 3. **Manual host:** Copy scripts from `host/` to the host and install the udev rule (see the guide). 4. Put **golden.img** in `/var/lib/cm4-provisioning/` (or your configured path). When a device is detected (USB or network), the **dashboard** asks **Backup** or **Deploy**.