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
│ ├── NETWORK-BOOT-LXC.md Network boot (PXE/dnsmasq) and LXC
│ ├── 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
│ ├── build-cloudinit-image.sh Build golden image with cloud-init
│ └── run-shrink-on-host.sh PiShrink (optional)
├── scripts/ Deployment and one-off scripts
│ ├── deploy-to-proxmox.sh Deploy to Proxmox host + LXC
│ ├── sync-portal-files-to-lxc.sh Sync cloud-init/first-boot assets to file server (LXC)
│ ├── setup-network-boot-on-lxc.sh Configure PXE/dnsmasq for network boot
│ ├── install-usbboot-on-host.sh Build and install rpiboot on the host
│ └── ... (other deploy/monitor scripts)
├── dashboard/ Flask web UI (runs in LXC or standalone)
│ ├── app.py
│ └── README.md
├── cloud-init/ First-boot and file-server assets
│ ├── first-boot.sh Main first-boot script (run by cloud-init)
│ ├── first-boot.md Documentation for first-boot.sh
│ ├── start-chromium.sh Chromium kiosk launcher (→ file server)
│ ├── user-data-remote-gnss.example Example cloud-init user-data (curl first-boot.sh)
│ ├── config-files/ LightDM, Maliit, one-shots (.desktop + scripts)
│ │ ├── chromium-kiosk.desktop
│ │ ├── set-rotation-once.desktop
│ │ └── ...
│ ├── files-from-guard/ Plymouth, splash assets; README of required files
│ └── fix-reterminal-display.sh One-time fix script (splash, rotation, wallpaper)
├── lxc/ LXC config snippets (dnsmasq, nftables)
└── network-client/ For network-booted devices
├── provisioning-client.sh Register + poll, then Deploy or Backup
└── README.md
Quick start
- Read docs/EMMC-PROVISIONING-GUIDE.md for setup and usage.
- Proxmox: Use scripts/deploy-to-proxmox.sh to deploy to a Proxmox host; see docs/PROXMOX-LXC-DEPLOYMENT.md.
- Manual host: Copy scripts from
host/to the host and install the udev rule (see the guide). - 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.