Comment récupérer des informations matérielles avec dmidecode sous Linux
Dmidecode est un utilitaire gratuit et open source que nous pouvons utiliser pour récupérer des informations matérielles sur Linux. L’outil est disponible dans les dépôts de toutes les principales distributions Linux et est capable d’inspecter et de vider le contenu de la table SMBIOS.
Dans ce tutoriel, nous apprenons comment installer dmidecode, et comment l’utiliser pour récupérer des informations sur la configuration matérielle sous Linux.
Dans ce tutoriel, vous allez apprendre :
- Comment installer dmidecode sur les principales distributions Linux
- Organisation des enregistrements d’informations rapportés par dmidecode
- Comment utiliser dmidecode pour récupérer des informations matérielles spécifiques
| Catégorie | Exigences, conventions ou version du logiciel utilisé |
|---|---|
| Système | Indépendant de la distribution |
| Logiciel | dmidecode |
| Autre | None |
| Conventions | # – exige que les commandes linux données soient exécutées avec les privilèges root, soit directement en tant qu’utilisateur root, soit en utilisant la commande sudo $– exige que les commandes linux données soient exécutées en tant qu’utilisateur régulier non privilégié |
Installation
L’outil dmidecode est disponible dans les dépôts par défaut de toutes les principales distributions Linux ; Il y a de fortes chances que l’utilitaire soit déjà installé dans votre système. Si pour une raison quelconque ce n’est pas le cas, voici les commandes que nous pouvons utiliser pour l’installer sur Archlinux et les distributions membres de la famille Fedora et Debian :
| DISTRIBUTION | COMMANDER |
|---|---|
| Fedora/Rhel/Rocky | $sudo dnf install dmidecode |
| Debian/Ubuntu | $sudo apt install dmidecode |
| Archlinux | $sudo pacman -S dmidecode |
La table DMI/SMBIOS
DMI est l’acronyme de Desktop Management Interface ; SMBIOS, à la place signifie : System Management Bios. Les deux normes sont développées par la Desktop Management Task Force (DMTF). Leur but est de permettre à un système d’exploitation d’accéder facilement aux informations matérielles.
Au démarrage, la table contenant ces informations est chargée en mémoire et peut être analysée par des utilitaires dédiés tels que dmidecode. Le tableau contient des informations telles que le fournisseur du matériel, la configuration, les numéros de série, la liste des ports, etc.
Utilisation de dmidecode
Voyons quelques exemples d’utilisation de l’outil dmidecode. Lorsque l’utilitaire est appelé sans aucune option, il produit simplement une sortie qui contient toutes les informations qu’il est capable de récupérer. L’information est organisée dans des registres. En voici un exemple :
sudo dmidecode
[...]
Handle 0x0003, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 32 GB
Error Information Handle: Not Provided
[...][ADLSOT2]Celui ci-dessus n’est, pour des raisons évidentes, qu’un petit extrait de la sortie produite par l’utilitaire, et décrit la configuration de la mémoire sur ma machine. Analysons comment le disque est composé. Chaque enregistrement contient :
- Un identifiant (0x0003 dans ce cas)
- Type DMI, qui dans ce cas est 16, qui fait référence à la matrice de mémoire physique. La spécification SMBIOS encode et associe une liste de types dans une table (nous y reviendrons plus tard). Nous pouvons demander à dmidecode de renvoyer uniquement des informations relatives à des types spécifiques.
- Taille utilisée pour stocker l’enregistrement, qui, dans ce cas, est de 23 octets.
- Les valeurs réelles de l’enregistrement, qui varient en fonction de l’enregistrement lui-même.
Les types DMI
Comme nous l’avons déjà dit, les informations sont organisées en types. Le tableau ci-dessous contient leurs associations :
| TYPE DMI | INFORMATION |
|---|---|
| Biographies | |
| 1 | Système |
| 2 | Plinthe |
| 3 | Châssis |
| 4 | Processeur |
| 5 | Contrôleur de mémoire |
| 6 | Module de mémoire |
| 7 | Cache |
| 8 | Connecteur de port |
| 9 | Emplacements système |
| 10 | Appareils embarqués |
| 11 | Cordes OEM |
| 12 | Options de configuration du système |
| 13 | Biographie Langue |
| 14 | Associations de groupe |
| 15 | Journal des événements système |
| 16 | Matrice de mémoire physique |
| 17 | Périphérique de mémoire |
| 18 | Erreur de mémoire 32 bits |
| 19 | Adresse mappée de la matrice de mémoire |
| 20 | Adresse mappée du périphérique de mémoire |
| 21 | Dispositif de pointage intégré |
| 22 | Batterie portable |
| 23 | Réinitialisation du système |
| 24 | Sécurité matérielle |
| 25 | Commandes d’alimentation du système |
| 26 | Sonde de tension |
| 27 | Dispositif de refroidissement |
| 28 | Sonde de température |
| 29 | Sonde de courant électrique |
| 30 | Accès à distance hors bande |
| 31 | Services d’intégrité de démarrage |
| 32 | Démarrage du système |
| 33 | Erreur de mémoire 64 bits |
| 34 | Dispositif de gestion |
| 35 | Composant du périphérique de gestion |
| 36 | Données de seuil du périphérique de gestion |
| 37 | Canal mémoire |
| 38 | Périphérique IPMI |
| 39 | Alimentation |
| 40 | Informations complémentaires |
| 41 | Informations étendues sur les appareils embarqués |
| 42 | Interface hôte du contrôleur de gestion |
Les types DMI peuvent être utilisés pour récupérer et filtrer des informations spécifiques avec dmidecode. Tout ce que nous avons à faire est d’appeler l’utilitaire avec l’option -t (abréviation de --type), et de fournir le type DMI que nous voulons interroger comme argument. Supposons que nous voulions collecter des informations sur les périphériques de mémoire (17), nous exécuterions :
sudo dmidecode -t 17Sur ma machine, le résultat produit par la commande est le suivant :
dmidecode 3.4
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.
Handle 0x0004, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0003
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: SODIMM
Set: None
Locator: ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 2133 MT/s
Manufacturer: Micron
Serial Number: 00000000
Asset Tag: None
Part Number: 4ATS1G64HZ-2G3A1
Rank: 1
Configured Memory Speed: 2133 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: 1.2 V
Handle 0x0005, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0003
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: ChannelB-DIMM0
Bank Locator: BANK 2
Type: Unknown
Comme vous pouvez le voir, il y a deux banques de mémoire DDR4 disponibles, et une seule de 8 Go est utilisée (soudée). Nous pouvons voir que d’autres informations précieuses comme le « Part Number » sont également signalées : cela peut être utile au cas où nous voudrions être sûrs d’acheter du matériel compatible.
Plusieurs types DMI peuvent être interrogés par une seule commande : nous pouvons soit répéter l’option, soit fournir une liste de numéros de type séparés par des virgules comme argument. Pour interroger à la fois le BIOS (0) et les périphériques de mémoire (17), par exemple, nous exécuterions :
sudo dmidecode --type 0,17Conclusions
Dans ce tutoriel, nous avons appris à installer et à utiliser l’utilitaire dmidecode pour récupérer des informations matérielles sous Linux. L’outil est open source et disponible sur toutes les principales distributions : il est capable de lire et d’analyser la table SMBIOS. Nous avons vu comment chaque enregistrement affiché par l’application est composé, et comment interroger des informations spécifiques, qui sont organisées en types DMI.
