Vous devez savoir ce qu'une machine Linux a dans le ventre : quel disque se
cache derrière /dev/nvme0n1, quel pilote gère la carte réseau, pourquoi la
clé USB branchée reste invisible. Cette page de référence rassemble les
commandes d'identification du matériel : lsblk pour les disques, lspci et
lsusb pour les bus, lshw pour l'inventaire complet, lsmod et modinfo
pour les modules du noyau, dmesg pour suivre la détection en direct. Vous
verrez aussi comment udev crée les fichiers de /dev et comment écrire
une règle personnalisée pour nommer un périphérique de façon stable.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Relier un périphérique physique à son fichier spécial dans
/dev; - Identifier les composants PCI, USB et les disques avec
lspci,lsusbetlsblk; - Écrire, recharger et tester une règle udev personnalisée ;
- Charger, décharger et inspecter un module du noyau ;
- Diagnostiquer un périphérique non détecté avec
dmesg.
Comment Linux voit vos périphériques
Section intitulée « Comment Linux voit vos périphériques »Sous Linux, la gestion du matériel repose sur une architecture bien définie, qui assure la communication entre les composants physiques et le système d'exploitation. Cette interaction est essentielle pour garantir que chaque périphérique, disque dur, carte réseau ou clé USB, fonctionne correctement et soit exploitable par les applications.
L'abstraction matérielle
Section intitulée « L'abstraction matérielle »Linux utilise des pilotes (drivers) pour faire le lien entre le matériel et le noyau. Chaque pilote est conçu pour un type précis de périphérique : carte graphique, contrôleur USB, carte réseau, etc. Le pilote permet au noyau d'interagir avec le matériel sans avoir à gérer directement les particularités techniques de chaque composant.
Par exemple, quand vous branchez une clé USB, le noyau ne sait pas par défaut comment lire ce matériel. Le pilote de stockage USB traduit les échanges sur le bus en opérations de lecture et d'écriture compréhensibles par Linux.
La chaîne de gestion
Section intitulée « La chaîne de gestion »Le processus de reconnaissance et de gestion du matériel suit toujours la même chaîne, qu'il s'agisse d'un disque interne ou d'un périphérique branché à chaud :
- Matériel : un périphérique signale sa présence lorsqu'il est branché ou détecté au démarrage.
- Pilote (driver) : le pilote traduit les échanges avec le matériel en instructions exploitables par le système.
- Noyau : le noyau Linux traite ces instructions et émet un événement.
- udev : le gestionnaire de périphériques reçoit l'événement et crée le
fichier spécial correspondant dans
/dev.
Chaque commande de cette page observe un maillon de cette chaîne : dmesg
regarde le noyau, udevadm interroge udev, lsblk et ls -l /dev
montrent le résultat final.
Les interruptions matérielles (IRQ)
Section intitulée « Les interruptions matérielles (IRQ) »Les périphériques ont souvent besoin d'attirer l'attention du processeur pour
signaler qu'une tâche est terminée ou qu'un événement s'est produit (par
exemple, une touche pressée sur un clavier). Linux gère cela avec les
interruptions matérielles (IRQ). Chaque périphérique se voit attribuer un
ou plusieurs numéros d'interruption, parfois partagés entre plusieurs
composants sur les machines anciennes. Le fichier /proc/interrupts
liste les IRQ en cours d'utilisation et le nombre d'événements traités par
processeur.
Exemple concret : branchement d'une clé USB
Section intitulée « Exemple concret : branchement d'une clé USB »Prenons un scénario courant pour dérouler la chaîne complète :
- Vous branchez une clé USB.
- Le contrôleur USB signale un nouvel appareil, le noyau émet un événement.
- Le noyau identifie le type de périphérique et charge le module
approprié s'il ne l'est pas déjà (ici
usb-storage, le pilote de stockage de masse USB). - udev reçoit l'événement et expose le périphérique sous forme d'un
fichier dans
/dev, tel que/dev/sdb. - Le système peut alors monter la clé et la rendre accessible via un point de
montage, par exemple
/media/usb.
La gestion des modules (lsmod, modprobe, modinfo) est détaillée plus
bas dans cette page.
udev : le gestionnaire de périphériques
Section intitulée « udev : le gestionnaire de périphériques »udev est un élément clé de la gestion matérielle sous Linux. Il agit
comme un gestionnaire dynamique de périphériques, permettant la détection
et la configuration automatique des matériels dès qu'ils sont connectés ou
déconnectés. C'est lui qui crée ou supprime les fichiers dans le répertoire
/dev en temps réel.
Fonctionnement de udev
Section intitulée « Fonctionnement de udev »Lorsqu'un périphérique est branché (par exemple, une clé USB), le noyau Linux
envoie un événement matériel (uevent). udev intercepte cet événement,
identifie le périphérique, applique les règles correspondantes, et crée un
fichier spécial sous /dev, éventuellement accompagné de liens
symboliques stables (ceux que vous voyez dans /dev/disk/by-uuid/ par
exemple).
Schéma simplifié du processus :
- Événement matériel -> Noyau -> udev -> Création du fichier
/dev
Cela permet au système d'être immédiatement prêt à utiliser le matériel, sans intervention manuelle.
Règles udev
Section intitulée « Règles udev »Le comportement de udev est contrôlé par des règles, situées dans deux emplacements aux rôles distincts :
/etc/udev/rules.d/: les règles de l'administrateur, prioritaires ;/usr/lib/udev/rules.d/: les règles fournies par les paquets de la distribution (accessible aussi via/lib/udev/rules.d/sur Debian et Ubuntu).
Un fichier de /etc/udev/rules.d/ qui porte le même nom qu'un fichier de
/usr/lib/udev/rules.d/ le remplace entièrement. Les fichiers sont traités
par ordre alphabétique : le préfixe numérique (10-, 70-, 99-)
détermine donc l'ordre d'application.
Chaque règle définit comment udev doit gérer un périphérique : nommage
personnalisé, permissions spécifiques, ou lancement de scripts. Exemple de
règle qui crée un lien stable pour une clé USB Kingston (fichier
/etc/udev/rules.d/99-cle-inventaire.rules) :
ACTION=="add", SUBSYSTEM=="block", ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1666", SYMLINK+="cle-inventaire%n"Cette règle crée un lien symbolique /dev/cle-inventaire pour le disque et
/dev/cle-inventaire1 pour sa première partition (%n reprend le numéro
attribué par le noyau). Deux pièges à connaître :
ATTRS{}(avec un S) compare l'attribut sur le périphérique et ses parents : indispensable ici, caridVendorappartient au périphérique USB parent, pas au disque lui-même.ATTR{}ne teste que le périphérique courant.- Les identifiants
idVendoretidProductse lisent dans la sortie delsusb(colonneID 0951:1666).
Pour découvrir tous les attributs utilisables dans une règle, remontez la chaîne des parents d'un périphérique avec :
udevadm info --attribute-walk --name=/dev/sdbCommandes udevadm
Section intitulée « Commandes udevadm »L'outil udevadm regroupe tout le pilotage de udev : observation des
événements, inspection d'un périphérique, rechargement des règles.
Pour voir en direct ce qui se passe lorsque vous connectez ou déconnectez un périphérique :
udevadm monitorLa commande commence par annoncer ce qu'elle écoute, puis affiche une ligne
KERNEL (l'événement brut du noyau) et une ligne UDEV (après application
des règles) pour chaque événement :
monitor will print the received events for:UDEV - the event which udev sends out after rule processingKERNEL - the kernel uevent
KERNEL[1534.567890] add /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)UDEV [1534.569012] add /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)Pour obtenir toutes les propriétés d'un périphérique déjà présent, utilisez
udevadm info. Exemple sur une partition NVMe :
udevadm info --name=/dev/nvme0n1p1P: /devices/pci0000:00/0000:00:06.0/0000:01:00.0/nvme/nvme0/nvme0n1/nvme0n1p1N: nvme0n1p1S: disk/by-uuid/3DF4-92C7S: disk/by-path/pci-0000:01:00.0-nvme-1-part1S: disk/by-id/nvme-CT1000P3PSSD8_24361234ABCD-part1E: DEVNAME=/dev/nvme0n1p1E: DEVTYPE=partitionE: ID_FS_TYPE=vfatLes lignes S: listent les liens symboliques créés par udev, et les
lignes E: les propriétés exploitables dans des règles ou des scripts.
Après avoir modifié une règle, demandez à udev de recharger sa configuration :
sudo udevadm control --reloadLe rechargement ne s'applique qu'aux événements futurs. Pour rejouer les règles sur les périphériques déjà branchés :
sudo udevadm triggerComprendre les fichiers de périphériques dans /dev
Section intitulée « Comprendre les fichiers de périphériques dans /dev »Dans Linux, chaque périphérique matériel est représenté par un fichier
spécial situé dans le répertoire /dev. Cette approche suit le principe
« tout est fichier » : un disque, un port série ou même une souris peuvent
être manipulés comme n'importe quel fichier par le système d'exploitation.
Le répertoire /dev contient des fichiers de périphériques qui servent
d'interface entre le noyau et le matériel. Lorsqu'une application souhaite
interagir avec un périphérique (par exemple, lire un fichier sur un disque),
elle passe par ce fichier spécial.
Exemple d'inspection de deux périphériques :
ls -l /dev/nvme0n1 /dev/tty0brw-rw---- 1 root disk 259, 0 juin 5 17:36 /dev/nvme0n1crw--w---- 1 root tty 4, 0 juin 5 17:36 /dev/tty0Le premier caractère de chaque ligne révèle la catégorie du fichier. Il existe deux grandes familles :
- Périphériques de caractères (type
c) : ils transmettent les données caractère par caractère. C'est le cas des terminaux (/dev/tty), des ports série ou des périphériques audio. - Périphériques de blocs (type
b) : ils gèrent les données par blocs, ce qui est plus efficace pour les disques, les clés USB et les partitions (/dev/sda,/dev/nvme0n1p1).
Les deux nombres qui remplacent la taille habituelle du fichier identifient le périphérique auprès du noyau :
- Numéro majeur : identifie le pilote utilisé (8 pour les disques
SATA/SCSI
sd*, 259 pour les disques NVMe). - Numéro mineur : identifie l'instance précise du périphérique (disque, puis chaque partition).
Pour obtenir ces informations sous une forme détaillée, utilisez stat :
stat /dev/nvme0n1 File: /dev/nvme0n1 Size: 0 Blocks: 0 IO Block: 4096 block special fileDevice: 0,5 Inode: 334 Links: 1 Device type: 259,0Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk)La mention block special file confirme le type, et Device type: 259,0
reprend le couple majeur/mineur.
Inventorier tout le matériel avec lshw
Section intitulée « Inventorier tout le matériel avec lshw »La commande lshw (Hardware Lister) affiche des informations détaillées
sur l'ensemble du matériel de votre système : processeur, mémoire, cartes
réseau, stockage. Contrairement à lspci ou lsusb, qui se concentrent sur
un bus spécifique, lshw donne une vue globale de la machine. Elle n'est
pas toujours installée par défaut :
sudo apt install lshw # Debian / Ubuntusudo dnf install lshw # RHEL / FedoraPour afficher toutes les informations disponibles sur votre matériel :
sudo lshwL'utilisation de sudo est nécessaire pour accéder aux détails des
périphériques bas niveau (les disques notamment) : sans privilèges, la sortie
est incomplète et lshw l'annonce en fin d'exécution.
Si vous cherchez un aperçu rapide sans entrer dans les détails, l'option
-short produit un tableau d'une ligne par composant :
sudo lshw -shortH/W path Device Class Description=========================================================== system UM250 (Default string)/0 bus UM250/0/9 memory 40GiB System Memory/0/9/0 memory 32GiB SODIMM DDR4 Synchronous Unbuffered (Unregistered) 2666 MHz/0/e processor AMD Ryzen Embedded V1605B with Radeon Vega Gfx/0/100/1.1/0 enp1s0 network Ethernet Controller I225-V/0/100/1.3/0 wlo1 network Wireless 7265/0/100/8.1/0 display Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series]La colonne Class permet de repérer d'un coup d'œil les catégories :
memory, processor, network, display, storage. Vous pouvez d'ailleurs
filtrer directement sur une classe avec l'option -C :
sudo lshw -C network # cartes réseausudo lshw -C storage # contrôleurs de stockagesudo lshw -C memory # mémoireLe filtrage par classe est le réflexe à avoir pour vérifier qu'une carte réseau est bien détectée et associée au bon pilote :
sudo lshw -C network*-network description: Ethernet interface product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller vendor: Realtek Semiconductor Co., Ltd. configuration: driver=r8169La ligne configuration: driver= indique le module du noyau utilisé,
information précieuse quand une interface ne remonte pas.
Enfin, lshw sait exporter son inventaire pour l'intégrer dans des rapports
ou des outils externes, en HTML ou en JSON (selon la version
installée) :
sudo lshw -html > rapport_hardware.htmlsudo lshw -json > rapport_hardware.jsonIdentifier les périphériques PCI avec lspci
Section intitulée « Identifier les périphériques PCI avec lspci »Le bus PCI (Peripheral Component Interconnect) connecte une grande
variété de périphériques internes : cartes réseau, cartes graphiques,
contrôleurs SATA et NVMe, contrôleurs USB. La commande lspci (paquet
pciutils) liste tous les périphériques présents sur ce bus, ce qui est
particulièrement utile pour diagnostiquer ou documenter la configuration
matérielle d'une machine.
Pour lister tous les périphériques PCI :
lspci00:00.0 Host bridge: Intel Corporation Device 4649 (rev 02)00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT1 [UHD Graphics] (rev 0c)00:06.0 PCI bridge: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #0 (rev 02)00:14.0 USB controller: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller (rev 01)00:17.0 SATA controller: Intel Corporation Alder Lake-P SATA AHCI Controller (rev 01)00:1f.3 Audio device: Intel Corporation Alder Lake PCH-P High Definition Audio Controller (rev 01)Chaque ligne commence par l'adresse PCI du périphérique (bus:device.function), suivie de sa classe et de sa description. Cela donne un aperçu rapide des composants majeurs.
Pour savoir quel pilote gère chaque périphérique, l'option -k est la
plus directe :
lspci -k -s 00:02.000:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT1 [UHD Graphics] (rev 0c) Subsystem: Intel Corporation Alder Lake-P GT1 [UHD Graphics] Kernel driver in use: i915 Kernel modules: i915, xeLa ligne Kernel driver in use montre le module effectivement chargé, et
Kernel modules les modules candidats. C'est le premier réflexe quand un
périphérique est détecté mais ne fonctionne pas : pas de ligne
Kernel driver in use, pas de pilote.
L'option -v (verbose) ajoute les ressources allouées (IRQ, plages
mémoire), et -nn affiche les identifiants numériques du fabricant et du
modèle :
lspci -nn00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P GT1 [UHD Graphics] [8086:46a3] (rev 0c)Ici, 8086 est l'ID fabricant (Intel) et 46a3 l'ID du modèle. Ces
identifiants sont très pratiques pour rechercher un pilote compatible ou
identifier précisément un matériel affiché comme Device xxxx non reconnu.
lspci s'appuie sur une base de données locale pour associer les
identifiants PCI à des noms lisibles. Pour mettre à jour cette base (utile
quand un matériel récent apparaît sans nom) :
sudo update-pciidsPour rechercher uniquement votre carte graphique, combinez avec grep :
lspci | grep VGA00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT1 [UHD Graphics] (rev 0c)Cela permet de vérifier rapidement que le système détecte correctement la carte vidéo.
Identifier les périphériques USB avec lsusb
Section intitulée « Identifier les périphériques USB avec lsusb »Le bus USB (Universal Serial Bus) est omniprésent : clés USB, disques
externes, claviers, souris, webcams. Tous ces périphériques se listent avec
la commande lsusb (paquet usbutils), indispensable pour diagnostiquer
un périphérique externe qui ne répond pas ou vérifier sa bonne détection.
Pour afficher la liste des périphériques USB connectés :
lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 002: ID 2109:2822 VIA Labs, Inc. USB2.0 HubBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 002 Device 002: ID 2109:0822 VIA Labs, Inc. USB3.1 HubChaque ligne indique le bus USB, le numéro de périphérique, l'ID
fournisseur:produit et le nom du périphérique reconnu. Les root hub
« Linux Foundation » sont les contrôleurs USB de la machine eux-mêmes, pas
des appareils branchés.
Chaque périphérique USB possède un identifiant sous la forme ID 2109:2822 :
- les 4 premiers caractères hexadécimaux (
2109) correspondent à l'ID fournisseur ; - les 4 suivants (
2822) correspondent à l'ID produit.
Ces identifiants servent à rechercher des informations sur le matériel (la base publique usb.ids les recense) et à écrire des règles udev personnalisées, comme vu plus haut.
Pour obtenir les détails complets d'un périphérique (interfaces, protocoles,
consommation), utilisez -v, de préférence en ciblant une adresse précise
avec -s, car la sortie complète est très volumineuse :
lsusb -s 001:002 -vPour afficher l'arborescence des périphériques USB, utile pour voir sur quel port physique chaque appareil est branché et à quelle vitesse il négocie :
lsusb -t/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/2p, 480M/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 10000M |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/2p, 10000MLa colonne Driver= montre le pilote associé à chaque interface, et la
valeur finale la vitesse négociée (480M pour USB 2.0, 5000M ou 10000M
pour USB 3.x). Un disque USB 3 branché sur un port qui négocie à 480M est un
signe de câble ou de port inadapté.
Exemple pratique, pour détecter si une imprimante USB est reconnue :
lsusb | grep -i printerS'il n'y a aucun résultat, l'imprimante n'est pas détectée au niveau du bus USB : inutile de chercher plus haut (CUPS, pilotes), le problème est matériel ou câblage.
Visualiser les périphériques de bloc avec lsblk
Section intitulée « Visualiser les périphériques de bloc avec lsblk »La commande lsblk (List Block Devices, paquet util-linux) affiche la
hiérarchie complète des périphériques de bloc : disques, SSD, clés USB,
partitions, volumes LVM. C'est l'outil de référence pour vérifier la
structure des disques avant toute opération de partitionnement ou de montage.
Pour lister tous les périphériques de bloc détectés :
lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSnvme0n1 259:0 0 931,5G 0 disk├─nvme0n1p1 259:1 0 1G 0 part /boot/efi├─nvme0n1p2 259:2 0 2G 0 part /boot└─nvme0n1p3 259:3 0 928,5G 0 part └─ubuntu--vg-ubuntu--lv 252:0 0 928,5G 0 lvm /Cette représentation en arborescence montre la relation entre le disque
physique (nvme0n1), ses partitions (nvme0n1p1 à p3) et les volumes
LVM construits dessus. La colonne RM vaut 1 pour les périphériques
amovibles (clés USB), et MOUNTPOINTS indique où chaque volume est monté.
Sur une machine où snap est installé, la liste est polluée par des
dizaines de périphériques loop. Excluez-les avec -e 7 (7 est le numéro
majeur des périphériques loop) :
lsblk -e 7Pour voir également les systèmes de fichiers, leurs UUID et l'espace disponible :
lsblk -fNAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTSnvme0n1├─nvme0n1p1 vfat FAT32 3DF4-92C7 1G 1% /boot/efi├─nvme0n1p2 ext4 1.0 9a43eed7-0049-4b6f-b80d-5593cb2744a0 1,6G 10% /boot└─nvme0n1p3 LVM2_member LVM2 001 9HHBOS-dOrC-yKYx-nK9s-nH8N-5gaM-jIB8Qg └─ubuntu--vg-ubuntu--lv ext4 1.0 044f2a54-fb22-4a0e-bc4e-40cd719d479e 138,4G 81% /L'UUID est l'identifiant à utiliser dans /etc/fstab (le fichier des
montages persistants) : contrairement à /dev/sdb1, il ne change pas si le
noyau renumérote les disques au démarrage.
Vous pouvez composer votre propre affichage avec -o et la liste des
colonnes souhaitées :
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODELLa colonne MODEL affiche la référence commerciale du disque, pratique pour
distinguer deux disques de même taille. Deux autres options utiles :
lsblk -aajoute les périphériques vides (sans support inséré ou de taille nulle), masqués par défaut ;lsblk /dev/nvme0n1limite l'affichage à un seul disque et à ses enfants.
Exemple pratique : pour vérifier qu'une clé USB fraîchement branchée est
reconnue, lancez lsblk -f et cherchez le nouveau disque avec RM à 1 (en
général sdb ou sdc). S'il apparaît sans point de montage, la clé est
détectée mais pas montée : c'est un état normal sur un serveur, à vous de la
monter.
En complément, la commande blkid identifie rapidement chaque
périphérique par son UUID et son type de système de fichiers :
sudo blkid/dev/nvme0n1p1: UUID="3DF4-92C7" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="cd4e410d-262f-41af-8958-27fffd6a49fa"/dev/nvme0n1p2: UUID="9a43eed7-0049-4b6f-b80d-5593cb2744a0" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="31a14aba-e3e5-4040-a75d-1fa06baed451"Pour aller plus loin sur l'identification fiable des disques (chemins
/dev/disk/by-id/, WWN, numéros de série), une page dédiée détaille le
sujet : identifier ses disques de façon fiable.
Autres commandes utiles pour l'inventaire matériel
Section intitulée « Autres commandes utiles pour l'inventaire matériel »En plus des classiques lspci, lsusb et lsblk, Linux propose plusieurs
autres commandes précieuses pour explorer le matériel en profondeur. Ces
outils apportent des informations complémentaires sur le BIOS/UEFI, la carte
mère et le processeur.
dmidecode
Section intitulée « dmidecode »La commande dmidecode extrait les informations de la table DMI/SMBIOS
renseignée par le firmware de la machine : fabricant de la carte mère, modèle
et version du BIOS, barrettes mémoire installées et emplacements libres.
C'est la commande à utiliser pour inventorier une machine sans l'ouvrir.
sudo dmidecode -t system# dmidecode 3.5Getting SMBIOS data from sysfs.SMBIOS 3.4.0 present.
Handle 0x0001, DMI type 1, 27 bytesSystem Information Manufacturer: Micro Computer(HK) Tech Limited Product Name: NAB6 Serial Number: Default stringL'option -t cible une section précise : system, bios, memory,
processor. Pour connaître le détail des barrettes de RAM (taille, vitesse,
emplacements occupés) :
sudo dmidecode -t memoryAttention : les valeurs proviennent du firmware, pas d'une mesure. Sur
certaines machines (mini-PC, machines virtuelles), des champs contiennent des
valeurs génériques comme Default string.
inxi est un script qui synthétise en quelques lignes le matériel, le
système et l'environnement logiciel. Très pratique pour obtenir un résumé
rapide d'une machine que vous découvrez :
sudo apt install inxi # Debian / Ubuntusudo dnf install inxi # RHEL / Fedora (dépôt EPEL)La combinaison d'options recommandée affiche tout (-F), avec les détails
techniques (-x) et en masquant les informations sensibles comme les
adresses IP et MAC (-z) :
inxi -Fxzhwinfo est une alternative à lshw, historiquement liée à openSUSE,
qui scanne l'ensemble du matériel de façon très verbeuse. Elle est utilisée
pour diagnostiquer les périphériques non détectés ou obtenir des détails
bruts qu'aucun autre outil n'affiche :
sudo apt install hwinfosudo hwinfo --short # résumésudo hwinfo --network # une catégorie précisePour afficher uniquement les informations du processeur (architecture,
nombre de cœurs et de threads, virtualisation), lscpu est fournie par
util-linux et donc toujours disponible :
lscpuArchitecture: x86_64 CPU op-mode(s): 32-bit, 64-bitCPU(s): 16 On-line CPU(s) list: 0-15Vendor ID: GenuineIntel Model name: 12th Gen Intel(R) Core(TM) i7-12650H Thread(s) per core: 2 Core(s) per socket: 10 Socket(s): 1La sortie complète inclut aussi les tailles de caches, la topologie
NUMA et l'état des mitigations de vulnérabilités CPU (Spectre, Meltdown).
Le rapport cœurs/threads (Thread(s) per core: 2) confirme ici que
l'hyperthreading est actif.
Gérer les modules du noyau avec lsmod, modprobe et modinfo
Section intitulée « Gérer les modules du noyau avec lsmod, modprobe et modinfo »Le noyau Linux utilise des modules pour gérer de nombreux composants matériels. Ces modules sont des morceaux de code chargés ou déchargés dynamiquement, ce qui permet au noyau de s'adapter aux périphériques présents sans redémarrage.
La commande lsmod affiche tous les modules actuellement chargés :
lsmodModule Size Used bytcp_diag 12288 0inet_diag 28672 1 tcp_diagvxlan 155648 0ip6_udp_tunnel 16384 1 vxlanLes colonnes se lisent ainsi :
- Module : nom du module ;
- Size : taille du module en mémoire (octets) ;
- Used by : nombre d'utilisateurs du module, suivi du nom des modules qui
en dépendent (ici
tcp_diagdépend deinet_diag).
Ce compteur de dépendances est la clé pour comprendre pourquoi un module refuse parfois de se décharger.
Pour charger un module (par exemple usb-storage, le pilote de stockage de
masse USB) :
sudo modprobe usb-storagemodprobe charge automatiquement les dépendances du module, ce qui
en fait l'outil à privilégier. Notez que les tirets et les tirets bas sont
interchangeables : modprobe usb-storage et modprobe usb_storage chargent
le même module, mais lsmod l'affiche toujours avec un tiret bas
(usb_storage).
Pour retirer un module de la mémoire :
sudo modprobe -r usb-storageAttention : un module ne peut être retiré que s'il n'est pas utilisé (le
compteur Used by doit être à 0). Sinon, modprobe -r échoue avec
Module usb_storage is in use.
Pour vérifier qu'un module est bien chargé ou déchargé :
lsmod | grep usb_storageLa commande modinfo affiche la carte d'identité d'un module :
description, licence, fichier sur le disque, paramètres et alias matériels :
modinfo usb-storagefilename: /lib/modules/6.8.0-134-generic/kernel/drivers/usb/storage/usb-storage.ko.zstlicense: GPLdescription: USB Mass Storage driver for Linuxauthor: Matthew Dharm <mdharm-usb@one-eyed-alien.net>En cas de problème matériel, recharger un module permet de réinitialiser un pilote sans redémarrer, par exemple pour une carte réseau Realtek :
sudo modprobe -r r8169sudo modprobe r8169Les fichiers des modules sont stockés dans /lib/modules/$(uname -r)/,
souvent compressés (.ko.zst ou .ko.xz selon la distribution). Pour
localiser un module précis :
find /lib/modules/$(uname -r) -type f -name 'usb-storage.ko*'/lib/modules/6.8.0-134-generic/kernel/drivers/usb/storage/usb-storage.ko.zstSuivre la détection du matériel avec dmesg
Section intitulée « Suivre la détection du matériel avec dmesg »La commande dmesg affiche le tampon de messages du noyau (kernel
ring buffer) : tout ce que le noyau enregistre depuis le démarrage, dont la
détection et la configuration du matériel. C'est l'outil de premier recours
quand un périphérique branché ne donne aucun signe de vie.
Sur la plupart des distributions récentes, la lecture de ce tampon est
réservée à root (paramètre kernel.dmesg_restrict) : sans sudo, la
commande échoue avec read kernel buffer failed: Operation not permitted.
sudo dmesgExemple de séquence lors du branchement d'un périphérique USB :
[ 1.155126] usb 1-1: new high-speed USB device number 2 using xhci_hcd[ 1.285464] usb 1-1: New USB device found, idVendor=2109, idProduct=2822, bcdDevice=90.13[ 1.285515] usb 1-1: Product: USB2.0 Hub[ 1.285520] usb 1-1: Manufacturer: VIA Labs, Inc.On y retrouve les identifiants idVendor et idProduct, les mêmes que ceux
affichés par lsusb et exploitables dans une règle udev.
Pour cibler uniquement les messages relatifs aux périphériques USB :
sudo dmesg | grep -i usbPour consulter uniquement les derniers messages, les plus récents étant en
bas, combinez avec tail juste après avoir branché un matériel :
sudo dmesg | tailPour une surveillance continue des messages du noyau (l'équivalent de
tail -f pour les journaux), l'option --follow affiche les événements en
direct ; c'est la meilleure façon d'observer ce qui se passe au moment
exact où vous branchez un périphérique :
sudo dmesg --followVous pouvez également chercher des erreurs en filtrant sur des mots-clés
comme error, fail ou fault :
sudo dmesg | grep -i errorPar défaut, dmesg horodate les messages en secondes depuis le démarrage.
Pour un affichage avec les dates réelles, utilisez -T :
sudo dmesg -T[mar. juil. 14 07:50:18 2026] usb 1-1: new high-speed USB device number 2 using xhci_hcdExemple pratique : pour diagnostiquer un disque qui pose problème, filtrez sur son nom de périphérique et cherchez des erreurs d'entrées/sorties :
sudo dmesg | grep -i nvme0L'absence d'erreur I/O error ou link reset dans cette sortie est bon
signe : le disque est reconnu et dialogue normalement avec le noyau.
Dépannage
Section intitulée « Dépannage »Face à un périphérique récalcitrant, l'erreur classique est de tester au hasard. Ce tableau reprend les symptômes les plus fréquents et l'ordre de diagnostic à suivre, du matériel vers la configuration.
| Symptôme | Cause probable | Solution |
|---|---|---|
Clé USB invisible dans lsblk | Câble/port défectueux, ou module de stockage absent | Lancer sudo dmesg --follow puis brancher la clé : aucun message = problème matériel ; messages présents mais pas de /dev/sd* = vérifier lsmod | grep usb_storage et charger le module |
Carte détectée par lspci mais interface absente | Pilote non chargé ou inexistant | lspci -k : si Kernel driver in use manque, charger le module listé dans Kernel modules avec modprobe, ou installer le firmware manquant signalé dans dmesg |
| Règle udev sans effet | Règles non rechargées, ou mauvais attribut (ATTR au lieu de ATTRS) | sudo udevadm control --reload && sudo udevadm trigger, puis vérifier les attributs réels avec udevadm info --attribute-walk |
modprobe -r échoue avec Module is in use | Le module est utilisé par un périphérique monté ou un autre module | Consulter la colonne Used by de lsmod, démonter les systèmes de fichiers ou décharger d'abord les modules dépendants |
dmesg répond Operation not permitted | Lecture du tampon noyau restreinte (kernel.dmesg_restrict=1) | Relancer la commande avec sudo |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Chaque périphérique suit la même chaîne : matériel, pilote, noyau, puis
udev qui crée le fichier spécial dans
/dev. - Les fichiers de
/devsont de type bloc (b, disques) ou caractère (c, terminaux, ports série), identifiés par un couple majeur/mineur. - Les règles udev personnalisées vont dans
/etc/udev/rules.d/; après modification,udevadm control --reloadpuisudevadm trigger. ATTRS{}compare aussi les attributs des périphériques parents,ATTR{}seulement ceux du périphérique courant : c'est le piège numéro un des règles udev.lspci -ketlshw -C networkrévèlent le pilote associé à un périphérique ; une carte sansKernel driver in usene fonctionnera pas.lsblk -fmontre la hiérarchie disques/partitions avec les UUID, la référence stable à utiliser dans/etc/fstab.modprobecharge un module avec ses dépendances ; un module ne se décharge que si son compteurUsed byest à zéro.sudo dmesg --followest le meilleur point d'observation au moment où vous branchez un périphérique.
FAQ: Questions Fréquemment Posées
Section intitulée « FAQ: Questions Fréquemment Posées »Les questions qui reviennent le plus souvent sur l'identification des périphériques sous Linux, avec des réponses courtes et directes.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Identifier ses disques de façon fiable : UUID, WWN, chemins
/dev/disk/by-*et numéros de série pour ne plus jamais écraser le mauvais disque. - Les cgroups : comment le noyau limite l'accès aux ressources, y compris aux périphériques, mécanisme au cœur des conteneurs.