Linux / Identifier la distribution, sa version, le noyau et l’architecture

Pour identifier une distribution Linux et sa version, commencez par lire /etc/os-release. Son champ PRETTY_NAME fournit un nom destiné à l’affichage, tandis que ID et VERSION_ID fournissent des identifiants plus faciles à utiliser dans les scripts.

Utilisez hostnamectl lorsque vous souhaitez un résumé pratique de la distribution, du noyau et de l'architecture. Utilisez uname -r pour la version du noyau Linux en cours d'exécution, et non pour la version de la distribution. Ces valeurs décrivent différentes parties du système et ne doivent pas être considérées comme interchangeables.

Commandes à exécuter en premier

Pour vérifier uniquement le nom et la version de la distribution, commencez par :

cat /etc/os-release

Pour afficher uniquement les champs les plus utiles :

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

Exécutez les commandes suivantes lorsque vous avez également besoin de la version du noyau et de l'architecture du processeur.

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

Qu'est-ce qu'une distribution Linux ?

Strictement parlant, Linux est le noyau du système d'exploitation. Une distribution Linux combine ce noyau avec des outils système, des bibliothèques, un gestionnaire de paquets, un programme d'installation et une configuration par défaut pour former un système d'exploitation utilisable.

Ubuntu, Debian, Fedora, Rocky Linux, openSUSE et Arch Linux utilisent tous le noyau Linux, mais leurs formats de paquets, leurs politiques de mise à jour et leurs commandes d'administration diffèrent. Vérifiez la famille et la version de la distribution avant d'appliquer les instructions d'installation ou de configuration du serveur.

Famille de distribution Distributions courantes Format de paquet et outils Valeurs à vérifier
Famille Debian Debian, Ubuntu, Linux Mint DEB, APT ID et ID_LIKE=debian
Famille Red Hat RHEL, Fedora, Rocky Linux, AlmaLinux RPM, DNF Identifiant ID et, dans ID_LIKE, valeurs liées à RHEL ou Fedora
Famille SUSE openSUSE, SUSE Linux Enterprise RPM, Zypper ID et ID_LIKE=suse
Famille Arch Arch Linux, Manjaro pkg.tar.zst, Pacman ID et ID_LIKE=arch
Indépendant Alpine Linux et autres Spécifique à la distribution ID et la documentation officielle de la distribution

ID_LIKE est un indice complémentaire qui décrit une famille associée ou en amont. Elle peut être absente. Utilisez ID comme identifiant principal de distribution et consultez ID_LIKE uniquement lorsque la compatibilité de la famille est importante.

Vérifiez la distribution et la version dans /etc/os-release

/etc/os-release stocke les données d'identification du système d'exploitation en tant qu'entrées KEY=value. Selon la spécification officielle os-release de systemd, le logiciel doit préférer /etc/os-release et se rabattre sur /usr/lib/os-release lorsque le premier est indisponible.

Afficher tous les champs d'identification

cat /etc/os-release

Les champs exacts varient selon la distribution, mais la sortie ressemble généralement à :

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

Cet exemple identifie Ubuntu 24.04 dans la famille Debian. Le texte du niveau de correctif et d'autres détails peuvent varier selon la distribution et l'état de la mise à jour.

Comprendre les principaux champs os-release

Champ Signification Utilisation typique
PRETTY_NAME Nom et version de la distribution présentés de manière lisible Affichage et inspection manuelle
NAME Nom du système d'exploitation sans la version Étiquettes descriptives
ID Identifiant de distribution en minuscules Choix du traitement selon la distribution dans un script
VERSION_ID Version de la distribution destinée à la comparaison par machine Vérifications des versions prises en charge
ID_LIKE Familles de distribution associées ou en amont Détermination des conventions probables de paquet et de configuration
VERSION_CODENAME Nom de code de la version de la distribution Configuration du dépôt et documentation

Une distribution à publication continue peut ne pas avoir de version majeure fixe et peut omettre VERSION_ID. L'absence d'un champ optionnel ne signifie pas que le fichier est invalide.

Utiliser hostnamectl pour résumer le système

Sur les distributions utilisant systemd, hostnamectl peut afficher le nom de l'hôte, le système d'exploitation, le noyau et l'architecture CPU ensemble.

hostnamectl

Les champs les plus utiles sont :

  • Operating System : nom et version de la distribution
  • Kernel : version du noyau en cours d'exécution
  • Architecture : architecture système
  • Virtualization : machine virtuelle détectée ou environnement de conteneur

hostnamectl est un résumé pratique, mais il peut être indisponible dans les installations minimales, certains conteneurs ou distributions qui n'utilisent pas systemd. Utilisez /etc/os-release et uname dans ces environnements.

Distinguer la version de la distribution de la version du noyau

Les valeurs rapportées par uname ne sont pas des versions de distribution telles que Ubuntu 24.04 ou Rocky Linux 10. Elles décrivent le noyau actuellement en cours d'exécution et l'architecture matérielle.

