<message>Introduce a revision tracking system across project files, allowing for easier identification of changes. Update the README files to include instructions for bumping revisions and auto-bumping on commits. Additionally, enhance cloud-init scripts with revision comments for better version control. Modify the dashboard API to improve build status management, including a forced clear option for stuck statuses, enhancing user experience and operational reliability.
60 lines
3.4 KiB
Markdown
60 lines
3.4 KiB
Markdown
<!-- Revision: 2 -->
|
|
# 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](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**.
|