Molti utenti che si avvicinano per la prima volta a Linux, scelgono la loro prima distribuzione (o distro) quasi esclusivamente per l'aspetto estetico, ignorando (non certo per colpa!) cosa si nasconde "sotto il cofano" di una distribuzione e quello che davvero fa la differenza tra l'una e l'altra. Intendiamoci, non c'è niente di male in questo ma imparare a conoscere di quali elementi chiave si compone una distro e sceglierla anche in base a questi elementi, può aiutare a trovare prima la "distro perfetta" (che ogni utente Linux utilizza!!), evitando (o riducendo) quella che è una sindrome molto comune tra i newbie, il distro hopping o salto di distribuzioni. In questo breve "viaggio all'interno di una distro", ci concentreremo ovviamente solo su quelle vocate all'utilizzo Desktop, ignorando quelle che sono appositamente create per un altro scopo (server, embended, ...).

Anatomia distro Linux

Attualmente, ci sono più di 250 distribuzioni in sviluppo attivo ma quelle "originali" (o indipendenti) sono poco più di 55! La maggior parte delle distro attive infatti derivano tutte da una manciata di distribuzioni fra le più conosciute e se guardiamo bene la timeline delle distribuzioni, possiamo vedere che quelle principali da cui partono tutte le derivate sono appena 6.

Ma perché ci sono così tante distribuzioni e che cosa è una distro "derivata"?

La natura aperta del progetto Linux e degli altri elementi di cui si compone una distro (e che vedremo in seguito) consente, legalmente, a chiunque sia interessato, di comporre la propria distro. Per farlo si può partire da zero (come nel caso di Linux from scratch) oppure si può prendere una distro già avviata per sfruttarne gran parte del lavoro e creare una cosiddetta "derivata" che si distingue dall'originale solitamente per un semplice cambiamento (ad esempio, l'aspetto estetico) ma alcune derivate si spingono molto oltre, arrivando a stravolgere quasi il progetto da cui si originano.

Inoltre da una stessa distro, possono avere origine derivate compatibili (chiamate in alcuni casi spin in altri flavor) o non compatibili con il progetto originale. La differenza tra questi due tipi è da ricercare nei repository, ovvero dalla fonte dalla quale si prendono i pacchetti contenenti i programmi da installare: nelle distro compatibili, i repository sono gli stessi della distro di origine mentre in quelle non compatibili i repository possono essere totalmente diversi oppure avere solo qualche fonte aggiuntiva in più. Per fare un esempio concreto possiamo guardare a Ubuntu: le derivate compatibili (in questo caso chiamate flavor) sono Kubuntu, Lubuntu, Xubuntu, ... mentre una derivata non compatibile è Linux Mint.

» Leggi: Come passare facilmente da Ubuntu a Kubuntu, Xubuntu, Lubuntu, Ubuntu Mate, Ubuntu Studio, Budgie Ubuntu e viceversa

Allora, quali sono gli elementi che contraddistinguono una distro dall'altra?

In caso di distro originali, cioè non derivata l'una dall'altra, queste possono differire anche per ogni elemento e, nonostante parliamo pur sempre di Linux, possono differire anche dal kernel utilizzato (versioni, patch, compilazione, ...). Vediamo adesso, in ordine sparso, quali sono alcuni elementi chiave che possono differire tra una distro o l'altra ma teniamo sempre presente che ogni distribuzione Linux è un sistema modulare e ogni modulo può quasi sempre essere sostituito o in alcuni casi addirittura rimosso più o meno facilmente.

0 - Ideologia

La prima cosa che contraddistingue una distro dall'altra, forse farà rimanere molti lettori delusi perché non si tratta di una cosa "tecnica" ed è l'ideologia, la filosofia, la motivazione che ha spinto a crearla. In base a questa infatti vengono prese decisioni sulle caratteristiche che dovrà avere il software che verrà poi integrato nella distro.

Alcune distro (come ad esempio Debian e molte altre) vogliono essere libere da qualunque software proprietario (c'è chi porta anche all'estremo questa filosofia come Trisquel), per contro ci sono altre, magari derivate direttamente da queste che, per favorire l'utente, integrano anche questa categoria di software. Altre intendono essere le più leggere e veloci possibili come PuppyLinux, mentre altre invece puntano sulle prestazioni e ad offrire "eye candy" (caramelle per gli occhi) come Garunda; molte offrono un'esperienza Desktop completa (integrando tutti i programmi di uso comune) mentre altre rimangono minimali lasciando all'utente ampia possibilità di personalizzazione (comunque sempre possibili su Linux!) come ArchLinux; alcune puntano tutto sulla stabilità (Slackware), altre sulle ultime innovazioni (Fedora);...