uname -r
uname -m
uname -a
Commande Informations retournées Exemple d'utilisation
uname -r Version du noyau Vérification de la compatibilité des pilotes et des modules du noyau
uname -m Architecture matérielle Sélection des paquets x86_64 ou aarch64
uname -a Plusieurs valeurs liées au noyau sur une seule ligne Fournir un résumé compact de dépannage

Un système peut conserver la même version de distribution tout en recevant un noyau plus récent. Les systèmes sur la même version de distribution peuvent également exécuter différents noyaux. Après une mise à jour du paquet du noyau, uname -r peut continuer à afficher l'ancien noyau jusqu'au redémarrage du système. La documentation GNU Coreutils uname définit chaque option.

Utiliser des méthodes alternatives sur les systèmes plus anciens

Vérifier avec lsb_release

Si lsb_release est installé, il peut afficher le distributeur, la description, la version et le nom de code.

lsb_release -a

La commande n'est pas incluse dans chaque installation minimale. Vérifiez-la d'abord avec command -v lsb_release. La specification Linux Standard Base lsb_release décrit ses champs de sortie.

Lire les fichiers de version spécifiques à la distribution

Sur les anciens systèmes sans /etc/os-release, utilisez un fichier spécifique à la distribution comme solution de secours.

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

La disponibilité et le format de ces fichiers diffèrent selon la distribution. En automatisation, préférez /etc/os-release et vérifiez uniquement les fichiers de secours explicites utilisés par vos distributions prises en charge. Évitez de combiner aveuglément chaque fichier correspondant à /etc/*release.

Détecter une distribution dans un script shell

Pour les scripts d'installation et l'automatisation des opérations, utilisez ID et VERSION_ID au lieu d'analyser le PRETTY_NAME lisible par l'homme.

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

L'expression ${VERSION_ID:-unknown} utilise unknown lorsque la valeur n'est pas définie ou est vide. Comme de nombreux champs de os-release sont optionnels et que les distributions peuvent ajouter leurs propres champs, les scripts ne doivent pas supposer que chaque valeur existe.

Lors de la sélection des commandes de gestion de paquets, comparez d'abord ID et utilisez ID_LIKE uniquement comme indice complémentaire. Même les distributions de la même famille peuvent utiliser des configurations de dépôts et des noms de paquets différents, donc la similitude de la famille ne garantit pas que chaque commande soit interchangeable.

Interprétez les résultats dans les conteneurs, WSL et chroot

Conteneurs

À l'intérieur d'un conteneur, /etc/os-release identifie normalement la distribution de l’espace utilisateur dans l'image du conteneur, et non l'hôte. En revanche, uname -r peut afficher le noyau partagé avec l'hôte. Il peut être normal que ces commandes semblent décrire différentes familles de distributions.

Sous-système Windows pour Linux

Dans le Sous-système Windows pour Linux (WSL), /etc/os-release identifie la distribution Ubuntu, Debian ou autre installée. La sortie de uname -r peut inclure une chaîne identifiant un noyau WSL. Continuez à utiliser /etc/os-release pour la version de la distribution.

Environnements chroot

À l'intérieur d'un chroot, /etc/os-release identifie la distribution dans le système de fichiers chroot, tandis que uname décrit le noyau partagé avec l'hôte en cours d'exécution. Tenez compte de cette différence lors des travaux de récupération et des processus de construction inter-distributions.

Questions fréquemment posées

Quelle est la commande la plus fiable pour vérifier la version de Linux ?

Pour identifier la distribution et sa version, commencez par cat /etc/os-release. Vérifiez le noyau séparément avec uname -r et l'architecture CPU avec uname -m.

Y a-t-il un problème si hostnamectl est absent ou ne s'exécute pas ?

Pas nécessairement. Les environnements minimaux et les distributions qui n'utilisent pas systemd peuvent ne pas fournir hostnamectl. Utilisez /etc/os-release et uname pour récupérer les informations séparément.

Comment puis-je distinguer CentOS, Rocky Linux et AlmaLinux ?

Vérifiez ID dans /etc/os-release. Ces distributions partagent certaines parties du même modèle d'administration, mais leurs politiques de support et leurs dépôts sont séparés. Ne les considérez pas comme la même distribution uniquement sur la base de ID_LIKE.

x86_64 et aarch64 sont-ils des numéros de version de distribution ?

Non. Elles identifient les architectures matérielles. Une version de distribution peut fournir des images x86_64 et aarch64 séparées, donc vérifiez l'architecture lors de la sélection des paquets logiciels ou des supports d'installation.

Résumé

Utilisez /etc/os-release pour le nom et la version de la distribution Linux, hostnamectl pour un résumé pratique du système, uname -r pour le noyau en cours d'exécution, et uname -m pour l'architecture.

Dans les scripts, utilisez ID, VERSION_ID, et, lorsque nécessaire, ID_LIKE au lieu d'analyser PRETTY_NAME. Dans les conteneurs, WSL et les environnements chroot, rappelez-vous que la distribution de l'espace utilisateur et le noyau en cours d'exécution peuvent provenir de différentes couches.