Grimoire-Command.es

GNU+Linux command memo

Memo_10 : Explorer le matériel

D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Licence GPL

1. uname : liste les caractéristiques de la plateforme

$ uname

Linux

$ uname -a (1)
1 -a : afficher tout.

Donne :

Linux arkana 4.16.0-0.bpo.1-amd64 #1 SMP Debian 4.16.5-1~bpo9+1 (2018-05-06) x86_64 GNU/Linux

Des informations spécifiques peuvent être isolées et affichées seules en précisant certaines options, comme -r pour la version courante du noyau. Pratique pour certaines compilations.

2. /etc/issue : connaître la version du système d’exploitation

$ cat /etc/issue

Debian GNU/Linux 9 \n \l

Affiche le nom d’une distribution GNU+Linux ainsi que sa version.

Concernant Debian, une version plus précise peut être affichée avec :

$ cat /etc/debian_version

9.4

Enfin la commande lsb_release permet d’obtenir d’avantage d’informations concernant sa distribution GNU+Linux :

$ lsb_release -a (1)
1 -a : pour afficher toutes les informations disponibles. Chaque information est sinon disponible indépendamment, via une option spécifique à découvrir dans le man lsb_release.

Donne :

No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.4 (stretch)
Release:	9.4
Codename:	stretch

3. /proc/cpuinfo : caractéristiques du microprocesseur

Il est également possible d’installer le paquet util-linux et d’utiliser la commande lscpu.

$ lscpu
Architecture :        x86_64
Mode(s) opératoire(s) des processeurs : 32-bit, 64-bit
Boutisme :            Little Endian
Processeur(s) :       4
Liste de processeur(s) en ligne : 0-3
Thread(s) par cœur : 2
Cœur(s) par socket : 2
Socket(s) :           1
Nœud(s) NUMA :       1
Identifiant constructeur : GenuineIntel
Famille de processeur : 6
Modèle :             78
Nom de modèle :      Intel(R) Core(TM) m7-6Y75 CPU @ 1.20GHz
Révision :           3
Vitesse du processeur en MHz : 2000.000
Vitesse maximale du processeur en MHz : 3100,0000
Vitesse minimale du processeur en MHz : 400,0000
BogoMIPS :            3024.00
Virtualisation :      VT-x
Cache L1d :           32K
Cache L1i :           32K
Cache L2 :            256K
Cache L3 :            4096K
Nœud NUMA 0 de processeur(s) : 0-3
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp

4. free : mémoire vive installée, utilisée…

Par défaut les quantités affichées sont exactes, en octet. Pour avoir les quantités exprimées en méga octets, il faut ajouter l’argument -m à la liste de commande (ou -k pour des kilo octets).

$ free -mt (1)
1 -t pour afficher le total : RAM + SWAP

Donne :

              total        used        free      shared  buff/cache   available
Mem:           7847        2048        3391         295        2407        5566
Swap:          3999           0        3999
Total:        11847        2048        7391

Enfin, la forme la plus simple : -h ; pour des tailles humanisées, ajustée suivant l’échelle affichant les valeurs les plus courtes (en giga octets, méga octets, kilo octets).

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           7,7G        2,0G        3,3G        295M        2,4G        5,5G
Swap:          3,9G          0B        3,9G

5. xrandr : affiche les résolutions d’écran

La commande xrandr permet de lister les résolutions supportées par les différents moniteurs branchés au système. En prenant le temps de lire le man et d’ajouter une bonne flopée d’arguments, il est également possible de configurer la position des moniteurs les uns par rapport aux autres ainsi que leurs résolutions respectives. Il est également possible d’utiliser la commande arandr pour configurer la chose à l’aide d’une interface graphique qui produit ensuite les commandes xrandr correspondantes.

$ xrandr (1)
1 La commande peut être lancée par un utilisateur normal

Donne :

Screen 0: minimum 8 x 8, current 3200 x 1800, maximum 32767 x 32767
eDP1 connected 3200x1800+0+0 (normal left inverted right x axis y axis) 290mm x 170mm
   3200x1800     60.00*+  48.01
   […]