Anatomia distro Linux

1 - Release

Un elemento chiave, a cui personalmente do molta importanza, è il tipo di rilascio o release. Ci sono due principali metodi di rilascio: a "scalino" o a "nastro" più comunemente dette a step o rolling. Le prime si contraddistinguono perché versioni aggiornate vengono rilasciate generalmente una o più volte l'anno (alcune vengono rilasciate anche a distanza di alcuni anni, come nel caso di Slackware) mentre le altre hanno un ciclo di sviluppo continuo e vengono aggiornate man mano che escono nuove versioni del software che montano.

Questo non vuol dire che le distro con rilascio a "scalino" non si aggiornano mai tra uno step e l'altro ma vengono comunque rilasciati aggiornamenti di sicurezza dei programmi (a volte anche solo come patch di sicurezza piuttosto che avanzamento di versione), solo che la base del sistema rimane quasi del tutto invariata, prediligendo in questo modo la stabilità del sistema (meno componenti si cambiano, meno probabilità di errori si ha). Al contrario le distro con rilascio "rolling" puntano sull'avere l'ultima versione disponibile di un programma (che su Linux spesso si traduce in nuove funzioni!): in questo modo si mette un po' a rischio la stabilità del sistema più suscettibile ad errori.

Rolling release uguale sistema instabile non è comunque un'uguaglianza sempre vera, anzi distro come, la già citata, ArchLinux o OpenSuse Tumbleweed hanno dimostrato bene il contrario!

Anatomia distro Linux

2 - init system

Entriamo adesso un po' più nel tecnico e parliamo del sistema init ovvero il primo programma avviato direttamente dal kernel Linux che è responsabile del caricamento di tutti gli altri programmi, siano essi servizi, programmi di gestione della grafica o programmi per l'utente.

Ormai questo campo è quasi del tutto monopolizzato da systemd che con la sua capacità di eseguire programmi in parallelo, consente avvii più veloci, la possibilità di gestire facilmente demoni (servizi) alla bisogna e la capacità di isolare i programmi dal sistema facendo leva sulle più recenti caratteristiche di sicurezza introdotte nel kernel Linux.

Ma systemd sta evolvendo in un sistema più grande e complesso, in grado di gestire in maniera efficace ed efficiente molte altre parti del sistema operativo (boot, mount, rete, DNS, log, account, sincronizzazione, ...) ed è per questo che ci sono distro che pensano che systemd sia un inutile complicazione e che preferiscono un avvio del sistema vecchio stile (composto da una serie di lunghi shell script), più semplice (o forse solo più conosciuto... ) ma decisamente più snello. È il caso di Alpine Linux, Void Linux ed è anche il motivo per cui è nata Devaun, un fork di Debian (attenzione fork, non derivata!!)

Anatomia distro Linux

2 - Grafica

Parlando di grafica, non si può non accennare all'aspetto estetico, elemento senza dubbio distintivo ma certamente non in maniera sostanziale dato che, con un po' di lavoro, è possibile trasformare (esteticamente!) una distro in un altra (vedi Fedora che assomiglia da Ubuntu) o addirittura arrivare a copiare il layout di altri sistemi (Ubuntu come MacOS o come Windows 11).

Piuttosto, da segnalare, c'è sicuramente il programma che gestisce la grafica dalle fondamenta. Fino a qualche anno fa, non c'era scelta: l'unica possibilità era il server grafico X Window System (poi diventato Xorg). Oggi però possiamo scegliere anche un nuovo sistema per creare e gestire l'aspetto grafico: Wayland. Al contrario di Xorg non è un server grafico ma un protocollo per gestori di finestre moderni (come, ad esempio, Weston, Mutter o KWin) che integrano molte delle funzioni che su Xorg sono delegate ad altri programmi (come i compositing window manager). Fattori importanti per la scelta sono la maggior sicurezza (isolamento dell'input e dell'output delle singole finestre ed esecuzione come utente anziché come root!) ed efficienza di Wayland (progettato apposta per superare i limiti di Xorg) contro la stabilità e (per adesso) la compatibilità con driver video proprietari (NVIDIA) e applicazioni che richiedono interazione con le altre finestre (come ad esempio alcuni programmi per catturare screenshot) di Xorg.

L'importanza nella scelta di questi due diversi sistemi implica quasi sempre dover scegliere un Desktop Enviroment (o ambiente Desktop, l'interfaccia grafica principale) compatibile: Wayland è attualmente supportato solo da due (ma aumenteranno di sicuro in un prossimo futuro): Gnome e KDE. Linux Mint, distro molto in voga fra i newbie, ad esempio, nelle sue varianti principali non offre nessun Desktop Enviroment che supporta Wayland.

