Architecture: Il modulo oa (Il Braccio)
All'interno dell'architettura moderna di penguins-eggs, il modulo oa rappresenta il "Braccio": il componente scritto in C progettato per operare a stretto contatto con il kernel e il metallo della macchina.
Mentre la Mente (coa in Go) pianifica, orchestra e definisce le strategie, il Braccio oa esegue le operazioni critiche di basso livello che richiedono la massima stabilità, efficienza e assenza di dipendenze complesse.
1. Ruoli e Responsabilità di oa
Il modulo in C è confinato alle operazioni in cui la velocità di esecuzione e l'interazione diretta con le chiamate di sistema (syscall) sono prioritarie:
- Gestione dei Mount Point e OverlayFS: Configurazione e montaggio dei file system in sovrapposizione necessari durante la fase di live e di installazione.
- Interazione con il Kernel e il Boot: Manipolazione dei parametri di boot, configurazione iniziale e gestione delle periferiche di archiviazione a basso livello.
- Esecuzione sicura dei privilegi: Gestione dei permessi di root e isolamento dei contesti di esecuzione per prevenire errori critici a sistema vivo.
2. Perchè C per il Braccio?
La scelta di implementare questa specifica componente in linguaggio C risponde a precisi requisiti ingegneristici:
- Zero dipendenze pesanti:
oanon richiede runtime complessi o macchine virtuali, potendo essere eseguito in ambienti minimi, rescue disk o chroot ristretti. - Esecuzione deterministica: Garantisce tempi di risposta immediati e un consumo di memoria ridotto al minimo sindacale, ideale per operare in fase di avvio (initramfs) o durante le fasi critiche di installazione sul disco fisso.
- Robustezza delle System Calls: Permette un controllo puntuale sugli errori di I/O e sulla gestione dei file descriptor.
L'interazione tra coa (Go) e oa (C) avviene attraverso un protocollo interno rigoroso basato su piani strutturati, garantendo che ogni operazione pesante sia prima validata dalla Mente e poi eseguita con la massima precisione dal Braccio.