Distribuzioni Linux immutabili

Il mondo delle distribuzioni Linux è vasto e variegato. Tra le opzioni più recenti e innovative, spiccano le distribuzioni “immutabili”, un concetto che sta guadagnando sempre più popolarità. Esploreremo la gestione tradizionale del sistema, di pacchetti e aggiornamenti, evidenziando le differenze con le immutabili. Vedremo vantaggi, scenari in cui si distinguono e una carrellata delle più popolari.

Gestione tradizionale di sistema, pacchetti e aggiornamenti

Nel panorama Linux, i sistemi operativi sono generalmente progettati per essere flessibili e configurabili, consentendo agli amministratori di apportare modifiche in qualsiasi momento al sistema operativo e alle applicazioni installate. Il file system è montato, cioè caricato, in modalità di lettura/scrittura, il che significa che gli amministratori possono modificare i file di sistema e le configurazioni a loro discrezione.

Aggiornamenti di sistema e dei programmi sono applicati in modo incrementale: i pacchetti software vengono scaricati e installati, quando disponibili, nel sistema attivo. Gli utenti possono installare, aggiornare o rimuovere pacchetti, gestendo le dipendenze manualmente.

Modello distribuzioni Linux tradizionali
Modello distribuzioni Linux tradizionali

Questo approccio permette una grande flessibilità ma può portare a inconsistenze e conflitti di dipendenze, causando problemi, specialmente in ambienti critici.

Distribuzioni Linux immutabili: un paradigma diverso

Le distribuzioni Linux immutabili presentano un paradigma differente. In queste ultime il file system principale è montato in sola lettura, il che impedisce, di regola, ad utenti e amministratori di apportare modifiche dirette ai file di sistema. Questo approccio mira a garantire coerenza e stabilità del sistema operativo, prevenendo modifiche non autorizzate che potrebbero compromettere la sicurezza o la coerenza del sistema.

Quando sono disponibili aggiornamenti di sistema o dei programmi, viene creata una versione completamente nuova del sistema che integra i nuovi pacchetti, le modifiche e le configurazioni necessarie. L'immagine del sistema rimane immutata durante l'utilizzo del sistema, dopo ogni riavvio e gli aggiornamenti vengono applicati solo creando una nuova immagine.

Modello distribuzioni Linux immutabili

In breve, mentre nei sistemi tradizionali Linux gli amministratori hanno il controllo completo e la flessibilità per apportare modifiche in qualsiasi momento. Nei sistemi immutabili con file system in sola lettura, l'accento è posto sulla coerenza, sulla sicurezza e sulla facilità di gestione.

Le distro immutabili, di grande moda ai nostri giorni, hanno radici che risalgono a diversi anni fa. Queste distribuzioni hanno contribuito a plasmare il concetto di immutabilità nel contesto Linux, influenzando lo sviluppo e la progettazione di sistemi operativi. L'adozione di queste pratiche è stata guidata principalmente dalla necessità di garantire stabilità, sicurezza e facilità di gestione, prima di tutto in ambienti complessi.

Caratteristiche delle distribuzioni Linux immutabili

Questo differente approccio delle distribuzioni immutabili nella gestione del sistema e dei pacchetti, presenta una serie di caratteristiche interessanti tra cui:

  1. Read-only (sola lettura): Come accennato, caratteristica principale di un sistema operativo immutabile è che alcune parti di esso o l'intero file system root viene montato in sola lettura e non può essere modificato direttamente dall'utente o dalle applicazioni. Ciò è particolarmente vero per sistemi desktop con alcune eccezioni.
  2. Stabilità e Riproducibilità: Le distribuzioni immutabili assicurano che ogni installazione sia identica su qualunque PC venga eseguita, garantendo stabilità e riproducibilità anche su computer dalle caratteristiche differenti.
  3. Rollback (ripristino) Semplificato: In caso di problemi a seguito di un aggiornamento, è possibile tornare rapidamente a una versione precedente, garantendo massima affidabilità e stabilità del sistema. Senza complicazioni e senza nemmeno prevedere e pianificare istantanee del sistema.
  4. File System Overlay: l'immutabilità non è sinonimo di immodificabilità. L'utente deve poter salvare documenti ed eseguire operazioni che producano effetti nel tempo. Si ricorre spesso all'overlay, letteralmente sovrapposizione, di file system: a quello del sistema, ne viene sovrapposto un altro, separato, che permette all'utente una certa autonomia, senza rischi per quello principale sottostante.
  5. Isolamento dei Pacchetti: Dal momento che il sistema è immutabile, le applicazioni vengono spesso eseguite in appositi contenitori, isolati dal resto del sistema e sono solitamente fornite di tutte le dipendenze, condividendo con il sistema stesso solo parte delle risorse, con ciò riducendo il rischio di conflitti tra pacchetti.
  6. Sicurezza Potenziata: La natura immutabile garantisce quindi massimi livelli di sicurezza ed una riduzione della c.d. superficie di attacco grazie alla protezione da modifiche non autorizzate o errori.