Anatomia distro Linux

3 - Package manager

Un altro elemento che contraddistingue una distro è il package manager ovvero il sistema che gestisce l'installazione dei programmi e gli aggiornamenti degli stessi. In base alla scelta di questo si può avere accesso ad un bacino più o meno ampio di programmi e applicazioni subito pronte per il nostro sistema.

Il package manager di Debian, dpkg (e le sue varie e diverse interfacce), che gestisce i pacchetti con estensione .deb, per esempio, offre la più vasta scelta di programmi disponibili, mentre con il package manager rpm (e, anche in questo caso, le sue varie e diverse interfacce) che gestisce i pacchetti con estensione omonima, già offre un catalogo più ristretto; un package manager caratteristico di una sola distro probabilmente porterà ad un ancora più ristretta disponibilità di software.

Va ricordato che è comunque sempre possibile installare software partendo da codice sorgente (anche se generalmente è una cosa che si tende ad evitare se non strettamente necessario) e l'avvento delle applicazioni "portable" (come Flatpak, supportato nativamente già da molte distro) amplia la scelta di programmi che è possibile installare.

» Leggi: Come si installa un programma su Linux?

4 - Filesystem

Andando ancora un po' più sul tecnico, possiamo individuare altre differenze tra cui il filesystem. Per chi proviene da Windows potrà sembrare strano poter installare il sistema su una diversa varietà di filesystem ma su Linux si può anche scegliere questo aspetto. Solitamente la scelta del filesystem non è una caratteristica fissa di una distro; anche se ne viene scelto uno di default, si può quasi sempre cambiarlo in fase di installazione con le opzioni avanzate (addirittura in alcuni casi si può cambiarlo anche dopo l'installazione senza dover formattare!). Per gli utenti poco esperti però meglio affidarsi alle opzioni di default e provare a scegliere una soluzione già pronta anche in base a questo.

Il filesystem che, in ambito Desktop, si è affermato per stabilità e prestazioni è senza dubbio ext4, scelto come soluzione predefinita da moltissime distro. Ma adesso c'è anche Btrfs, filesystem moderno con un sacco di funzioni molti utili come la deduplicazione online (che consente di risparmiare spazio su disco), la possibilità di creare snapshot del sistema (molto utile per tornare ad uno stato precedente un aggiornamento o recuperare un file cancellato, ad esempio) e la capacità di creare "sottovolumi" da poter trattare come partizioni (con la possibilità di assegnare opzioni di mount specifiche) ma senza limitazioni di spazio. Lo stato dell'arte nell'utilizzo di Btrfs è sicuramente quello di OpenSuse, mentre Ubuntu fa ancora affidamento sul buon vecchio ext4.

Anatomia distro Linux

5 - Bootloader

Il bootloader è il programma che gestisce l'avvio del sistema operativo. Più precisamente, il bootloader viene caricato dal BIOS o dall'UEFI e a sua volta carica il kernel del sistema operativo.

Nei sistemi con UEFI si potrebbe anche fare a meno del bootloader in quanto riescono a caricare direttamente il kernel Linux, per un avvio molto più rapido. Ma in caso di dual boot con Windows (sempre consigliato per un passaggio indolore a Linux!) o per avere un sistema con installazione criptata o ancora in caso si voglia sfruttare la possibilità di strumenti avanzati per l'avvio (utili per esempio in caso di problemi con un aggiornamento) molto meglio avere un bootloader.

Anche in questo campo, c'è una sorta di monopolio detenuto da GRUB e il motivo è semplice: offre un ottimo supporto per i sistemi con UEFI, è compatibile con quasi tutti i moderni filesystem, gestisce dischi criptati e offre opzioni di avvio avanzato che si possono anche espandere con appositi plugin.

Ma ci sono distro che per impostazione predefinita continuano ad utilizzare sistemi più semplici e leggeri, molto veloci ad avviare una distro Linux ma che hanno altri limiti (non supportano completamente UEFI, possono avere problemi a gestire un dual boot con Windows, non supportano i filesystem più moderni, ... ); è il caso delle già citate Slackware (che utilizza ELILO, la versione per UEFI di LILO) e AlpineLinux (Syslinux).Inoltre all'orizzonte sta emergendo un nuovo bootloader che fa parte di systemd (systemd-boot) e che è già adottato da alcune distro come, ad esempio, Solus, ClearLinux e Pop_OS!.

Va sempre tenuto presente che quasi tutte le distro supportano anche altri bootloader e che, in caso di necessità, possiamo sostituire quello predefinito con uno più moderno (ad esempio, rEFInd).

Anatomia distro Linux

» Leggi: Da Windows a Linux: guida per un passaggio indolore