Da un po' di tempo a questa parte si sente parlare di sistemi Linux o distro "immutabili" ma che cosa sono di preciso? Come funzionano? Possono essere aggiornati o personalizzati? Sono davvero più sicuri? Sono adatti per utilizzo Desktop?

[Linux] cosa sono sistemi "immutabili"?

Cosa sono? Come funzionano?

Le distro nominate "immutabili", sono sistemi operativi con determinate caratteristiche ma devono questo nome soprattutto ad una in particolare che, presa da sola, non è poi tanto rivoluzionaria: una parte essenziale del sistema, solitamente la root ( / ), ma può essere anche un particolare percorso all'interno di questa (come ad esempio /usr), è montata con l'opzione di sola lettura (read only).

Chi ha un po' di esperienza con Linux, sa bene che questo è un semplice metodo "vecchia scuola" per rendere più sicuro un server ed è attualmente utilizzato, ad esempio, per i sistemi embedded o, per fare un esempio più comune, basta pensare ad Android (alla cui base c'è proprio Linux con la partizione di root montata in sola lettura!): avere un sistema il cui nucleo principale non può essere modificato, lo mette al riparo da manomissioni volontarie o accidentali, garantendo che la funzionalità rimanga costante.

[Linux] cosa sono sistemi "immutabili"?

Un altra importante caratteristica che non viene subito alla mente pensando all'aggettivo "immutabile", è la riproducibilità di questa sistemi. Dato che il sistema viene montato in sola lettura, ci si basa su rilasci stabili di "immagini" della root ( / ), in modo che ogni immagine contrassegnata dallo stesso numero di versione sia esattamente identica alle altre. Insieme all'immutabilità, rendono queste distro molto più gestibili da amministratori di sistema che devono produrre molte postazioni con la stessa configurazione, garantendo che, se funziona una, funzioneranno anche le altre.

[Linux] cosa sono sistemi "immutabili"?

Possono essere aggiornati o personalizzati?

Immutabile, significa qualcosa il cui stato non può essere cambiato. Se prendiamo questa definizione per buona possiamo vedere come questo termine sia fuorviante se riferito a questi sistemi, infatti possono benissimo essere aggiornati o personalizzati ma in maniera leggermente diversa dalle classiche distro.

Se la / è montata in sola lettura non è quindi possibile installare altri programmi, ad esempio, in /bin o modificare alcuni file di configurazione in /etc, percorsi di sistema da sempre dedicati a queste funzioni. Come si riesce ad aggiungere programmi o modificare le configurazioni allora?

Per di più, un sistema operativo, per il corretto funzionamento, ha comunque necessità di scrivere dati che devono poter essere modificati nel tempo, è quindi necessario che ci sia almeno un percorso nel sistema dove questi dati possono essere scritti e modificati quando necessario. Il percorso di solito utilizzata da queste distro è /var che secondo lo Standard di gerarchia del filesystem di Linux è proprio quello dedicato a dati importanti di carattere temporaneo. Ecco quindi che alcuni percorsi del sistema saranno "virtualmente" spostati all'interno di /var e questo spostamento può essere fatto con un semplice link (ad esempio /home diventerà un link a /var/home) oppure utilizzando una funzione del kernel implementata dalla versione 3.18: l'overlayfs.

[Linux] cosa sono sistemi "immutabili"?

Pensate all'overlayfs come ad un foglio di carta trasparente (quella da ricalco) da mettere sopra il percorso voluto (ad esempio /etc): una volta montato questo speciale filesystem come overlay di /etc, i file contenuti in questo percorso saranno sempre disponibili in lettura per il sistema (per la natura "trasparente" dell'overlay) ma ogni modifica effettuata ai file (compresa la cancellazione) sarà in realtà scritta soltanto su questo foglio trasparente ed andrà a "coprire" il file originale, presentando al sistema solo quello modificato. Tale modifica sarà attiva finché persiste il montaggio dell'overlay (che può anche essere fatto automaticamente ad ogni avvio) e si può quindi intuire come sia estremamente facile tornare alle condizioni iniziali.

[Linux] cosa sono sistemi "immutabili"?

Per quanto riguarda l'installazione di nuovi programmi si punta di solito a sistemi già collaudati: i container, ovvero sistemi isolati quanto più possibile tra di loro e con la base del sistema operativo, che sfruttano la virtualizzazione (come, ad esempio, Docker o Podman) e la capacità di sandbox del kernel Linux utilizzata, per esempio, da Flatpak.

[Linux] cosa sono sistemi "immutabili"?