Ambiti di adozione

Le distribuzioni immutabili non nascono per l'uso dell'utente comune e si rivelano particolarmente adatte in scenari come:

  • Ambienti Server Critici: Dove stabilità e sicurezza sono prioritarie.
  • Ambienti di Sviluppo: Per garantire che tutte le persone coinvolte lavorino nello stesso ambiente di sviluppo.
  • IoT (Internet delle cose): Per garantire maggiore sicurezza e semplicità di gestione di dispositivi elettronici di ogni genere
  • Sistemi Distribuiti: Per semplificare la gestione di c.d. cluster e infrastrutture distribuite.

Ciò nonostante, in linea con le tendenze più recenti, differenti sistemi operativi immutabili si stanno proponendo in versione desktop anche per l'utilizzo quotidiano di singoli utenti.

Aggiornamenti Atomici: la chiave della stabilità

Spesso associato alle distribuzioni Linux immutabili, è il concetto di aggiornamenti atomici o transazionali. In termini semplici, un aggiornamento atomico è un'operazione che viene eseguita completamente o non viene eseguita affatto. Questo principio si ispira al mondo dei database, dove un'operazione è considerata un'entità indivisibile, anche se consiste in una serie di differenti passaggi per il completamento.

Quando si applica un aggiornamento atomico in una distribuzione immutabile, il sistema operativo viene ricostruito per intero, tramite una nuova immagine che ricomprende le modifiche apportate. Questa immagine viene quindi resa attiva e sostituisce la precedente. Se l'aggiornamento fallisce per qualsiasi motivo, il sistema può facilmente tornare allo stato precedente, mantenendo integrità e operatività senza complicazioni.

I principali vantaggi degli aggiornamenti atomici sono quindi:

  • Consistenza: Gli aggiornamenti atomici garantiscono che il sistema sia sempre in uno stato coerente e funzionante.
  • Rollback Sicuro: In caso di problemi durante l'aggiornamento, il sistema può essere facilmente ripristinato alla versione precedente senza complicazioni né impatti negativi.
  • Riproducibilità: Ogni aggiornamento atomico è un evento isolato e ciò garantisce che l'ambiente rimanga coerente e prevedibile in qualunque computer venga eseguito.

Installazione di programmi nelle distribuzioni Linux immutabili

La protezione da modifiche per le parti più delicate del sistema e la particolare attenzione alla sicurezza, impongono di adottare particolari accorgimenti per l'installazione di nuovi software. Gli approcci più comuni nelle distribuzioni Linux immutabili sono la containerizzazione, la gestione dichiarativa e gli store basati su flatpak e snap.

I container: Docker, Podman, Kubernetes

Nelle distribuzioni immutabili, l'installazione di programmi spesso avviene attraverso l'uso di container. Questo approccio consente di isolare dal resto del sistema l'esecuzione di una o più applicazioni, in quella che è definita una sandbox.

Immagina un container come una piccola scatola virtuale che include tutto ciò di cui un'applicazione necessita per funzionare: il codice dell'applicazione, le librerie di supporto e tutte le altre cose di cui ha bisogno (le c.d. dipendenze). Puoi quindi eseguire facilmente questo container su qualsiasi altro computer o server che supporti container, senza preoccuparti delle differenze di configurazione del sistema ospite.

Containerizzare un'applicazione è come metterla in una scatola magica. Ciò la rende più facile da spostare e gestire, e garantisce che funzioni sempre nello stesso modo, ovunque venga eseguita. Una minima condivisione di risorse e dipendenze del sistema, riduce così il rischio di conflitti.

