Linux / Come verificare distribuzione, versione, kernel e architettura

Per conoscere la distribuzione Linux e la sua versione, leggete prima /etc/os-release. PRETTY_NAME offre un nome leggibile; ID e VERSION_ID servono a identificare distribuzione e versione negli script.

hostnamectl riassume distribuzione, kernel e architettura, quando l’ambiente lo supporta. uname -r mostra invece il kernel attualmente in esecuzione: la sua versione va distinta da quella della distribuzione.

I primi comandi da eseguire

Per vedere il nome e la versione della distribuzione, iniziate con:

cat /etc/os-release

Per limitare l’output ai campi più utili:

grep -E '^(PRETTY_NAME|ID|VERSION_ID|ID_LIKE)=' /etc/os-release

Se vi servono anche una sintesi del sistema, il kernel e l’architettura, eseguite questi comandi in sequenza. Un errore di hostnamectl non rende inutilizzabili gli altri controlli.

cat /etc/os-release
hostnamectl
uname -r
uname -m

Che cos’è una distribuzione Linux?

In senso stretto, Linux è il kernel, il nucleo del sistema operativo. Una distribuzione Linux combina il kernel con strumenti di sistema, librerie, un gestore di pacchetti, un programma di installazione e impostazioni predefinite per offrire un sistema utilizzabile.

Ubuntu, Debian, Fedora, Rocky Linux, openSUSE e Arch Linux usano il kernel Linux, ma differiscono per formati dei pacchetti, politiche di aggiornamento e comandi di amministrazione. Prima di seguire una guida di installazione o configurazione, verificate quindi famiglia e versione della distribuzione.

Famiglia Distribuzioni comuni Pacchetti e strumenti Valori da controllare
Debian Debian, Ubuntu, Linux Mint DEB, APT ID e l’eventuale ID_LIKE=debian
Red Hat RHEL, Fedora, Rocky Linux, AlmaLinux RPM, DNF ID e riferimenti a rhel o fedora in ID_LIKE
SUSE openSUSE, SUSE Linux Enterprise RPM, Zypper ID e riferimenti a suse in ID_LIKE
Arch Arch Linux, Manjaro pkg.tar.zst, Pacman ID e l’eventuale riferimento ad arch in ID_LIKE
Indipendenti Alpine Linux e altre Specifici della distribuzione ID e documentazione ufficiale

ID_LIKE è un’informazione facoltativa sulle distribuzioni affini o da cui deriva il sistema: può contenere più identificatori separati da spazi. Partite da ID; consultate ID_LIKE come indicazione aggiuntiva quando l’identificatore non è riconosciuto. Non è una garanzia generale di compatibilità.

Leggere distribuzione e versione in /etc/os-release

Il file contiene coppie CHIAVE=valore in un formato compatibile con assegnazioni della shell. La specifica ufficiale os-release di systemd dà la precedenza a /etc/os-release: solo se manca si passa a /usr/lib/os-release, senza combinare i dati dei due file.

Visualizzare tutti i campi

cat /etc/os-release

I campi effettivi dipendono dalla distribuzione. Questo è un esempio illustrativo per Ubuntu 24.04 LTS, non l’output rilevato sul vostro computer:

PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian

L’esempio identifica Ubuntu 24.04, con nome in codice noble e famiglia Debian. La descrizione completa può variare con gli aggiornamenti; non deducete il livello di tutte le patch dal solo VERSION_ID.

Interpretare i campi principali

Campo Significato Uso
PRETTY_NAME Nome leggibile, che può includere versione o nome in codice Visualizzazione e controllo manuale
NAME Nome del sistema operativo senza versione Etichette descrittive
ID Identificatore della distribuzione in minuscolo Scelta del ramo negli script
VERSION_ID Identificatore della versione utilizzabile dagli script Controllo delle versioni supportate
ID_LIKE Famiglie affini o di origine Indicazione delle convenzioni di pacchetti e configurazione
VERSION_CODENAME Nome in codice della versione Documentazione e configurazione dei repository

Una distribuzione rolling release può non avere una versione principale fissa e omettere VERSION_ID. L’assenza di un campo facoltativo non indica che il file sia errato.

Ottenere una sintesi con hostnamectl

Negli ambienti con systemd e i servizi necessari disponibili, hostnamectl permette di leggere insieme nome host, sistema operativo, kernel e architettura.

hostnamectl

Le voci più utili, quando presenti nell’output, sono:

  • Operating System: nome e versione della distribuzione.
  • Kernel: kernel attualmente in esecuzione.
  • Architecture: architettura del sistema.
  • Virtualization: ambiente virtuale o container rilevato.

Senza argomenti, il comando esegue la consultazione dello stato: lo documenta il manuale ufficiale di hostnamectl. Non serve impostare un nuovo nome host per ottenere queste informazioni.

Il comando può mancare o non comunicare con i servizi richiesti nelle installazioni minime, in alcuni container o nei sistemi senza systemd. Usate allora /etc/os-release e uname separatamente.

Distinguere versione della distribuzione e del kernel

uname non restituisce una versione della distribuzione come Ubuntu 24.04 o Rocky Linux 10. Le opzioni seguenti riguardano il kernel in esecuzione e l’architettura hardware riportata dal sistema.

uname -r
uname -m
uname -a
Comando Informazione Quando serve
uname -r Release del kernel Verificare la compatibilità di driver e moduli
uname -m Architettura hardware Distinguere, per esempio, x86_64 e aarch64
uname -a Più informazioni di sistema su una riga Preparare una sintesi per la diagnosi