Gli aggiornamenti di questi sistemi possono essere fatti con comandi dedicati in maniera del tutto simile alle distro "normali" ma le caratteristiche di immutabile e riproducibile fanno sì che gli aggiornamenti possano essere ridotti come dimensione: se vogliamo aggiornare un sistema in versione X alla versione Y, non importa scaricare tutti i file modificati ma è sufficiente scaricare solo le modifiche. Questo è possibile proprio perché siamo sicuri che il file di origine sul sistema sia esattamente quello del rilascio iniziale (uguale per tutti, data la caratteristica di riproducibilità) e che non è stato modificato (per l'immutabilità).

Un altra caratteristica di questi aggiornamenti è l'indivisibilità, si parla infatti di aggiornamenti atomici (non preoccupatevi, non servono tute antiradiazioni!): un aggiornamento viene applicato sempre in blocco, completo, non è possibile effettuare aggiornamenti parziali e questo anche nel malaugurato caso, ad esempio, di interruzione temporanea dell'alimentazione. Offrono quindi una bella sicurezza in più: comunque vada l'aggiornamento avremo sempre un sistema in grado di avviarsi, stabile e funzionante (ma magari non aggiornato).

La caratteristica di indivisibilità degli aggiornamenti si presta anche per un altro obbiettivo: così come sono applicati in blocco, possono anche essere rimossi in blocco, garantendo, in caso di problemi, di poter tornare velocemente indietro (rollback) ad un sistema sicuramente funzionante.

[Linux] cosa sono sistemi "immutabili"?

Anche in questo caso la tecnologia adottata per raggiungere questi obbiettivi può variare leggermente da distro a distro ma in genere si utilizza la capacità di creare delle immagini del sistema propria di filesystem come Btrfs che consente perfino di avere più versioni di uno stesso sistema con la possibilità di avviarle alternativamente. In alcuni casi si utilizza un sistema nel quale sono presenti due / denominate A e B; se è stato avviato il sistema con la / A, durante l'aggiornamento si andrà a sovrascrivere la / B (e quindi per lavorare con il sistema aggiornato dovremo riavviare) e viceversa, proprio come avviene nelle ultime versioni di Android!

Sono davvero più sicuri?

Sicurezza è un termine piuttosto generico che può essere riferito a molti aspetti. Se intendiamo più sicuri in termini di stabilità e affidabilità, abbiamo già visto alcune caratteristiche per cui possiamo affermare, senza grandi dubbi che sì, sono molto più sicuri da questo punto di vista.

Se prendiamo il senso comunemente assegnato a "sicuro" riferito ad un sistema informatico, ovvero sicuro contro il malware, data la natura variabile e variegata di questo tipo di software, possiamo avere qualche dubbio in più. Come detto, montare la / con l'opzione di "sola lettura" è un metodo vecchia scuola per aumentare la resistenza a manomissioni dei server, quindi in questo senso sì, sono più sicuri. Se prediamo però in esame un utilizzo Desktop dovremo prestare un po' di attenzione in più, dato che un malware può fare danni anche se eseguito come semplice utente (pensiamo ad esempio ad un ransomware... ). Ma questo ci porta diretti alla prossima domanda...

[Linux] cosa sono sistemi "immutabili"?

Sono adatti per utilizzo Desktop?

Sì! Dipende ovviamente dalla vocazione originale della distro scelta, alcune nascono estremamente minimali (senza GUI) per essere utilizzate in container o sistemi embedded ma altre nascono proprio come sistemi Desktop completi!

La loro adozione però va attentamente valutata: avete necessità di tutti i benefici che offrono (immutabilità, riproducibilità, aggiornamenti atomici, facilità di rollback)? A fronte di questi pro dovremo valutare i contro che sono: maggior spazio occupato sul disco, per poter conservare le immagini dei sistemi precedenti (spesso non molto grande) ma anche per l'utilizzo di applicazioni Flatpak (più grandi perché hanno al suo interno anche alcune librerie necessarie che con l'installazione "normale" sarebbero condivise con il sistema) e, sempre per via di Flatpak, maggior risorse occupate (RAM e CPU) per l'utilizzo di questi programmi.

[Linux] cosa sono sistemi "immutabili"?

Ma quali sono queste distro "immutabili"?

Ne stanno nascendo sempre di nuove quindi non è possibile (né conveniente) fare una lista esaustiva che le comprende tutte. Escludendo a priori quelle ancora in fase preliminare di rilascio (Alpha, Beta, RC, PreRelease, ... ) e quelle votate ai servizi cloud o dedicate alle aziende, possiamo comunque citarne alcune più mature e stabili; ognuna delle distro di questa lista, presenta una combinazione delle tecniche e tecnologie descritte in questo articolo, che le rendono simili (sono immutabili!) ma diverse nel modo in cui perseguono il raggiungimento dello medesimo obbiettivo:

  • Fedora Silverblue o Kinote, deriva direttamente dalla versione Workstation e presenta quindi un sistema Desktop (quasi) completo, rispettivamente con Gnome e KDE.
  • OpenSUSE MicroOS è principalmente designata per container e sistemi embedded, per questo è estremamente minimale, leggera e veloce, derivata da Tumbleweed e quindi costantemente aggiornata; c'è anche una versione Desktop attualmente in fase sperimentale utilizzata da molti con soddisfazione.
  • EndlessOS distro nata per consentire l'accesso a informazioni e tecnologie rilevanti a tutti anche a chi non ha accesso ad internet; nella versione completa (in lingua inglese, da più di 16GB!) infatti contiene, tra l'altro, più di 100 applicazioni e 50000 tra pagine di Wikipedia, video e lezioni che coprono vari argomenti.
  • VanillaOS, anche se nata da poco è derivata da Ubuntu ed ha quindi solide fondamenta; attualmente sembra la più completa e "amica dell'utente" per l'utilizzo Desktop.