L'uso di ambienti isolati facilita anche la pulizia del sistema. Se si decide di rimuovere un'applicazione, l'intero suo ambiente isolato può essere facilmente eliminato senza influenzare altri componenti del sistema.

I meccanismi ad oggi più utilizzati per containerizzare applicazioni sono Docker, Podman e Kubernetes. Questi includono una porzione di sistema operativo che sfrutta il kernel e alcuni servizi del sistema ospite per funzionare in una sorta di macchina virtuale semplificata.

Gestione Dichiarativa

Un differente approccio per l'installazione di programmi (e non solo) è quello della c.d. gestione dichiarativa dei pacchetti e della configurazione del sistema, adottata ad esempio da NixOS. Con la gestione dichiarativa l'utente dichiara in modo esplicito cosa desidera nel sistema, piuttosto che apportare modifiche dirette.

In NixOS la configurazione è affidata ad un file (configuration.nix) in cui si dichiara infatti come deve essere configurato il sistema, quali pacchetti installare, quali servizi devono essere attivi.

Questo innovativo approccio garantisce che installazione e gestione delle applicazioni siano prevedibili e riproducibili. Per riproducibilità si intende che gli sviluppatori possono condividere facilmente il solo file di configurazione, il che basta a garantire che tutti lavorino con lo stesso ambiente.

Quando si installa un pacchetto o si configura un servizio, NixOS crea un ambiente isolato per quel pacchetto. Ogni pacchetto ha le sue copie delle librerie e delle dipendenze specifiche necessarie per eseguire quell'applicazione. Questo elimina la necessità di condividere le librerie di sistema globali tra le applicazioni. Inoltre riduce significativamente i conflitti tra applicazioni che potrebbero richiedere versioni diverse di librerie o dipendenze.

Store di Applicazioni Centralizzato

Alcune distribuzioni immutabili, specie quelle rivolte all'utente comune, possono includere uno store di applicazioni centralizzato, che semplifica il processo di installazione di nuovi programmi. Spesso si tratta di applicazioni che prevedono già un'esecuzione isolata dal sistema, come quelle installabili in formato Flatpak da Flathub o gli Snap dello store di Ubuntu. Anche il formato portabile e indipendente dalla distribuzione AppImage trova spazio e applicazione nelle distro immutabili.

Tuttavia, in tutti gli altri casi, come ho detto poc'anzi, installare programmi aggiuntivi in una distro immutabile, richiede l'aggiornamento dell'intera immagine del sistema.

Distribuzioni Immutabili popolari e aspiranti tali

Ed ora passiamo in rassegna una serie delle distro immutabili più popolari.

Fedora Silverblue

L'edizione Silverblue di Fedora, storica distribuzione di Red Hat, è una variante di Fedora Workstation e si propone come sistema operativo immutabile. È rivolta principalmente a professionisti dell'informatica, specie sviluppatori di software, grazie al supporto avanzato di container.

L'esperienza desktop risulta identica a quella della edizione workstation standard ma il sistema è il medesimo in qualunque computer lo si esegua. Gli aggiornamenti sono veloci e non c'è attesa per l'installazione. Un normale riavvio normalmente è sufficiente per utilizzare l'ultima versione disponibile o tornare a una versione precedente, se necessario.

logo Fedora Silverblue

Vanilla OS

Vanilla OS nasce su iniziativa del medesimo sviluppatore italiano cui dobbiamo l'applicazione Bottles per la migliore gestione in Linux di software per Windows. È un sistema basato su Ubuntu con ambiente GNOME puro. Si propone di superare alcuni limiti di vari sistemi operativi tradizionali nell'affidabilità, nella gestione di aggiornamenti e nella disponibilità di software, spesso datati, che costringono all'uso di Flatpak o Snap.

Vanilla OS prevede un file system montato in sola lettura, tipico delle distribuzioni Linux immutabili, associato ad un gestore pacchetti appositamente previsto. APX allestisce un container per ogni programma installato e lo isola dal sistema. Oltre al supporto per software su base Debian/Ubuntu permette l'integrazione di pacchetti apk, AUR, e DNF di Fedora. Aggiornamenti atomici intelligenti ed automatici, garantiscono l'applicazione nei momenti di minore carico sulle risorse e fanno di Vanilla OS un sistema assai promettente.

