Deutsch • English • Español • Français • Italiano • Polska • Portuguese • Български • Русский • Українська • やまと • 中国 • فارsi
🛠️ Il tecnico in Go: il modulo coa ell
ell è il terzo attore del modello architetturale: il tecnico specializzato che ha sostituito gli script Bash per tutte le operazioni ad alto livello. Non è un eseguibile separato, bensì un sottocomando nascosto di coa (multi-call binary pattern, come Git o Docker): in questo modo l'utente finale scarica solo due binari (eggs/coa e oa), mentre il motore C dispone di una cassetta degli attrezzi completa in Go.
📬 1. Il protocollo a busta (cmd/ell.go + dispatcher)
Quando il capocantiere in C (oa) incontra un task il cui module non è nativo, effettua un fork e invia il singolo task come JSON grezzo nello STDIN di coa ell. Sul versante Go il flusso è minimale e disaccoppiato:
elllegge l'intero payload daSTDINe lo passa intatto al dispatcher.dispatcher.RouteTask()esegue un unmarshal parziale leggendo solo i campimoduleechroot, ignorando il resto.- Lo
switchinstrada i byte grezzi al modulo worker corrispondente, il quale effettua un secondo unmarshal sulla propria struct locale fortemente tipizzata.
oa (C) coa ell (Go)
│ fork + pipe (task JSON) │
├────────────── STDIN ───────────▶│ dispatcher.RouteTask()
│ ├──▶ worker.RunXxx(payload)
│ │ (secondo unmarshal tipizzato)
│◀──────────── exit code ─────────┤
▼
task successivo del piano
🧰 2. I moduli esecutori (coa/pkg/worker/)
| Modulo | File | Ruolo Operativo |
|---|---|---|
shell | shell.go | Scrive il comando inline in uno script temporaneo (/tmp/oa-shell-*.sh, anche dentro <live_root>/tmp se chroot: true), lo esegue con Bash e lo rimuove, eliminando ogni problema di escaping delle stringhe. |
script | scripts.go | Inietta ed esegue un file script proveniente dall'host (es. asset del Brain) con argomenti opzionali. |
template | template.go | Renderizza un text/template Go con mappa di variabili vars e scrive il file di destinazione con i permessi richiesti (usato per generare i menu GRUB/ISOLINUX senza cat <<EOF). |
copy | copy.go | Copia tipizzata in Go (host→host o host→chroot) con gestione permessi e flag ignore_missing. |
autologin-gui | autologin-gui.go | Sblocca l'utente live in chroot, rileva la sessione desktop preferita da /usr/share/xsessions e configura automaticamente l'autologin per il Display Manager presente (SDDM, LightDM, GDM). |
mksquashfs | mksquashfs.go | Costruisce ed esegue l'invocazione nativa di mksquashfs via os/exec: algoritmo e livello dal piano (default zstd livello 3), blocchi da 1M, tutti i core CPU e lista di esclusione /tmp/coa/excludes.list. |
xorriso | xorriso.go | Assembla l'immagine ISO ibrida finale BIOS+UEFI (xorriso -as mkisofs) con boot El Torito ISOLINUX, immagine EFI (efi.img) e MBR isohybrid. |