Kernel Linux e distribuzioni

Questa è una guida lunga e meditata sul kernel Linux e sulle distribuzioni: cosa sono, come funzionano, perché esistono tante “Linux” diverse e come scegliere quella giusta.

Fonti e letture ufficiali:


Introduzione: perché serve chiarezza

Quando qualcuno dice “uso Linux” spesso non è chiaro se intende il kernel, una distro specifica, un desktop environment, o una combinazione di tutto questo. Qui separo i livelli, li spiego e poi scendo nei dettagli tecnici: così, quando leggi una guida, sai se sta parlando del kernel, della distribuzione o del desktop.


Parte 1 — Il kernel (che cos’è e come funziona)

Cos’è il kernel, in parole semplici

Il kernel è il software che sta tra l’hardware e tutto il resto: processi, filesystem, rete. Gestisce scheduling, memoria, driver, I/O, sicurezza, networking. Senza kernel, il computer non sa cosa significhi “eseguire un programma”.

Tecnicamente: il kernel Linux è un kernel Unix-like, monolitico modulare (monolithic kernel con possibilità di caricare moduli), sviluppato upstream da una vasta comunità; la sua documentazione e i sorgenti sono su kernel.org.


Struttura interna del kernel (panoramica tecnica)

Il kernel non è “una cosa sola”: è un insieme di sottosistemi interconnessi. Ecco i principali, con un pelo di dettaglio tecnico.


Modelli di build: monolitico vs microkernel (nota)

Linux è “monolitico modulare”: la maggior parte delle funzionalità vive nel kernel address space per performance, ma è possibile caricare moduli dinamicamente. Non è microkernel (es. Minix, seL4), dove moltissimo viene spostato nello spazio utente.


Alcuni dettagli pratici per chi amministra


Parte 2 — Dal kernel alla distribuzione: che cosa aggiunge una distro

Una distribuzione mette insieme:

Il kernel è il motore. La distro è il veicolo completo.

Due distro possono condividere lo stesso kernel ma offrire esperienze molto diverse, perché cambiano tutti gli strati sopra di esso.


Parte 3 — Modelli di rilascio e loro implicazioni

Tre modelli principali:

  1. Rolling release

    • Aggiornamenti continui (Arch, openSUSE Tumbleweed).
    • Pro: sempre software fresco, driver e kernel nuovi, spesso migliore supporto hardware.
    • Contro: potenziali regressioni più frequenti, più attenzione richiesta.
  2. Point release (stable/LTS)

    • Release con versioni congelate per un periodo (Debian Stable, Ubuntu LTS, openSUSE Leap).
    • Pro: prevedibilità, test approfonditi, ideale per server.
    • Contro: software più vecchio, driver nuovi potrebbero non essere presenti.
  3. Hybrid / Fast release

    • Rilasci regolari ma con pacchetti aggiornati (Fedora).
    • Pro: bilancio tra stabilità e freschezza, politiche di testing strutturate.
    • Contro: occasionalmente richiede workaround per software proprietario.

Fedora Linux Kernel Overview sottolinea che il kernel Fedora segue da vicino le release upstream.


Parte 4 — Package manager e formato pacchetti (perché conta)

Il package manager condiziona tutto: installare, aggiornare, risolvere dipendenze, ripristinare pacchetti.

Impatto pratico:


Parte 5 — AppImage e Flatpak

Qui entriamo in due formati di distribuzione software molto importanti nel mondo Linux moderno: AppImage e Flatpak. Non sono distro, non sono package manager tradizionali e non sono semplici “archivi da aprire”: sono due modi diversi di consegnare applicazioni Linux in modo più portabile e meno dipendente dalla singola distribuzione.

AppImage

Un AppImage è un file eseguibile autocontenuto. L’idea è molto semplice: scarichi un singolo file, lo rendi eseguibile e lo avvii. Il progetto AppImage descrive chiaramente il modello come “upstream packaging”: idealmente è l’autore originale dell’app a costruire e distribuire il pacchetto, un po’ come succede con un .exe su Windows o un .dmg su macOS.

Perché piace