logo Vanilla OS

BlendOS

BlendOS è una rolling release su base Arch che si propone come soluzione al distro-hopping. Oltre al proprio gestore di pacchetti blend e a quello pacman per l'installazione dai repository Arch, grazie al ricorso combinato di podman e distrobox (anch'esso opera di un italiano), BlendOS permette di integrare nativamente anche pacchetti APT di Debian/Ubuntu e DNF di Fedora.

Si tratta di una distribuzione immutabile, atomica e dichiarativa che prevede una ISO dotata del minimo indispensabile in stile Arch. Una volta integrate le estensioni APT e DNF, BlendOS allestisce un apposito contenitore per tutti i medesimi pacchetti della stessa natura. BlendOS prevede l'ambiente GNOME e Wayland ma supporta anche KDE, MATE e Xfce.

logo Blend OS

NixOS

NixOS, lanciato nel 2013, non è stato originariamente concepito come una distribuzione immutabile. Ma il suo modello dichiarativo di gestione dei pacchetti e la capacità di rollback hanno contribuito al concetto di immutabilità.

La gestione dichiarativa è stata un antesignano delle distribuzioni immutabili moderne. NixOS implementa aggiornamenti atomici attraverso il concetto di "generazione". Ad ogni modifica, ha luogo una nuova generazione dell'ambiente. Gli utenti possono facilmente passare da una generazione all'altra, garantendo un rollback sicuro in caso di problemi.

logo NixOS

Ubuntu Core Desktop

Canonical, la società dietro Ubuntu, ha introdotto Ubuntu Core nel 2014. Progettato principalmente per dispositivi IoT (Internet delle cose) e altri dispositivi non-desktop, Ubuntu Core presenta un sistema di aggiornamenti atomici e una gestione snodata dei pacchetti, affidata a Snap.

Malgrado gli ambiti di adozione originalmente previsti, in concomitanza con il lancio della versione 24.04 LTS prevista per la primavera 2024, sarà resa disponibile anche una versione desktop immutabile di Ubuntu che integrerà esclusivamente pacchetti Snap. Evidentemente Canonical ritiene che i tempi siano maturi per questo tipo di soluzioni, che si tratta di semplificazione nella gestione di ambienti complessi o dell'utente comune che non potrà danneggiare involontariamente il sistema, con il risultato di maggiore affidabilità.

logo Ubuntu Core

Endless OS

Endless OS è una distribuzione Linux basata su Debian e rilasciata con ambiente GNOME. Progettata per essere intuitiva, accessibile e focalizzata sull'accesso a risorse educative e informative. Una edizione minima prevede una ISO di circa 3,5 GB. Ma sono previste anche edizioni in inglese, francese, spagnolo e portoghese che integrano una ricchissima dotazione di software e una versione offline di Wikipedia che fanno lievitare le ISO oltre i 14 GB ciascuna.

Queste ultime hanno lo scopo dichiarato di rendere accessibili importanti risorse educative anche laddove una connessione internet stabile non sia possibile. Endless OS implementa un file system denominato immortale che consente agli utenti di eseguire il rollback del sistema a uno stato precedente in caso di problemi.

logo Endless OS

OpenSUSE Aeon e Kalpa

Aeon e Kalpa, sono recenti novità introdotte dalla comunità OpenSUSE e si prefiggono lo scopo di far confluire l'esperienza maturata con l'OS minimale MicroOS nel desktop della workstation Tumbleweed. File system immutabile e controllo di versione, aggiornamenti atomici e l'ampio affidamento su container, fanno di esse esempi calzanti di distribuzioni Linux immutabili.

Le principali differenze tra Aeon e Kalpa risiedono negli ambienti desktop adottati, rispettivamente GNOME e Plasma. Il sistema operativo è minimo e si presta ad una amplissima gamma di applicazioni. È scalabile: quindi adatto a dispiegamenti massivi su grandi reti ma nello stesso tempo è in grado di offrire il massimo anche su una singola macchina.

logo OpenSUSE

Altre menzioni d'onore

