Aller au contenu

Les commandes de gestion des périphériques

Mise à jour :

La gestion des périphériques sous Linux repose sur un système puissant mais parfois méconnu. Entre les fichiers de périphériques dans /dev, les commandes comme lspci ou lsusb, et la gestion dynamique par udev, Linux offre tous les outils nécessaires pour identifier, configurer et surveiller vos composants matériels. Ce guide propose un tour d’horizon des principales commandes pour explorer et comprendre votre matériel efficacement.

Quelques concepts de base

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, clé USB – fonctionne correctement et soit exploitable par les applications.

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.

  • Exemple : quand vous branchez une clé USB, le noyau ne sait pas par défaut comment lire ce matériel. Le pilote USB va traduire les signaux électriques en opérations compréhensibles par Linux.

La chaîne de gestion

Le processus de reconnaissance et de gestion du matériel suit plusieurs étapes :

  • Matériel : un périphérique envoie des signaux électriques lorsqu’il est branché ou utilisé.
  • Pilote (driver) : ce pilote traduit ces signaux en instructions exploitables par le système.
  • Noyau : le noyau Linux traite ces instructions et crée une interface pour l’utilisateur.
  • Système de fichiers /dev : chaque périphérique est exposé sous forme d’un fichier spécial, permettant au système et aux applications d’interagir avec lui simplement via des opérations de lecture/écriture.

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 à travers les Interruptions Matérielles (IRQ). Chaque périphérique se voit attribuer un numéro d’interruption unique, qui permet au système de savoir quel matériel demande son attention.

Modules du noyau

Les pilotes sont souvent intégrés sous forme de modules du noyau, qui peuvent être chargés ou déchargés dynamiquement. Cela permet de gérer efficacement les périphériques sans redémarrer le système :

Terminal window
lsmod # Liste les modules actuellement chargés
sudo modprobe usb-storage # Charge le module pour les périphériques de stockage USB
sudo modprobe -r usb-storage # Décharge ce module

Exemple concret : branchement d’une clé USB

Prenons un scénario courant pour comprendre le fonctionnement en pratique :

  • Vous branchez une clé USB.
  • Le matériel envoie un signal électrique détecté par le noyau.
  • Le noyau identifie le type de périphérique et recherche le pilote approprié (par exemple, le module usb-storage pour une clé USB).
  • Une fois le pilote chargé (automatiquement via udev), le périphérique est exposé 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.

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

Lorsqu’un périphérique est branché (par exemple, une clé USB), le noyau Linux envoie un événement matériel. udev intercepte cet événement, identifie le périphérique, charge le pilote nécessaire si besoin, et crée un fichier spécial sous /dev.

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

Le comportement de udev est contrôlé par des règles, situées principalement dans les dossiers :

  • /etc/udev/rules.d/
  • /lib/udev/rules.d/

Chaque règle définit comment udev doit gérer un périphérique : nommage personnalisé, permissions spécifiques, ou lancement de scripts.

Exemple simple de règle udev (dans /etc/udev/rules.d/10-usb.rules) :

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="abcd", ATTR{idProduct}=="1234", SYMLINK+="mon_usb"

Cette règle crée un lien symbolique /dev/mon_usb pour tout périphérique USB correspondant à l’ID abcd:1234.

Commandes udevadm

  • Surveiller les événements matériels en temps réel

    Pour voir en direct ce qui se passe lorsque vous connectez ou déconnectez un périphérique :

    Terminal window
    udevadm monitor

    Cette commande affiche les événements du noyau et les actions prises par udev :

    KERNEL[1534.5678] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1 (usb)
    UDEV [1534.5690] add /devices/pci0000:00/0000:00:1d.0/usb2/2-1 (usb)
  • Lister les informations sur un périphérique

    Pour obtenir toutes les propriétés d’un périphérique (par exemple /dev/sdb1) :

    Terminal window
    udevadm info --name=/dev/sdb1

    Cela affichera des informations détaillées sur le périphérique, y compris son numéro de série, son type, et d’autres attributs.

  • Recharger les règles udev

    Après avoir modifié une règle, vous pouvez demander à udev de recharger ses règles avec :

    Terminal window
    sudo udevadm control --reload

    Et pour appliquer immédiatement ces règles à un périphérique déjà branché :

    Terminal window
    sudo udevadm trigger

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 dur, 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 de commande pour lister les périphériques :

