Skip to main content
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:

  1. ell legge l'intero payload da STDIN e lo passa intatto al dispatcher.
  2. dispatcher.RouteTask() esegue un unmarshal parziale leggendo solo i campi module e chroot, ignorando il resto.
  3. Lo switch instrada 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/)​

ModuloFileRuolo Operativo
shellshell.goScrive 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.
scriptscripts.goInietta ed esegue un file script proveniente dall'host (es. asset del Brain) con argomenti opzionali.
templatetemplate.goRenderizza 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).
copycopy.goCopia tipizzata in Go (host→host o host→chroot) con gestione permessi e flag ignore_missing.
autologin-guiautologin-gui.goSblocca 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).
mksquashfsmksquashfs.goCostruisce 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.
xorrisoxorriso.goAssembla l'immagine ISO ibrida finale BIOS+UEFI (xorriso -as mkisofs) con boot El Torito ISOLINUX, immagine EFI (efi.img) e MBR isohybrid.