Les commandes hardware sous Linux

Il existe plusieurs façons d’avoir des renseignements sur la version de sa distribution, son nom, version du noyau, etc.

Nom générique et version

Pour avoir le nom générique de la distribution et le numéro de version on va voir /etc/issue

Serveur local

# cat /etc/issue
Ubuntu 16.04.4 LTS \n \l

Serveur ovh

# cat /etc/issue
Debian GNU/Linux 7.6
Linux server 3.10.23-xxxx-std-ipv6-64 #1 SMP Tue Mar 18 14:48:24 CET 2014 x86_64 GNU/Linux
server : 219744
hostname : server
eth0 IPv4 : 198.x.x.x
eth0 IPv6 : 2607:x:x:x::1/128

Nom générique et version détaillée

Pour avoir la version du noyau on utilise lsb_release -a

Serveur local

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial

Quasiment similaire à :

# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"

Serveur ovh

# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.11 (wheezy)
Release: 7
Codename: wheezy

Quasiment similaire à :

# cat /etc/lsb-release 
DISTRIB_ID=Debian
DISTRIB_RELEASE=7
DISTRIB_CODENAME=
DISTRIB_DESCRIPTION=

Version du noyau

Pour avoir la version du noyau on va voir /proc/version

Serveur local

# cat /proc/version
Linux version 4.4.0-116-generic (buildd@lgw01-amd64-021) (gcc version 5.4.0 20160609
(Ubuntu 5.4.0-6ubuntu1~16.04.9) ) #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018

Serveur ovh

# cat /proc/version 
Linux version 3.10.23-xxxx-std-ipv6-64 ([email protected]) (gcc version 4.7.2
(Debian 4.7.2-5) ) #1 SMP Tue Mar 18 14:48:24 CET 2014

Version du noyau détaillées

La commande uname affiche les informations système suivantes : nom du noyau, hostname, version du noyau, date du noyau, nom matériel de la machine, type de processeur, plate-forme matérielle, système d’exploitation.

Serveur local

# uname -a
Linux linux1 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Serveur ovh

# uname -a
Linux 88.162.x.x 3.10.23-xxxx-std-ipv6-64 #1 SMP Tue Mar 18 14:48:24 CET 2014 x86_64 GNU/Linux

Note : A la place du hostname il y a l‘@IP de la maison (et non pas celle du serveur…). Par ailleurs, la commande hostname renvoie cette même adresse.
La commande permettant de changer le hostname est : hostnamectl set-hostname LeNomDuServer

Informations sur le matériel du système Linux

informations CPU

Commande lscpu

La commande lscpu donne des informations sur votre CPU : architecture, nombre de CPU, de cœurs, de familles de processeurs, de caches CPU, de threads, etc.

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Stepping: 7
CPU MHz: 1632.000
BogoMIPS: 6784.13
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3

Le fichier /proc/cpuinfo

Ce fichier donne les détails de chaque processeur :

# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz
[...]

processor : 3
vendor_id : GenuineIntel
cpu family : 6
[...]

Utilitaire dmidecode

L’utilitaire dmidecode lit et interprète directement la table DMI (Desktop Management Interface) ou SMBIOS (System Management BIOS). Il fournit des informations sur l’état matériel actuel de la machine et sur ses extensions possibles (vitesse max. du processeur, quantité de mémoire possible, etc.). Contrairement à hwinfo qui interroge un composant, dmidecode lit les informations telles que détectées par le BIOS et la carte mère. C’est rapide, parfois plus précis que hwinfo, mais parfois faux donc à vérifier.

# dmidecode -t processor
# dmidecode 2.11
SMBIOS 2.7 present.

Handle 0x0004, DMI type 4, 42 bytes
Processor Information
Socket Designation: LGA1155 CPU 1
Type: Central Processor
Family: Core i3
Manufacturer: Intel(R) Corp.
ID: A7 06 02 00 FF FB EB BF
Signature: Type 0, Family 6, Model 42, Stepping 7
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
[...]

informations sur les bus PCI