Una distribuzione può mantenere la stessa versione e ricevere un kernel più recente. Dopo aver aggiornato il pacchetto del kernel, il sistema può continuare a usare quello precedente fino al riavvio. Le opzioni -r e -m sono definite anche nel codice ufficiale di uname di GNU Coreutils.

L’architettura aiuta a scegliere i pacchetti, ma non basta da sola: devono corrispondere anche distribuzione, versione e formato del pacchetto. In un ambiente virtualizzato, interpretatela come l’architettura esposta a quell’ambiente.

Metodi alternativi e sistemi meno recenti

Usare lsb_release

Se installato, lsb_release può mostrare distributore, descrizione, versione e nome in codice. LSB significa Linux Standard Base.

lsb_release -a

Non è presente in tutte le installazioni minime: verificatelo con command -v lsb_release. Il manuale di lsb_release fornito da Debian descrive questi campi e l’opzione -a. L’implementazione di Debian documentata in quella pagina legge a sua volta i file os-release.

Consultare i file specifici della distribuzione

Se un vecchio sistema non dispone di /etc/os-release, controllate il file previsto per quella distribuzione. Questi sono esempi alternativi: non si presume che tutti e tre esistano sullo stesso sistema.

cat /etc/redhat-release
cat /etc/debian_version
cat /etc/alpine-release

Esistenza e formato variano tra distribuzioni. Negli script preferite os-release e controllate esplicitamente solo i file di ripiego pertinenti. Unire indiscriminatamente tutti i file /etc/*release può produrre informazioni difficili da interpretare.

Identificare la distribuzione in uno script di shell

Per installazioni automatizzate, usate ID e VERSION_ID invece di analizzare il testo descrittivo di PRETTY_NAME. Questo esempio legge il file locale /etc/os-release se accessibile:

if [ -r /etc/os-release ]; then
    . /etc/os-release
    printf 'distribution=%s\n' "$ID"
    printf 'version=%s\n' "${VERSION_ID:-unknown}"
    printf 'family=%s\n' "${ID_LIKE:-unknown}"
else
    printf 'distribution=unknown\n'
    uname -srm
fi

Salvatelo in un file, per esempio check-distribution.sh, ed eseguitelo con sh check-distribution.sh. Con i dati Ubuntu dell’esempio, le righe iniziano con distribution=ubuntu, version=24.04 e family=debian. Se VERSION_ID o ID_LIKE manca o è vuoto, l’espansione ${variabile:-unknown} produce unknown.

L’esempio controlla solo /etc/os-release: se non è leggibile stampa distribution=unknown e le informazioni di uname -srm. In uno script destinato anche a sistemi che forniscono esclusivamente /usr/lib/os-release, prevedete il ripiego descritto sopra. Eseguite il punto di caricamento . solo sul file di sistema attendibile, non su contenuti scaricati o forniti da terzi: la shell ne esegue le istruzioni.

Confrontate prima ID e usate ID_LIKE come criterio aggiuntivo quando necessario. Repository e nomi dei pacchetti possono differire anche all’interno della stessa famiglia; controllate le istruzioni della distribuzione prima di installare software.

Interpretare i risultati in container, WSL e chroot

Container

In un container, /etc/os-release normalmente descrive la distribuzione dello spazio utente nell’immagine, non quella dell’host. uname -r può invece mostrare il kernel condiviso con l’host. Le due informazioni possono quindi provenire da livelli diversi senza indicare un errore. La documentazione di Docker sui container spiega la condivisione del kernel rispetto alle macchine virtuali.

Windows Subsystem for Linux

In Windows Subsystem for Linux (WSL), os-release identifica la distribuzione installata, per esempio Ubuntu o Debian. uname -r può contenere indicazioni dell’ambiente WSL e non sostituisce la versione della distribuzione. Inoltre WSL 2 usa un kernel Linux in una macchina virtuale gestita, mentre WSL 1 usa un livello di compatibilità: la comparazione ufficiale di Microsoft tra WSL 1 e WSL 2 spiega questa differenza.

Ambienti chroot

Un chroot cambia la radice del filesystem visibile al processo, senza avviare un kernel separato: il manuale Linux della chiamata chroot ne descrive il funzionamento. os-release identifica quindi lo spazio utente nel filesystem del chroot; uname continua a riferirsi al kernel condiviso con il sistema in esecuzione. Tenetene conto nelle operazioni di recupero e nelle compilazioni tra distribuzioni diverse.

Domande frequenti

Qual è il comando più affidabile per conoscere la versione di Linux?

Per distribuzione e versione, iniziate con cat /etc/os-release. Verificate separatamente il kernel con uname -r e l’architettura con uname -m.

È un problema se hostnamectl manca o non funziona?

Non necessariamente. Le installazioni minime o senza systemd possono non fornirlo, e i servizi necessari possono non essere disponibili. Usate os-release e uname per consultare le informazioni separatamente.

Come si distinguono CentOS, Rocky Linux e AlmaLinux?

Controllate ID in os-release. Condividono parte dei metodi di amministrazione, ma repository e politiche di supporto restano distinti. Il solo ID_LIKE non li rende la stessa distribuzione.

x86_64 e aarch64 sono versioni della distribuzione?

No, sono architetture hardware. La stessa versione può offrire immagini x86_64 e aarch64, quest’ultima per la famiglia ARM a 64 bit. Verificate l’architettura insieme alla compatibilità della distribuzione quando scegliete pacchetti o immagini di installazione.

Riepilogo

Leggete os-release per nome e versione della distribuzione, hostnamectl per una sintesi disponibile negli ambienti supportati, uname -r per il kernel e uname -m per l’architettura.

Negli script preferite gli identificatori ai nomi descrittivi e gestite i campi facoltativi. Nei container, in WSL e nei chroot distinguete sempre lo spazio utente dal kernel che lo esegue.