Terminal window
ls -l /dev

Vous y verrez des entrées comme :

Terminal window
brw-rw---- 1 root disk 8, 0 mai 3 10:00 /dev/sda
crw-rw---- 1 root tty 4, 0 mai 3 10:00 /dev/tty0

Il existe deux grandes catégories de fichiers de périphériques :

  • 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 en blocs, ce qui est plus efficace pour les disques durs, les clés USB ou les partitions (/dev/sda, /dev/sdb1).

Chaque fichier est identifié par deux numéros :

  • Numéro majeur : identifie le type de périphérique (le pilote utilisé).
  • Numéro mineur : identifie l’instance spécifique du périphérique.

Vous pouvez consulter ces numéros avec la commande ls -l, comme vu précédemment.

Pour obtenir des informations détaillées sur un fichier de périphérique, utilisez :

Terminal window
stat /dev/sda

Exemple de sortie :

File: /dev/sda
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 0,5 Inode: 337 Links: 1 Device type: 8,0
Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk)```

Cela vous permet de vérifier le type exact du périphérique et ses identifiants système.

Obtenir des informations détaillées sur le matériel avec lshw

La commande lshw (Hardware Lister) est un outil puissant qui permet d’afficher 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 des bus spécifiques, lshw donne une vue globale de la machine.

lshw interroge directement le noyau et les interfaces systèmes pour récupérer des données techniques précises, notamment sur :

  • La carte mère
  • Le processeur (CPU)
  • La mémoire (RAM)
  • Les périphériques de stockage (HDD, SSD)
  • Les interfaces réseau

Pour afficher toutes les informations disponibles sur votre matériel :

Terminal window
sudo lshw

L’utilisation de sudo est fortement conseillée pour accéder aux détails des périphériques bas niveau (par exemple, les disques).

Si vous cherchez un aperçu rapide sans entrer dans les détails :

Terminal window
sudo lshw -short

Exemple de sortie :

H/W path Device Class Description
===========================================================
system UM250 (Default string)
/0 bus UM250
/0/0 memory 64KiB BIOS
/0/9 memory 40GiB System Memory
/0/9/0 memory 32GiB SODIMM DDR4 Synchronous Unbuffered (Unregistered) 2666 MHz (0,4 n
/0/9/1 memory 8GiB SODIMM DDR4 Synchronous Unbuffered (Unregistered) 2666 MHz (0,4 ns
/0/b memory 384KiB L1 cache
/0/c memory 2MiB L2 cache
/0/d memory 4MiB L3 cache
/0/e processor AMD Ryzen Embedded V1605B with Radeon Vega Gfx
/0/100 bridge Raven/Raven2 Root Complex
/0/100/0.2 generic Raven/Raven2 IOMMU
/0/100/1.1 bridge Raven/Raven2 PCIe GPP Bridge [6:0]
/0/100/1.1/0 enp1s0 network Ethernet Controller I225-V
/0/100/1.3 bridge Raven/Raven2 PCIe GPP Bridge [6:0]
/0/100/1.3/0 wlo1 network Wireless 7265
/0/100/8.1 bridge Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A
/0/100/8.1/0 display Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series]
/0/100/8.1/0.1 card0 multimedia Raven/Raven2/Fenghuang HDMI/DP Audio Controller

Vous pouvez filtrer les résultats pour n’afficher qu’une catégorie précise de périphériques :

  • Pour les cartes réseau :
Terminal window
sudo lshw -C network
  • Pour le stockage :
Terminal window
sudo lshw -C storage
  • Pour la mémoire :
Terminal window
sudo lshw -C memory

Vous pouvez exporter les résultats en XML, HTML ou JSON pour les intégrer dans des rapports ou des outils externes.

  • Format HTML :
Terminal window
sudo lshw -html > rapport_hardware.html
  • Format JSON (selon la version) :
Terminal window
sudo lshw -json

Exemple pratique

Pour vérifier si votre carte réseau dispose bien du bon pilote et des bonnes options :

Terminal window
sudo lshw -C network

Exemple de sortie :

*-network
description: Ethernet interface
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
configuration: driver=r8169

Cela vous permet de vérifier à la fois le matériel détecté et le driver (pilote) utilisé par Linux.

En utilisant efficacement lshw, vous bénéficiez d’une vision complète de la configuration matérielle de votre système, un atout précieux pour le dépannage, l’inventaire matériel, ou encore la préparation d’une migration ou d’une mise à jour.

Identifier les périphériques PCI avec lspci

Le bus PCI (Peripheral Component Interconnect) est utilisé pour connecter une grande variété de périphériques matériels internes : cartes réseau, cartes graphiques, contrôleurs SATA, etc. La commande lspci permet d’identifier tous les périphériques connectés à 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 présents sur votre machine :

Terminal window
lspci

Exemple de sortie :

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
00:01.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A
00:08.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus B
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 1

Cela vous donne un aperçu rapide des composants majeurs.

Pour obtenir des informations plus précises sur chaque périphérique, utilisez l’option -v (verbose) :

Terminal window
lspci -v

Cela affiche les détails comme les ressources allouées (IRQ, entrées/sorties mémoire), le module du noyau utilisé, etc.

Vous pouvez ajouter l’option -nn pour afficher les identifiants numériques du fabricant et du périphérique. Ces identifiants sont très pratiques pour rechercher des pilotes compatibles ou identifier précisément un matériel non reconnu.

Terminal window
lspci -nn

Exemple :

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82] (rev a1)

Ici, 10de est l’ID fabricant (NVIDIA) et 1c82 est l’ID du modèle (GTX 1050 Ti).

Pour voir la configuration brute d’un périphérique PCI :

Terminal window
lspci -x

Cela affiche les registres hexadécimaux de la configuration PCI, utile pour des diagnostics avancés.

La commande lspci utilise une base de données locale pour associer les identifiants PCI à des noms lisibles. Pour mettre à jour cette base (utile après installation d’un nouveau matériel) :

Terminal window
sudo update-pciids

Exemple d’utilisation

Pour rechercher uniquement votre carte graphique :

Terminal window
lspci | grep VGA

Exemple :

03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] (rev 83)

Cela permet de vérifier rapidement que le système détecte correctement votre carte vidéo.

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 peuvent être listés et identifiés avec la commande lsusb. Cet outil est indispensable pour diagnostiquer des problèmes liés aux périphériques externes ou vérifier leur bonne détection par le système.

Pour afficher la liste des périphériques USB connectés :

Terminal window
lsusb

Exemple de sortie :

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 003: ID 0d8c:0014 C-Media Electronics, Inc. Audio Adapter (Unitek Y-247A)
Bus 003 Device 004: ID 8087:0a2a Intel Corp. Bluetooth wireless interface
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Cela indique le bus USB, le numéro de périphérique, ainsi que l’ID fournisseur:produit et le nom du périphérique reconnu.

Pour obtenir des informations complètes sur chaque périphérique (interfaces, protocoles, alimentations…), utilisez :

Terminal window
lsusb -v

Attention, cette commande peut générer beaucoup d’informations si plusieurs périphériques sont branchés.

Pour cibler un seul périphérique (par exemple Bus 002 Device 003), vous pouvez préciser l’adresse :

Terminal window
lsusb -s 002:003 -v

Cela vous donnera tous les détails techniques uniquement pour ce périphérique.

Pour afficher l’arborescence des périphériques USB (utile pour voir comment chaque périphérique est connecté) :

Terminal window
lsusb -t

Exemple :

/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/: Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 480M
|__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 001: Dev 003, If 0, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 001: Dev 003, If 1, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 001: Dev 003, If 2, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 001: Dev 003, If 3, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 002: Dev 004, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 002: Dev 004, If 1, Class=Wireless, Driver=btusb, 12M
/: Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M

Cela montre la structure physique des ports et les pilotes utilisés.

Chaque périphérique USB possède un identifiant unique sous la forme ID 1234:abcd :

  • Les 4 premiers caractères (exemple : 1234) correspondent à l’ID fournisseur.
  • Les 4 suivants (exemple : abcd) correspondent à l’ID produit.

Ces identifiants peuvent être utilisés pour rechercher des informations sur le matériel (via des bases comme Linux USB Database) ou pour écrire des règles udev personnalisées.

Exemple pratique

Pour détecter si une imprimante USB est reconnue par le système :

Terminal window
lsusb | grep -i printer

S’il n’y a aucun résultat, cela signifie que l’imprimante n’est pas détectée par le bus USB.

Visualiser la hiérarchie des périphériques de blocs avec lsblk

La commande lsblk (List Block Devices) permet d’afficher la hiérarchie complète des périphériques de bloc : disques durs, SSD, clés USB, partitions, etc. Elle est particulièrement utile pour vérifier la structure des disques et des systèmes de fichiers.

Pour lister tous les périphériques de bloc détectés par le système :

Terminal window
lsblk

Exemple de sortie :

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 450G 0 part /
└─sda2 8:2 0 50G 0 part /home
sdb 8:16 1 16G 0 disk
└─sdb1 8:17 1 16G 0 part /media/usb

Cette représentation en arborescence montre la relation entre les disques physiques (ex. : sda, sdb) et leurs partitions (ex. : sda1, sda2).

Pour voir également les types de systèmes de fichiers utilisés (ext4, ntfs, etc.) :

Terminal window
lsblk -f

Exemple :

NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 a1b2c3d4-e5f6-7890-abcd-ef1234567890 /
└─sda2 ext4 b2c3d4e5-f678-9012-abcd-ef2345678901 /home
sdb
└─sdb1 vfat CAFE-1234 /media/usb

Pour afficher des colonnes supplémentaires (type de périphérique, taille, point de montage…) :

Terminal window
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID,MODEL

Cela permet d’avoir une vue complète des attributs des périphériques de bloc.

Par défaut, lsblk n’affiche que les périphériques de bloc. Pour voir également les périphériques vides ou non montés :

Terminal window
lsblk -a

Vous pouvez limiter l’affichage à un disque spécifique :

Terminal window
lsblk /dev/sdb

Cela vous montrera uniquement les détails de ce périphérique.

Exemple pratique

Pour vérifier si votre clé USB est bien reconnue et montée :

Terminal window
lsblk -f | grep /media

Cela affiche toutes les partitions montées sous /media, souvent utilisées pour les supports amovibles.

Alternative : blkid

Bien que lsblk soit l’outil de choix pour visualiser la hiérarchie, la commande blkid permet d’identifier rapidement un périphérique grâce à son UUID ou son type de système de fichiers :

Terminal window
sudo blkid

Exemple :

/dev/sda1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4"
/dev/sdb1: UUID="CAFE-1234" TYPE="vfat"

Autres commandes utiles pour l’information matérielle

En plus des classiques lspci, lsusb ou 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, les composants internes et la configuration système.

dmidecode

La commande dmidecode extrait des informations depuis la table DMI (Desktop Management Interface), qui contient des détails sur le matériel tels que :

  • Le fabricant de la carte mère
  • Le modèle et la version du BIOS
  • La taille et les emplacements de la mémoire RAM

Commande de base :

Terminal window
sudo dmidecode

Exemple de sortie (partielle) :

System Information
Manufacturer: Dell Inc.
Product Name: XPS 13 9370
Serial Number: ABCDEF1

Pour cibler une section précise, par exemple la mémoire :

Terminal window
sudo dmidecode -t memory

inxi

inxi est un script très complet qui donne des informations sur le matériel, mais aussi sur le système et l’environnement logiciel. Très pratique pour un résumé rapide de la configuration d’une machine.

Installation (si besoin) :

Terminal window
sudo apt install inxi

Commande recommandée :

Terminal window
inxi -Fxz

Exemple de sortie (partielle) :

CPU: Quad Core Intel Core i5-8250U
Graphics: Intel UHD Graphics 620
Drives: 500GB SSD
Network: Intel Wireless 8265 / Realtek RTL8111

hwinfo

hwinfo est une alternative à lshw qui scanne l’ensemble du matériel de votre machine. Très utilisé pour diagnostiquer les périphériques non détectés ou obtenir des détails bruts.

Installation :

Terminal window
sudo apt install hwinfo

Commande générale :

Terminal window
sudo hwinfo

Pour cibler uniquement certains composants (par exemple, le réseau) :

Terminal window
sudo hwinfo --network

lscpu

Pour afficher uniquement les informations du CPU :

Terminal window
lscpu

Exemple :

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 43 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Vendor ID: AuthenticAMD
Model name: AMD Ryzen Embedded V1605B with Radeon Vega Gfx
CPU family: 23
Model: 17
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Stepping: 0
Frequency boost: enabled
CPU(s) scaling MHz: 74%
CPU max MHz: 2000,0000
CPU min MHz: 1600,0000
BogoMIPS: 3992,26
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse
sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc c
puid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe pop
cnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse
3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx c
pb hw_pstate ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale
vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overfl
ow_recov succor smca sev sev_es
Virtualization features:
Virtualization: AMD-V
Caches (sum of all):
L1d: 128 KiB (4 instances)
L1i: 256 KiB (4 instances)
L2: 2 MiB (4 instances)
L3: 4 MiB (1 instance)
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0-7
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Not affected
Reg file data sampling: Not affected
Retbleed: Mitigation; untrained return thunk; SMT vulnerable
Spec rstack overflow: Mitigation; Safe RET
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Spectre v2: Mitigation; Retpolines; IBPB conditional; STIBP disabled; RSB filling; PBRSB-eIBRS Not affect
ed; BHI Not affected
Srbds: Not affected
Tsx async abort: Not affected

Gestion des modules du noyau avec modprobe et lsmod

Le noyau Linux utilise des modules pour gérer de nombreux composants matériels. Ces modules sont des morceaux de code qui peuvent être chargés ou déchargés dynamiquement, permettant au noyau de s’adapter en temps réel aux périphériques présents sur la machine.

La commande lsmod affiche tous les modules actuellement chargés dans le noyau.

Terminal window
lsmod

Exemple de sortie :

usb_storage 69632 1
r8169 94208 0
i915 2529280 3

Colonnes principales :

  • Module : nom du module.
  • Size : taille du module en mémoire.
  • Used by : combien d’instances utilisent ce module.

Cela permet de vérifier si un module (par exemple, pour une carte réseau) est bien chargé.

Pour charger un module spécifique (par exemple usb-storage pour un périphérique USB de stockage) :

Terminal window
sudo modprobe usb-storage

Cette commande s’occupe aussi de charger automatiquement les éventuelles dépendances du module.

Pour retirer un module de la mémoire (s’il n’est plus utilisé) :

Terminal window
sudo modprobe -r usb-storage

Attention : vous ne pouvez retirer un module que s’il n’est pas utilisé activement par le système (le compteur “Used by” doit être à 0).

Pour vérifier que le module a bien été chargé ou déchargé, combinez :

Terminal window
lsmod | grep usb_storage

La commande modinfo permet d’obtenir des détails sur un module : description, licence, dépendances, alias matériels…

Terminal window
modinfo usb-storage

Exemple :

description: USB Mass Storage driver for Linux
author: Matthew Dharm
license: GPL

En cas de problème matériel, il peut être utile de recharger un module (par exemple, pour réinitialiser un pilote) :

Terminal window
sudo modprobe -r r8169
sudo modprobe r8169

Les modules sont stockés dans /lib/modules/$(uname -r)/. Vous pouvez rechercher un module précis avec :

Terminal window
find /lib/modules/$(uname -r) -type f -name 'usb-storage.ko*'

En utilisant lsmod, modprobe et modinfo, vous avez un contrôle fin sur la gestion des pilotes matériels de votre système Linux, ce qui est essentiel pour résoudre des problèmes ou configurer des périphériques spécifiques manuellement.

Surveillance des événements matériels avec dmesg

La commande dmesg (diagnostic message) est un outil essentiel pour surveiller en temps réel les messages du noyau Linux, notamment ceux liés à la détection et à la gestion du matériel. Elle permet de diagnostiquer les problèmes matériels en consultant les journaux des événements survenus depuis le démarrage du système.

À chaque fois qu’un matériel est détecté, configuré ou qu’une erreur survient, le noyau enregistre un message dans le journal système. Vous pouvez afficher ce journal avec :

Terminal window
sudo dmesg

Exemple (extrait) :

[ 10.123456] usb 2-1: new high-speed USB device number 3 using xhci_hcd
[ 10.234567] usb-storage 2-1:1.0: USB Mass Storage device detected

Pour cibler uniquement les messages relatifs aux périphériques USB :

Terminal window
sudo dmesg | grep -i usb

Cela est utile pour vérifier si une clé USB, une imprimante ou tout autre périphérique est bien détecté par le système.

Pour consulter uniquement les derniers messages (les plus récents apparaissant en bas) :

Terminal window
sudo dmesg | tail

Cette commande est très pratique après avoir branché un nouveau matériel.

Pour une surveillance continue des messages du noyau (comme tail -f pour les logs) :

Terminal window
sudo dmesg --follow

Cela permet de voir en direct les événements matériels sans relancer la commande.

Vous pouvez également chercher des erreurs spécifiques en filtrant avec des mots-clés comme error, fail ou fault :

Terminal window
sudo dmesg | grep -i error

Par défaut, dmesg affiche les horodatages sous forme brute (en secondes depuis le démarrage). Pour un affichage plus lisible avec les dates réelles :

Terminal window
sudo dmesg -T

Exemple pratique

Pour diagnostiquer un problème avec un disque dur externe, vous pouvez enchaîner :

Terminal window
dmesg | grep -i sda

Cela permet de savoir si le disque /dev/sda est bien reconnu et monté sans erreur.

Contrôle de connaissances

Pourquoi ce contrôle ?

Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.

💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.

Bonne chance ! 🚀

Conclusion

En espérant que ce guide vous ait permis de mieux comprendre et maîtriser les commandes essentielles pour gérer le matériel sous Linux, afin de diagnostiquer vos périphériques avec plus de précision et de sérénité.

FAQ: Questions Fréquemment Posées

Qu'est-ce que udev sous Linux ?
udev est le gestionnaire dynamique de périphériques sous Linux. Il détecte automatiquement les périphériques branchés ou débranchés, crée ou supprime les fichiers correspondants dans /dev, et applique des règles pour configurer ces périphériques.
À quoi sert la commande lspci ?
La commande lspci sert à lister tous les périphériques connectés au bus PCI (cartes réseau, cartes graphiques, contrôleurs, etc.) et fournit des détails techniques comme l’ID du fabricant et du modèle.
Comment lister les périphériques USB connectés ?
La commande lsusb permet d’afficher la liste des périphériques USB connectés à l’ordinateur, avec leurs identifiants de fabricant et de produit, ainsi que des informations détaillées via l’option -v.
Que fait la commande lsblk ?
lsblk affiche la hiérarchie des périphériques de bloc (disques, clés USB, partitions), leurs points de montage et types de système de fichiers, ce qui permet de visualiser la structure des disques.
À quoi sert la commande lshw ?
La commande lshw fournit une vue détaillée de la configuration matérielle d’une machine, couvrant la mémoire, le processeur, les interfaces réseau, le stockage et plus encore.
Comment recharger les règles udev après modification ?
Pour recharger les règles udev après modification, utilisez la commande sudo udevadm control --reload, puis sudo udevadm trigger pour appliquer les règles aux périphériques déjà branchés.
Qu'est-ce qu'un fichier de périphérique dans /dev ?
Un fichier de périphérique dans /dev est une interface qui permet aux applications et au système d’interagir avec le matériel via des opérations classiques (lecture/écriture), suivant le principe « tout est fichier » de Linux.
Quelle est la différence entre périphérique de caractère et de bloc ?
Les périphériques de caractère (type c) transmettent des données caractère par caractère (ex. : terminaux), tandis que les périphériques de bloc (type b) traitent les données par blocs (ex. : disques durs).
Comment vérifier les modules du noyau chargés ?
La commande lsmod permet de lister les modules du noyau actuellement chargés, tandis que modprobe permet de charger ou décharger ces modules dynamiquement.
Qu'est-ce qu'une interruption matérielle (IRQ) ?
Une interruption matérielle (IRQ) permet à un périphérique de signaler au processeur qu’un événement s’est produit, comme une touche pressée ou la fin d’un transfert de données.
Comment surveiller les événements matériels en temps réel ?
La commande udevadm monitor permet de surveiller en direct les événements matériels générés par le noyau et les actions prises par udev lors de la connexion ou déconnexion de périphériques.
Que permet de faire la commande dmesg ?
dmesg affiche les messages du noyau, notamment ceux liés aux détections matérielles, ce qui est utile pour diagnostiquer les problèmes lors de la connexion de périphériques.
Comment savoir si un module spécifique est chargé ?
Vous pouvez utiliser lsmod | grep nom_module pour vérifier si un module précis est chargé. modinfo nom_module donne des détails techniques sur ce module.
Comment identifier rapidement une carte réseau sous Linux ?
La commande sudo lshw -C network permet d’afficher les détails sur les cartes réseau détectées, leurs pilotes et configurations. On peut aussi utiliser lspci | grep Ethernet.
Quelle commande affiche les détails du processeur ?
La commande lscpu fournit des informations détaillées sur le processeur (architecture, nombre de cœurs, fréquences, virtualisation, etc.).