HDMI1 disconnected (normal left inverted right x axis y axis)

Ici on apprend donc que l’écran peut afficher 3200 pixels par 1800 sur 290mm x 170mm. Une telle densité de pixels est nommée « HiDPI » (pour « beaucoup de points par centimètres carrés »). La plupart des environnements de bureau et des applications sont désormais capable d’adapter leur affichage à de telles densités de pixels.

Pour la liste des astuces, application par application, voir la page dédiée à la machine servant d’exemple dans cet article que j’ai créée sur le Wiki Debian : UX305FA.

6. lspci : afficher les périphériques PCI et AGP

$ lspci
00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 08)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 515 (rev 07)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 08)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 9d13 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device 9d46 (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 Network controller: Intel Corporation Wireless 7265 (rev 59)

7. lsusb : liste les concentrateurs et périphériques USB

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2a Intel Corp.
Bus 001 Device 002: ID 0bda:57cb Realtek Semiconductor Corp.
Bus 001 Device 030: ID 21b4:0082
Bus 001 Device 031: ID 2ae5:6764
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Le paquet usbutils doit être installé.

8. lsdev : liste les périphériques

Le noyau Linux expose un grand nombre de périphériques (parfois virtuels) et d’interruptions sous forme de fichier. Ainsi lire ou écrire dans une clé USB revient à lire ou écrire dans un fichier. Capturer une image via une webcam revient également à lire un fichier… Ces fichiers sont accessibles dans /dev/.

$ ls /dev
crw-------  1 root root     10,    58 mai   22 18:20 acpi_thermal_rel
drwxr-xr-x  2 root root            60 mai   22 18:20 arkana-vg
crw-r--r--  1 root root     10,   235 mai   22 18:20 autofs
drwxr-xr-x  2 root root           160 juin   7 21:38 block
drwxr-xr-x  2 root root            60 juin   7 21:38 bsg
crw-------  1 root root     10,   234 mai   22 18:20 btrfs-control
drwxr-xr-x  3 root root            60 mai   22 18:20 bus
drwxr-xr-x  2 root root          3,4K juin  11 09:10 char
crw-------  1 root root      5,     1 mai   22 18:20 console
lrwxrwxrwx  1 root root            11 mai   22 18:20 core -> /proc/kcore
drwxr-xr-x  6 root root           140 juin   9 19:43 cpu
crw-------  1 root root     10,    62 mai   22 18:20 cpu_dma_latency
crw-------  1 root root     10,   203 mai   22 18:20 cuse
drwxr-xr-x  6 root root           120 mai   31 22:20 disk
brw-rw----  1 root disk    254,     0 mai   22 18:20 dm-0
brw-rw----  1 root disk    254,     1 mai   22 18:20 dm-1
$ ls /dev | wc -l

163

La commande lsdev synthétise un peu la situation. Le paquet procinfo doit être installé.

$ lsdev
Device            DMA   IRQ  I/O Ports
------------------------------------------------
0000:00:02.0                   0000-0000
0000:00:17.0                   0000-0000   0000-0000   0000-0000
0000:00:1f.4                   0000-0000
ACPI                             0000-0000     0000-0000     0000-0000     0000-0000     0000-0000
acpi                      9
aerdrv, PCIe PME        122
ahci                             0000-0000     0000-0000     0000-0000
ahci[0000:00:17.0]        124
cascade             4
dma                            0000-0000
dma1                           0000-0000
dma2                           0000-0000
dmar0                   120
dmar1                   121
EC                               0000-0000     0000-0000
ELAN1000:00             109
fpu                            0000-0000
i2c_designware.0         16
i2c_designware.1         17
i801_smbus                       0000-0000
i8042                     1
i915                    126
iTCO_wdt                       0000-0000     0000-0000     0000-0000       0000-0000
iwlwifi                 128
keyboard                       0000-0000   0000-0000
mei_me                  125
PCI                          0000-0000 0000-0000 0000-0000
pic1                           0000-0000
pic2                           0000-0000
pnp                            0000-0000   0000-0000   0000-0000   0000-0000     0000-0000   0000-0000   0000-0000     0000-0000       0000-0000
PNP0C09:00                     0000-0000   0000-0000
rtc0                      8    0000-0000
snd_hda_intel:card0        127
timer                     0
timer0                         0000-0000
timer1                         0000-0000
xhci_hcd                123

9. fdisk -l : liste la table des partitions

$ fdisk -l
Disque /dev/sda : 477 GiB, 512110190592 octets, 1000215216 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : gpt
Identifiant de disque : B0D99CC0-XXXX-490C-XXXX-1CB71A7CBBCA
\n
Périphérique   Début        Fin  Secteurs Taille Type
/dev/sda1       2048    1050623   1048576   512M Système EFI
/dev/sda2    1050624    1550335    499712   244M Système de fichiers Linux
/dev/sda3    1550336 1000214527 998664192 476,2G Système de fichiers Linux
\n
Disque /dev/mapper/sda3_crypt : 476,2 GiB, 511313969152 octets, 998660096 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
\n
Disque /dev/mapper/arkana--vg-root : 476,2 GiB, 511310823424 octets, 998653952 secteurs

10. blkid : liste les UUID des différentes partitions

$ /sbin/blkid
/dev/mapper/sda3_crypt: UUID="4CWReB-XXXX-24lo-W8Xa-XXXX-cLKh-XXXXXX" TYPE="LVM2_member"
/dev/mapper/arkana--vg-root: UUID="d495776a-XXXX-436f-XXXX-8ee1fdf0d825" TYPE="ext4"

11. lsblk : renseignements sur les périphériques blocs

$ lsblk
NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0   477G  0 disk
├─sda1                  8:1    0   512M  0 part  /boot/efi
├─sda2                  8:2    0   244M  0 part  /boot
└─sda3                  8:3    0 476,2G  0 part
  └─sda3_crypt        253:0    0 476,2G  0 crypt
      └─arkana--vg-root 253:1    0 476,2G  0 lvm   /

12. dmidecode : informations sur le matériel, carte mère, BIOS…

Le paquet éponyme doit être installé et il est préférable de lancer la commande en tant qu’utilisateur root.

$ dmidecode
System Information
	Manufacturer: ASUSTeK COMPUTER INC.
	Product Name: UX305CA
	Version: 1.0
	Serial Number: FXNXCX0X8X4X5XA
	UUID: 58B66962-XXXX-3448-XXXX-07F60D8386B6
	Wake-up Type: Power Switch
	SKU Number: ASUS-NotebookSKU
	Family: UX
[…]

Affichage du nombre de lignes de la sortie :

$ dmidecode | wc -l

478

Beaucoup d’informations défilent à l’écran, en particulier à propos du BIOS et de la carte mère.

Ces numéros de série sont sensés être unique. À l’instar de l’adresse MAC d’une carte réseau.

# dmidecode -s system-serial-number

12.1. Connaître la date de fabrication de son ordinateur

Il n’y a pas de moyen fiable, mais il est possible de trouver des dates dans la sortie de dmidecode. On peut ainsi généralement trouver la date de la version du BIOS (qui peut avoir été mis à jour), ou encore la date de fabrication de la batterie de l’ordinateur.

$ dmidecode | grep -C 2 Date

Ici on filtre la sortie de la commande dmidecode avec la commande grep qui ne gardera que les lignes comportant le motif "Date", plus 2 lignes de contexte (option -C).

Vendor: American Megatrends Inc.
Version: UX305CA.201
Release Date: 09/11/2015
Address: 0xF0000
Runtime Size: 64 kB

13. lshw : information sur le matériel, les périphériques

Le paquet éponyme doit être installé. Il est préférable de lancer la commande en tant qu’utilisateur root.

$ lshw
*-memory
     description: Mémoire Système
     identifiant matériel: 12
     emplacement: Carte mère
     taille: 8GiB
   *-bank:0
        description: SODIMM LPDDR3 Synchrone 1867 MHz (0,5 ns)
        fabriquant: Elpida
        identifiant matériel: 0
        numéro de série: 00000000
        emplacement: ChannelA-DIMM0
        taille: 4GiB
        bits: 64 bits
        horloge: 1867MHz (0.5ns)

Au passage, on constate ici, que les 8GO de mémoire RAM de la machine sont disposés en deux canaux de 4GO chacun, ce qui correspond à une configuration en dual-channel.

Affichage du nombre de lignes listées :

$ lshw | wc -l

382

14. Mesure de la vitesse de lecture de la RAM

# hdparm -T /dev/sda

Example output:

/dev/sda:
Timing cached reads: 14480 MB in 2.00 seconds = 7257.39 MB/sec

15. lstopo : résumé de la topologie du système

Nécessite le paquet hwloc.

$ lstopo
Machine (7848MB)
  Package L#0 + L3 L#0 (4096KB)
    L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
      PU L#0 (P#0)
      PU L#1 (P#2)
    L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1
      PU L#2 (P#1)
      PU L#3 (P#3)
  Misc(MemoryModule)
  Misc(MemoryModule)
  HostBridge L#0
    PCI 8086:191e
      GPU L#0 "renderD128"
      GPU L#1 "card0"
      GPU L#2 "controlD64"
    PCI 8086:9d03
      Block(Disk) L#3 "sda"
    PCIBridge
      PCI 8086:095a
        Net L#4 "wlan0"

Mais aussi en version dessinée dans la console :

$ lstopo -.txt
┌─────────────────────────────────────────────────────────────────────────────┐
│ Machine (7408MB)                                                            │
│                                                                             │
│ ┌────────────────────────────────┐            ┌───────────────────────────┐ │
│ │ Package P#0                    │  ├┤╶─┬─────┤ PCI 8086:191e             │ │
│ │                                │      │     │                           │ │
│ │ ┌────────────────────────────┐ │      │     │ ┌────────────┐  ┌───────┐ │ │
│ │ │ L3 (4096KB)                │ │      │     │ │ renderD128 │  │ card0 │ │ │
│ │ └────────────────────────────┘ │      │     │ └────────────┘  └───────┘ │ │
│ │                                │      │     │                           │ │
│ │ ┌────────────┐  ┌────────────┐ │      │     │ ┌────────────┐            │ │
│ │ │ L2 (256KB) │  │ L2 (256KB) │ │      │     │ │ controlD64 │            │ │
│ │ └────────────┘  └────────────┘ │      │     │ └────────────┘            │ │
│ │                                │      │     └───────────────────────────┘ │
│ │ ┌────────────┐  ┌────────────┐ │      │                                   │
│ │ │ L1d (32KB) │  │ L1d (32KB) │ │      │     ┌───────────────┐             │
│ │ └────────────┘  └────────────┘ │      ├─────┤ PCI 8086:9d03 │             │
│ │                                │      │     │               │             │
│ │ ┌────────────┐  ┌────────────┐ │      │     │ ┌─────┐       │             │
│ │ │ L1i (32KB) │  │ L1i (32KB) │ │      │     │ │ sda │       │             │
│ │ └────────────┘  └────────────┘ │      │     │ └─────┘       │             │
│ │                                │      │     └───────────────┘             │
│ │ ┌────────────┐  ┌────────────┐ │      │                                   │
│ │ │ Core P#0   │  │ Core P#1   │ │      │               ┌───────────────┐   │
│ │ │            │  │            │ │      └─────┼┤╶───────┤ PCI 8086:095a │   │
│ │ │ ┌────────┐ │  │ ┌────────┐ │ │                      │               │   │
│ │ │ │ PU P#0 │ │  │ │ PU P#1 │ │ │                      │ ┌───────┐     │   │
│ │ │ └────────┘ │  │ └────────┘ │ │                      │ │ wlan0 │     │   │
│ │ │ ┌────────┐ │  │ ┌────────┐ │ │                      │ └───────┘     │   │
│ │ │ │ PU P#2 │ │  │ │ PU P#3 │ │ │                      └───────────────┘   │
│ │ │ └────────┘ │  │ └────────┘ │ │                                          │
│ │ └────────────┘  └────────────┘ │                                          │
│ └────────────────────────────────┘                                          │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ Host: arkana                                                                │
│                                                                             │
│ Indexes: physical                                                           │
│                                                                             │
│ Date: mar. 12 juin 2018 11:15:13 CEST                                       │
└─────────────────────────────────────────────────────────────────────────────┘

16. procinfo : statistiques globales d’utilisation des ressources

La commande procinfo rassemble un bouquet d’informations sur l’état de la machine en provenance de /proc. Elle liste notamment la mémoire libre, la date démarrage, la charge système, ventilée par mode d’exécution, les utilisations d’interruptions, de périphériques de stockage et des interfaces réseau.

$ procinfo
Memory:        Total        Used        Free     Buffers
RAM:         7585492     7371212      214280      348424
Swap:         511996      399136      112860
\n
Bootup: Tue May 22 18:20:57 2018   Load average: 0.14 0.17 0.35 1/561 24268
\n
user  :        3d 06:14:05.67   9.2%  page in :        115091178
nice  :     2w 2d 19:23:01.41  47.3%  page out:        112190902
system:           19:36:37.61   2.3%  page act:        215584374
IOwait:           00:36:09.46   0.1%  page dea:         12848729
hw irq:           00:00:00.00   0.0%  page flt:       1270234042
sw irq:           00:52:41.84   0.1%  swap in :            87085
idle  :        2w 13:15:46.37  41.0%  swap out:           249363
uptime:     2w 5d 15:59:49.84         context :       2424849332
\n
irq   0:          9  2-edge timer        irq 121:          0  1-edge dmar1
irq   1:     700997  1-edge i8042        irq 122:          0  458752-edge aerdr
irq   8:          1  8-edge rtc0         irq 123:   17947417  327680-edge xhci_
irq   9:      13941  9-fasteoi acpi      irq 124:   12707523  376832-edge ahci[
irq  16:  563807702  16-fasteoi i801_s   irq 125:         36  360448-edge mei_m
irq  17:          0  17-fasteoi idma64   irq 126:   61131741  32768-edge i915
irq 109:   18143470  109-fasteoi ELAN1   irq 127:        444  514048-edge snd_h
irq 120:          0  0-edge dmar0        irq 128:   42042078  524288-edge iwlwi
\n
sda          3445959r         9150991w   dm-1         3795079r        13257612w
dm-0         3795200r        13257612w
\n
lo          TX 6.82GiB       RX 6.82GiB       wlan0       TX 30.22GiB      RX 16.42GiB

Le paquet procinfo doit être installé.

17. hciconfig : configuration, et version, des périphériques Bluetooth

Comme vu ici : Bluetooth version.

$ hciconfig -a (1)
hci0:	Type: Primary  Bus: USB
	BD Address: XX:XX:XX:XX:XX:XX  ACL MTU: 1021:5  SCO MTU: 96:6
	UP RUNNING PSCAN
	RX bytes:2331 acl:0 sco:0 events:255 errors:0
	TX bytes:42004 acl:0 sco:0 commands:254 errors:0
	Features: 0xff 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
	Link policy: RSWITCH HOLD SNIFF
	Link mode: SLAVE ACCEPT
	Name: 'machine_host_name'
	Class: 0x10010c
	Service Classes: Object Transfer
	Device Class: Computer, Laptop
	HCI Version: 4.2 (0x8)  Revision: 0x1000
	LMP Version: 4.2 (0x8)  Subversion: 0x1000
	Manufacturer: Intel Corp. (2)
1 Activate Bluetooth to get version information