Commande lspci

La commande lspci fournit des informations détaillées sur les cartes et adaptateurs reliés au bus PCI. Les adaptateurs peuvent être ceux connectés sur les ports d’extension de la carte mère mais aussi ceux intégrés à la carte mère (contrôleurs IDE/SATA, cartes réseaux, etc.). Les bus AGP et PCI Express sont considérés comme étant des bus PCI.

# lspci (-t)
00:00.0 RAM memory: NVIDIA Corporation MCP61 Host Bridge (rev a1)
00:01.0 ISA bridge: NVIDIA Corporation MCP61 LPC Bridge (rev a2)
00:01.1 SMBus: NVIDIA Corporation MCP61 SMBus (rev a2)
00:01.2 RAM memory: NVIDIA Corporation MCP61 Memory Controller (rev a2)
00:02.0 USB controller: NVIDIA Corporation MCP61 USB 1.1 Controller (rev a3)
00:02.1 USB controller: NVIDIA Corporation MCP61 USB 2.0 Controller (rev a3)
[...]

Donne les détails de chaque bus.

# lspci -v
00:00.0 RAM memory: NVIDIA Corporation MCP61 Host Bridge (rev a1)
Subsystem: ASRock Incorporation MCP61 Host Bridge
Flags: bus master, 66MHz, fast devsel, latency 0
Capabilities: <access denied>

00:01.0 ISA bridge: NVIDIA Corporation MCP61 LPC Bridge (rev a2)
Subsystem: ASRock Incorporation MCP61 LPC Bridge
Flags: bus master, 66MHz, fast devsel, latency 0
I/O ports at 0900 [size=256]
[...]

Vous pouvez détailler encore plus avec l’option -v et préciser un adaptateur avec ses identifiants. Pour obtenir les informations détaillées sur le contrôleur Ethernet (02:03.0) procédez comme ceci :

# lspci -v -s 02:03.0
02:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169
Gigabit Ethernet (rev 10)
Subsystem: Unknown device 1631:d008
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 20
I/O ports at 8800 [size=256]

Quand c’est possible, la ligne Subsystem indique le constructeur et le modèle exact du périphérique. Le périphérique est identifié par une paire de valeurs hexadécimales. La première est l’identifiant unique du constructeur (vendor). La seconde est l’identifiant du modèle. Certains modèles ont parfois les mêmes identifiants alors que le matériel peut être différent (changement de chipset).

Si les informations ne sont pas suffisantes, spécifiez l’option -vv :

# lspci -vv -s 02:03.0

Informations sur les ports USB

Commande lsusb

La commande lsusb renvoie les informations sur les contrôleurs USB et les périphériques qui leur sont connectés. Elle fait la même chose que lspci mais pour le bus USB :

# lsusb (-t)
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate M
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Pour plus de detail lsusb :

# lsusb -v -d 002
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
[...]

Périphériques de type bloc et caractère

Affiche les différents périphériques de caractères et de blocs actuellement configurés (à l’exclusion des périphériques dont les modules ne sont pas chargés).

# cat /proc/devices
Character devices:
1 mem
2 pty
4 ttyS
5 /dev/console
90 mtd
180 usb
203 cpu/cpuid
251 watchdog

Block devices:
1 ramdisk
3 ide0
31 mtdblock
43 nbd
65 sd

Canaux DMA

L’accès direct à la mémoire ou DMA (Direct Memory Access), permet les transferts de données entre la mémoire et les périphériques sans intervention de l’unité centrale (CPU).

# cat /proc/dma

Plages d’adresses d’entrées-sorties

La sortie de /proc/ioports fournit la liste des ports utilisés pour les entrées/sorties avec un périphérique. La première colonne indique la plage d’adresses du port d’E/S réservée au périphérique qui se trouve dans la deuxième colonne.

# cat /proc/ioports
0000-03af : PCI Bus 0000:00
0000-001f : dma1
0060-0060 : keyboard
0070-0071 : rtc0
0295-0296 : w83627ehf
0295-0296 : w83627ehf
0376-0376 : ide_generic
03b0-03df : PCI Bus 0000:00
03c0-03df : vga+

