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.