Come funziona davvero

Un AppImage non si “installa” nel senso classico: si scarica, si rende eseguibile con chmod +x, poi si avvia. Dentro contiene quasi tutto ciò che serve all’applicazione, con alcune dipendenze esterne minime a seconda del caso.

Gestione pratica degli AppImage

Una volta scaricato il file:

chmod +x NomeApplicazione.AppImage
./NomeApplicazione.AppImage

Alcuni AppImage si integrano con il desktop tramite menu, icone o launcher esterni, ma l’idea base resta la stessa: un file singolo, eseguibile, separato dal gestore pacchetti della distro.

Pro e contro

Pro:

Contro:

Quando ha senso usare AppImage


Flatpak

Flatpak è un sistema di distribuzione per applicazioni desktop che punta a essere indipendente dalla distro. Il sito ufficiale lo presenta proprio come un modo per distribuire app su diverse distribuzioni Linux con un modello moderno, sandboxato e centrato su runtime condivisi.

L’idea tecnica dietro Flatpak

Flatpak non consegna solo l’app: consegna anche una parte dell’ambiente necessario a farla girare, sotto forma di runtime. L’app viene eseguita in una sandbox che limita l’accesso al sistema, e riceve permessi specifici per accedere a file, rete, audio, webcam, USB e così via.

Perché è così usato

Installazione di Flatpak

Su molte distro moderne Flatpak è già presente o molto facile da installare.

Esempio base:

sudo dnf install flatpak

Poi di solito si aggiunge Flathub, che è il grande catalogo di app Flatpak più usato nel mondo desktop.

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Installare applicazioni Flatpak

Puoi installare un’app con il suo ID:

flatpak install flathub org.mozilla.firefox

Oppure da file locale .flatpak:

flatpak install --user NomeApp.flatpak

Avvio di un’app Flatpak

flatpak run org.mozilla.firefox

Gestione quotidiana

Flatpak ha una logica diversa dai pacchetti nativi della distro:

Comandi utili:

flatpak update
flatpak list
flatpak uninstall org.mozilla.firefox
flatpak info org.mozilla.firefox

Permessi e gestione sandbox

Il punto forte di Flatpak è la sandbox, ma a volte la sandbox va capita e regolata. Se un’app deve accedere a una cartella specifica o a una periferica, puoi gestire i permessi con strumenti come flatseal oppure con i parametri Flatpak.

flatpak override --user --filesystem=home org.mozilla.firefox

Pro e contro di Flatpak

Pro:

Contro:

Quando usare Flatpak


Gestire AppImage e Flatpak in pratica

La differenza utile da tenere a mente è questa:

Se vuoi semplicità assoluta

AppImage è spesso la strada più diretta.

Se vuoi manutenzione e aggiornamenti più ordinati

Flatpak è spesso la scelta migliore.

Se vuoi integrazione nativa con la distro

I pacchetti tradizionali (apt, dnf, zypper, pacman) restano la soluzione più “pulita” a livello di sistema.

Strategia pratica consigliata

Questa combinazione è spesso quella più sensata nella vita reale.


Parte 6 — Ambienti senza desktop e server

Non tutte le installazioni Linux hanno bisogno di un desktop grafico. Anzi, in moltissimi casi il desktop non serve affatto. Un server spesso deve solo esporre servizi: SSH, database, web server, storage, container, DNS, VPN, reverse proxy, mail server. In questi casi un’interfaccia grafica sarebbe solo consumo extra di RAM, CPU, spazio disco e superficie di attacco.

Perché si evita il desktop sui server

Cosa significa davvero “server senza desktop”

Significa che il sistema viene installato con un set minimo di componenti:

Di solito si arriva al sistema via terminale, locale o remoto, senza sessione grafica.

Esempio tipico

Un server può partire direttamente in modalità testuale, accedere via SSH e non avviare nessun ambiente grafico. Questo non lo rende “meno Linux”: lo rende semplicemente più adatto al suo compito.


Parte 7 — Runlevel, target e stati di avvio