Lister le matériel avec des outils multifonction

Commande lshw

List hardware lshw est un outil permettant d’extraire de façon détaillé les informations de configuration matérielle de votre machine (mémoire, carte mère, CPU, cache, bus, etc.).

# lshw
ServerOHV
description: Ordinateur de Bureau
produit: ()
bits: 64 bits
fonctionnalités: smbios-2.7 dmi-2.7 vsyscall32
configuration: boot=normal chassis=desktop uuid=CC9G4B20-B615-1251-AFD1-4C72CD2589F8
*-core
description: Carte mère
produit: DH61AG
fabriquant: Intel Corporation
identifiant matériel: 2
version: AAG23736-503
numéro de série: BTAG224014CR
emplacement: To be filled by O.E.M.

Le résultat étant très long, il est possible de faire une mise en page HTML, il existe aussi une option -json.

# lshw -html > Bureau/lshw.html

il est également possible d’afficher un résumé :

# lshw -short
Chemin matériel Périphérique Classe Description
============================================================
system ()
/2 bus DH61AG
/2/0 memory 64KiB BIOS
/2/4 processor Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz
/2/4/5 memory 32KiB L1 cache
/2/4/6 memory 512KiB L2 cache
/2/4/7 memory 3MiB L3 cache
/2/26 memory 8GiB Mémoire Système

Commande hwinfo

L’outil hwinfo détecte votre matériel et vous en fournit la liste (d’une manière courte avec l’option --short). Il se base sur une interrogation du matériel qui lui retourne ses informations :

# hwinfo --short

Pour obtenir plus de détails, supprimez l’option --short, et spécifiez éventuellement quel composant vous voulez détailler. Par exemple --cpu pour le processeur, --memory pour la mémoire, etc. La liste est dans le manuel de la commande.

Pour avoir des informations sur le CPU :

# hwinfo --cpu

Pour avoir des information sur la mémoire :

# hwinfo --memory

La liste des sondes est : all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu, disk, dsl, dvb, fingerprint, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn, joystick, keyboard, memory, modem, monitor, mouse, netcard, network, partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp, sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, zip

Commande dmidecode

L’outil dmidecode n’interroge pas les composants matériels mais lit et interprète la table DMI (Desktop Management Interface) de l’ordinateur, parfois aussi appelée SMBIOS (System Management BIOS). Il fournit non seulement des informations sur l’état matériel actuel de la machine, mais aussi sur ses extensions possibles (par exemple la vitesse maximale du processeur, la quantité de mémoire possible, etc.). Contrairement à hwinfo qui interroge un composant, par exemple le CPU, dmidecode lit les informations telles que détectées par le BIOS et la carte mère. C’est rapide, parfois plus précis que hwinfo, mais parfois faux donc à vérifier. La sortie étant bien plus longue qu’avec hwinfo, précisez quelles informations vous souhaitez avec -s ou -t (consultez le manuel) :

# dmidecode -t processor
# dmidecode 2.9

Information sur la mémoire.

dmidecode -t memory

Information sur le système.

dmidecode -t system

Information sur le BIOS.

dmidecode -t bios

État de la mémoire

Commande free

La commande free vous fournit des informations sur la mémoire physique (RAM) de votre ordinateur ainsi que sur l’occupation du swap. L’unité par défaut est le Ko (identique avec le paramètre -k), mais elle peut être modifiée en Mo (-m) voire en Go (-g).

free -kh
total utilisé libre partagé tamp/cache disponible
Mem: 3,6G 415M 141M 31M 3,1G 2,9G
Swap : 4,0G 2,7M 4,0G