Concludono la mia carrellata di distribuzioni Linux immutabili per il desktop, alcune segnalazioni di altri più o meno nuovi e promettenti:

  • rlxOS: progetto indipendente e costruito da zero su desktop Xfce, immutabile, atomico e ottimizzato per i container;
  • carbonOS: anch'esso indipendente, immutabile, atomico e rilasciato con ambiente GNOME;
  • Talos Linux: si definisce il sistema operativo per il gestore di contenitori Kubernetes che funziona con molti sistemi di containerizzazione, compreso Docker;
  • Flatcar Container Linux: progetto comunitario creato per flussi di lavoro basati su container;
  • Guix: distro immutabile del progetto GNU con gestione dichiarativa di pacchetti, aggiornamenti atomici e rollback semplificati;
  • Bottlerocket: la distro Linux immutabile progettata da Amazon Web Services per eseguire container ed ottimizzata per l'infrastruttura EC2.

Riassumendo

Le distribuzioni Linux immutabili offrono una prospettiva innovativa sulla gestione del software, con vantaggi significativi in termini di consistenza e sicurezza.

Gli aggiornamenti atomici sono la linfa vitale delle distribuzioni Linux immutabili, assicurando la stabilità e la sicurezza del sistema operativo. Questo approccio rivoluziona la gestione del software, fornendo un modo robusto e coerente per mantenere i sistemi aggiornati.

È essenziale considerare attentamente le possibilità e le limitazioni, valutando se l'approccio immutabile si adatti alle esigenze specifiche dell'utente o dell'organizzazione. L'uso di container, la gestione dichiarativa e strumenti specifici della distribuzione, possono rendere il processo più agevole, ma richiedono una curva di apprendimento per gli utenti meno esperti.

Questi ultimi possono comunque contare su una grande affidabilità del sistema e sull'integrazione di software in formati come flatpak, snap e AppImage per ridurre al minimo i problemi di inconsistenze.

Tu hai già sperimentato distribuzioni Linux immutabili? Faccelo sapere nei commenti. Ti piacerebbe che approfondissi con un apposito focus una di quelle citate? A tal proposito ho allestito un sondaggio nella sezione Community del canale YouTube.

Diffondi la conoscenza!

