Files
reterminal-dm4/emmc-provisioning
nearxos ca27727137 Refactor dashboard to remove network boot support and update related UI elements</message>
<message>Eliminate network boot options from the dashboard, including API endpoints and UI elements, to streamline the provisioning process for USB boot only. Update messages and documentation to reflect the removal of network boot functionality, ensuring clarity for users. Adjust the cloud-init build process and related templates to focus solely on USB boot mode, enhancing the overall user experience and simplifying the workflow.
2026-02-23 11:08:52 +02:00
..

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.

Revisions are tracked project-wide; see repo root README.md and scripts/bump-revision.sh.


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
│   │   ├── 01-set-rotation-once.desktop
│   │   ├── 02-set-wallpaper-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

  1. Read docs/EMMC-PROVISIONING-GUIDE.md for setup and usage.
  2. Proxmox: Use scripts/deploy-to-proxmox.sh to deploy to a Proxmox host; see 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.