Attention cependant à bien interpréter les colonnes. Dans le résultat précédent, disposant de 2,9 Go de mémoire, le système indique que seulement 141 Mo sont libres ! C’est que le système Linux a tendance à se réserver tout l’espace disponible sous forme de buffers (tampons) et de cache. Le contenu du cache est volatile, donc Linux peut libérer en très grande partie cet espace pour l’allouer aux programmes et aux données. C’est aussi le cas pour les buffers. Lorsque la commande précédente a été saisie, l’ordinateur était en train de copier une piste de DVD sur le disque dur. Quelques instants après la fin de la copie, le résultat était le suivant : les buffers ont été libérés, une partie est reparti en cache lors du début de l’encodage de la piste en DivX. Donc lors de vos calculs de mémoire libre, prenez en compte le fait que les caches peuvent être libérés. Le système dispose d’environ 3,2 Go d’espace mémoire (en additionnant Free + cached) que Linux peut attribuer aux programmes.

Mémoire réservée

Cette mémoire est réservée au noyau et ne peut pas être utilisée par d’autres programmes. Elle est utile pour les traitements du noyau, son chargement, l’initrd. Voyez le résultat de la commande suivante (volontairement tronqué) :

# dmesg | grep -i memory
…Memory: 2057756k/2096640k available (2053k kernel code, 38496k
reserved, 1017k data, 316k init)
Freeing initrd memory: 4411k freed
Freeing unused kernel memory: 316k freed

meminfo

Le système de fichiers virtuel /proc contient des informations détaillées sur la mémoire au travers du pseudofichier /proc/meminfo. Il semble bien difficile de trouver quelque chose de plus complet. La sortie suivante est un résultat sur un système Linux en 64 bits. En 32 bits, deux lignes supplémentaires (highmem et lowmem) indiquent les zones réservées aux données et au noyau. Les premières lignes et les lignes concernant le swap sont identiques au résultat de la commande free.

# cat /proc/meminfo

Commande du

La commande du (disk usage) fournit des informations sur l’espace occupé par une arborescence (un répertoire et tout son contenu). Si rien n’est précisé, c’est le répertoire courant qui est utilisé. Les paramètres -k (Ko) et -m (Mo) déterminent l’unité. La taille est fournie pour chaque élément (voire arrondie). La taille totale de l’arborescence est sur la dernière ligne.

# du -m LIVRE_ALGO
1 LIVRE_ALGO/BACKUP/chapitre7/code_java
2 LIVRE_ALGO/BACKUP/chapitre7
1 LIVRE_ALGO/BACKUP/Introduction
1 LIVRE_ALGO/BACKUP/chapitre4/illustrations

42 LIVRE_ALGO/

Pour n’avoir que le total et pas tous les détails, utilisez le -s.

# du -ks LIVRE_ALGO
42696 LIVRE_ALGO/

Notez que du n’est pas limitée à un seul système de fichiers et continue à calculer si elle tombe sur un point de montage dans l’arborescence qu’elle analyse. Si vous voulez limiter le calcul au système de fichiers courant sans rentrer dans les points de montage présents dans l’arborescence, précisez -x.

# du -msx /
1064 /

Consulter les traces du système

dmesg

La commande dmesg permet de récupérer les messages du noyau émis au démarrage de la machine, puis les messages émis par la suite. Le tampon de dmesg est circulaire. Au bout d’un certain nombre de messages, les premiers disparaissent. Cependant ces traces ne sont pas perdues car le service syslogd écrit ces éléments dans des fichiers. Cette commande est généralement la première lancée par un administrateur, ingénieur ou exploitant du système Linux pour vérifier la présence d’éventuelles erreurs. En effet, après le boot les messages continuent d’arriver, notamment lors de la connexion à chaud de périphériques, au chargement de certains modules, lorsque des crashs se produisent, lors d’une corruption du système de fichiers, etc. L’exemple suivant est volontairement tronqué à une cinquantaine de lignes, la sortie originale en contenant plus de 500. Le début représente le tout début de l’exécution du noyau (informations fournies par le BIOS). Le milieu montre la détection du premier disque dur et de ses partitions. La fin montre ce qu’il se passe à l’insertion d’une clé USB, après le boot au cours d’une utilisation normale, et à sa déconnexion.

# dmesg
> Partager <