4 commenti su “Distribuzioni Linux immutabili”

  1. Ciao Dario.

    Ottimo video ed articolo nei quali hai catturato ed esposto in maniera chiara i principi ispiratori delle distro imutabili.

    La mia esperienza con le distro immutabili è limitata ad openSUSE, Aeon in particolare, basata su openSUSE Tumbleweed e su Gnome, che porta il nome da me proposto alla community.

    Aeon è estremamente solida, di base molto leggera, in rapida evoluzione essendo la base rolling bleeding edge, Flathub e Distrobox sono preconfigurate e rendono veramente semplice l’amministrazione, i tool per modificare la parte immodificabile, ovvero per apportare le modifiche che saranno attive dal prossimo avvio di sitema, richiedono un po’ di pratica iniziale ma sono molto potenti.

    Viene implementato un interessante concetto di controllo di stabilità grazie al quale se un’immagine non riesce ad avviarsi il sistema ritorna in modo automatico alla versione precedente.

    Pro e contro rispetto ad altre immutabili? Non so, non ho provato le altre.

    Nonostante la mia parzialità dischiarata per openSUSE, penso che la distro da provare e mostrare alla tua community sia Silver Blue, sicuramente l’immutabile per uso desktop generico più consolidata ad oggi, tuttavia se ne provi due e fai un raffronto perchè non Aeon?

    Mi permetto anche di suggerirti di realizzare un contenuto specifico su Distrobox: i cauti e fedelissimi utenti di Linux Mint avrebbero un modo per eseguire software all’ultimo grido senza rischiare di manomettere il sistema.

    Ancora complimenti per l’ottima realizzazione di quest’ultimo contenuto.

    Gabriele

    Rispondi
  2. Ciao Dario, questo è un argomento interessante anche perchè offre una più ampia platea di distribuzioni da provare….magari per il distro-hopping. Ti ho seguito anche su Youtube. In realtà non ti sarei utile con la mia esperienza poichè le distro immutabili le ho volutamente evitate per vari motivi per molto tempo.
    -Mi piace di primo acchito un sistema operativo semplice, senza fronzoli, come Mint o LMDE6
    – Non mi piace avere un sistema operativo con i file in sola lettura poichè mi limita le capacità di configurazione del sistema. Ho provato alcuni programmi come ad es. AppImage ed ho avuto una esperienza negativa perchè alcuni non funzionavano, pochi in realtà,…e presumo perchè alcune app “impacchettate” avevano al loro interno delle dipendenze che per una distro andavano bene, ma per un’altra creavano problemi. E alcune volte ho preferito la app originale con non dava problemi con l’integrazione nel sistema.
    -Non ho capito se usando tali sistemi ci sia un calo delle prestazioni delle app
    -Avrei anche delle perplessità nell’installare i driver, come ad esempio della stampante, su un sistema che ti impedisce la modifica.
    -Su windows ho sperimentato che alcuni antivirus usano proprio dei file a sola lettura proprio come sicurezza per impedire ai virus di disattivare, o modificare, l’antivirus stesso. E alcuni antivirus in prova non riesci più a disinstallarli e devi riaccendere il computer in modalità provvisoria utilizzando le loro utility per cancellarlo.
    -E’ innegabile che una distro immutabile sia l’ideale per un server oppure per un’azienda che mette in primo piano la sicurezza. Per un utente normale forse ci sarebbero delle limitazioni che presumo che per alcuni sarebbero inaccettabili. Rimango in attesa di leggere se qualche utente non solo le ha provate……ma utilizzate per molto tempo e che effetto ha avuto sull’interazione delle applicazioni in modo intensivo per capire se l’utente normale “casalingo” avrebbe dei vantaggi ad utilizzarlo. In altre parole: mi atttira la sicurezza ma vorrei capire il prezzo da pagare. Grazie Dario per la recensione e continua così.

    Rispondi
    • Ciao Giovanni.

      Ti confermo di aver utilizzato openSUSE Aeon per qualche mese e di averne apprezzato i meccanismi.

      Il mio caso d’uso é processamento office leggero foglio elettronico e word processor, web browsing, email, media sia i streaming che in locale.

      Non gioco, non faccio video editing e ne call sulla macchina Linux.

      In fin dei conti per me il vantaggio di Aeon rispetto a Tumbleweed su cui si basa, non é molto.

      Tumbleweed infatti offre per default snapshot btrfs avviabili da grub e un semplice meccanismo di rollback del sistema in caso di necessità, del resto tutte le versioni di openSUSE offrono queste funzionalità. A onore del vero credo di aver usato il rollback forse 4 o 5 volte in 10+ anni e sempre perché avevo fatto io qualche sperimentazione spericolata.

      Vale la pena utilizzare una immutabile sul desktop? Si per coloro che desiderebbero una distro molto fresca ma temono la frequenza degli aggiornamenti e perciò stanno su una LTS. C’è tuttavia da affrontare una curva di apprendimento iniziale per comprendere il funzionamento.
      Oppure per chi vuole impostare un ambiente di sviluppo con una base solida ed un insieme di container, di nuovo sono gli stessi utenti che ultozzerebbero una LTS con containers.

      Gabriele

      Rispondi
    • Ciao Giovanni e Gabriele, grazie ad entrambi. Finora forse il paradigma immutabile è stato più orientato alle grandi realtà o ad ambienti di sviluppo e quindi non per tutti. Anche io ho notato in diverse di queste un approccio come dice Gabriele, inadatto alla messa in opera per un nuovo utente di Linux. Di certo la nuova tendenza, a cui si allinea anche Canonical con Ubuntu Core Desktop 24.04, è quella di fornire un sistema sicuro ad un utente che non dovrebbe accorgersi della differenza con una in lettura/scrittura se ben configurata e dotata di software installabili con un clic. Un po’ come avviene da sempre con Android, MacOS e ChromeOS. Tu utente, installa le app con un clic e non fai altro. Quando sono rilasciati aggiornamenti, la nuova immagine viene scaricata e preparata, e al riavvio hai il nuovo sistema.
      Non è detto che l’approccio sia solo per limitare l’utente come negli OS commerciali, ma incrementi sicurezza affidabilità non meno che la semplicità per gli sviluppatori di fornire un ambiente coerente. In questo senso non limitativo e senza necessità di imparare un linguaggio per dichiarare configurazioni, sono rimasto molto positivamente impressionato da Vanilla OS, più che da BlendOS. Pare quindi che questo possa essere il futuro anche di distro per tutti.
      Grazie a te Giovanni per la tua fiducia e per il tempo che ci dedichi.

      Rispondi

Lascia un commento