Storicamente Linux usava i runlevel del vecchio sistema SysV init. Oggi quasi tutte le distro usano systemd, che lavora con i target. Il concetto però è simile: definire in che stato deve trovarsi il sistema all’avvio. systemd fornisce una mappatura di compatibilità tra runlevel e target, e la documentazione spiega che multi-user.target corrisponde ai vecchi runlevel 2, 3 e 4, mentre graphical.target corrisponde al runlevel 5.

Runlevel tradizionali

Mappatura con systemd

Con systemd, questi concetti si traducono in target:

La documentazione Oracle Linux mostra chiaramente questa corrispondenza e specifica anche che un server di produzione può usare multi-user.target per evitare di avviare l’interfaccia grafica.

Perché conta nella pratica

Se imposti il sistema su multi-user.target, il computer parte in modalità testuale con networking e servizi, ma senza desktop grafico. Questo è perfetto per server, VPS, nodi container, appliance e ambienti di amministrazione remota.

Comandi utili

systemctl get-default
systemctl list-units --type target
sudo systemctl set-default multi-user.target
sudo systemctl set-default graphical.target
sudo systemctl isolate multi-user.target
sudo systemctl isolate graphical.target

Quando usare cosa

Runlevel oggi

I runlevel non sono il modo moderno di pensare il boot, ma restano utili come linguaggio di compatibilità. runlevel oggi stampa soprattutto informazioni di compatibilità e non dovrebbe essere usato come modello principale di amministrazione nei sistemi moderni. Il riferimento giusto, in pratica, sono i target di systemd.


Parte 8 — Desktop, server e headless

A questo punto la distinzione è chiara:

Molte distro possono fare tutte e tre le cose, ma le scelte di installazione cambiano molto.

Esempio concreto


Parte 9 — Le distro principali (dettagli)

Debian

Ubuntu (e derivati)

Linux Mint

Fedora

Arch Linux

openSUSE


Parte 10 — Kernel versioning e backporting

Implicazioni:


Parte 11 — Init systems, systemd e alternative

Perché importa l’init system

L’init è il primo processo che parte (PID 1): gestisce il boot, servizi, unità, log e shutdown.

systemd

Alternative

Impatto pratico:


Parte 12 — Sicurezza: SELinux, AppArmor, altre politiche

SELinux

AppArmor

Cosa scegliere

Impatto pratico:


Parte 13 — Containers e virtualizzazione

Il kernel fornisce primitive usate da container (namespaces, cgroups) e da KVM (virtualizzazione hardware):

Distro moderne preparano immagini e kernel perfetti per container, e molte includono tool come Podman/ Docker/CRI-O. Fedora e CentOS/ Red Hat sono posizionate fortemente su questo ecosistema.


Parte 14 — Grafica: X11 vs Wayland, compositor e GPU

X11

Wayland

Distro:

GPU:


Parte 15 — File systems

La scelta influisce su snapshot, backup, performance e recovery.


Parte 16 — Strumenti amministrativi tipici per ogni famiglia


Parte 17 — Casi d’uso e raccomandazioni pratiche


Parte 18 — Troubleshooting base


Parte 19 — Approfondimenti utili


Parte 20 — FAQ tecniche rapide


Conclusione

Il kernel Linux è il nucleo tecnico che fa girare tutto.
La distro è il sistema completo che trasforma quel nucleo in un ambiente usabile.
Il desktop è l’interfaccia che vivi ogni giorno.

Capire questa distinzione ti cambia davvero il modo di leggere il mondo Linux. Non parli più di “Linux” come se fosse una sola cosa; inizi a vedere scelte, compromessi e obiettivi diversi.

Ed è qui che tutto diventa interessante: Debian sceglie prudenza, Ubuntu sceglie accessibilità, Mint sceglie comfort, Fedora sceglie modernità equilibrata, Arch sceglie controllo, openSUSE sceglie solidità ingegnerizzata.

Se tieni separate queste idee, il resto del mondo Linux smette di sembrare una giungla e comincia a sembrare una mappa.

In una frase: il kernel è il cuore, la distro è il sistema completo, il desktop è il modo in cui tu lo vivi.