Raspberry-Pi: détection du matériel et des ressources



Cette article reprend une série de commandes permettant de détecter les différents éléments matériels, pilotes, les systèmes de fichiers, mémoire, etc présent sur le Raspberry-Pi.

Il s'agit de commandes standards Linux, vous pourrez donc également les utiliser sur Debian, Linux Mint, Ubuntu, etc.

lsusb - liste des périphériques USB
Affiche la liste des bus USB et périphériques qui y sont connectés. Il est possible d'appeler la commande avec l'option -v (verbose) qui affiche des informations détaillées pour chaque port USB.

Dans l'exemple suivant, vous pourrez y notez la présence:
  • de la connexion Ethernet via USB (SMSC95/9514 Fast Ethernet Adapter) propre au Raspberry-Pi
  • du convertisseur USB-Série branché sur un port USB du Raspberry-Pi.

~ $ lsusb
Bus 001 Device 004: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lscpu - information sur le processeur
lscpu retourne des informations sur le processeur (cpu) et les unités de traitement de la machine.
~ $ lscpu
Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
Model name:            ARMv7 Processor rev 4 (v7l)
CPU max MHz:           1200.0000
CPU min MHz:           600.0000

lshw - lister le matériel
Cet utilitaire retourne des informations (détaillées ou résumée) a propos des différents éléments matériels présent sur la carte (cpu, mémoire, contrôleur usb, adaptateur réseau, interface Wlan, etc). lshw utilise principalement les informations que disponibles dans /proc. L'utilitaire doit être installé depuis les dépôts avant son utilisation
sudo apt-get install lshw

Il est préférable de lancer lshw en utilisante sudo
~ $ sudo lshw -short
H/W path  Device  Class      Description
========================================
                  system     Raspberry Pi 3 Model B Rev 1.2
/0                bus        Motherboard
/0/0              processor  cpu
/0/1              processor  cpu
/0/2              processor  cpu
/0/3              processor  cpu
/0/4              memory     859MiB System memory
/1        usb1    bus        DWC OTG Controller
/1/1              bus        USB hub
/1/1/1            generic    SMSC9512/9514 Fast Ethernet Adapter
/1/1/2            generic    CP2104 USB to UART Bridge Controller
/2        wlan0   network    Wireless interface
/3        eth0    network    Ethernet interface

Il est beaucoup plus intéressant lorsqu'elle affiche des détails. Les périphériques sont affichés sous forme d'arbre et inclus de nombreuses autres informations parfois très utile comme le pilote utilisé (chercher après la mention "driver"), l'adresse MAC, etc
 
~ $ sudo lshw 
killer-pi                  
    description: Computer
    product: Raspberry Pi 3 Model B Rev 1.2
    serial: 000000007483a699
    width: 32 bits
  *-core
       description: Motherboard
       physical id: 0
       capabilities: brcm_bcm2837 brcm_bcm2836
     *-cpu:0
          description: CPU
          product: cpu
          physical id: 0
          bus info: cpu@0
          size: 1200MHz
          capacity: 1200MHz
          capabilities: cpufreq
     *-cpu:1 DISABLED
          description: CPU
          product: cpu
          physical id: 1
          bus info: cpu@1
          ...

hwinfo - Information matériel
"Hardware Info" (hwinfo) est une utilitaire alternatif lshw. Ce dernier est plutôt utilisé pour produire une information de type "rapport prêt à l'impression".

Il sera plus confortable pour se faire une idée générale du matériel disponible, lshw sera par contre plus indiqué lors d'une inspection détaillée. L'utilitaire doit être installé depuis les dépôts avant son utilisation

sudo apt-get install hwinfo


Vous pouvez constater dans l'exemple suivant qu'un périphérique USB-Série sur /dev/ttyUSB0

~ $ sudo hwinfo --short
cpu:                                                            
                       CPU
                       CPU
                       CPU
                       CPU
network:
  eth0                 Standard Microsystems Ethernet controller
network interface:
  eth0                 Ethernet network interface
  lo                   Loopback network interface
  wlan0                WLAN network interface
disk:
  /dev/ram11           Disk
  /dev/ram2            Disk
  /dev/ram0            Disk
  /dev/ram9            Disk
  /dev/ram7            Disk
  /dev/ram14           Disk
  /dev/ram5            Disk
  /dev/ram12           Disk
  /dev/ram3            Disk
  /dev/ram10           Disk
  /dev/ram1            Disk
  /dev/ram8            Disk
  /dev/ram15           Disk
  /dev/ram6            Disk
  /dev/mmcblk0         Disk
  /dev/ram13           Disk
  /dev/ram4            Disk
partition:
  /dev/mmcblk0p1       Partition
  /dev/mmcblk0p2       Partition
hub:
                       Linux 4.9.35-v7+ dwc_otg_hcd DWC OTG Controller
                       Standard Microsystems Hub
memory:
                       Main Memory
unknown:
  /dev/ttyUSB0         Cygnal Integrated CP2104 USB to UART Bridge Controller


lsblk - Information sur le périphérique bloc
Les périphériques bloc (block devices) "Hardware Info" son des périphériques particuliers permettant de stocker d'échanger des données avec des périphériques de stockage. Ces échanges ont lieu en utilisant de blocs de donnée... d'où l'appellation "bloc device".
La carte SD (dit mmc) utilisée pour stocker les informations du système d'exploitation utilise forcément un ou plusieurs périphériques de type block.
~ $ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 14.5G  0 disk 
├─mmcblk0p2 179:2    0 14.5G  0 part /
└─mmcblk0p1 179:1    0 41.7M  0 part /boot

L'exemple ci-dessus reprend les deux partitions de la carte:
  • /boot : partition de type DOS utilisé pour le démarrage.
  • / : partition principale du système de fichier Linux.
df - espace disque disponible
L'utilitaire "df" (disk free) affiche l'espace disponible sur les différentes partitions. Cela concerne les partitions de données comme (/ et /boot) mais aussi d'autres partitions maintenue en mémoire et utilisée par le système d'exploitation pour son propre fonctionnement interne.

L'intérêt de commande df réside aussi dans l'affichage du point de montage (colonne "Mounted on") permettant d'accéder au fichiers de la partition.

Ainsi, "/" reste la racine du système de fichier tandis que la partition de démarrage sera, elle, accessible via le répertoire "/boot".
Si vous montez un lecteur Réseau sous Linux, ce dernier sera également dans la liste retournée par "df"

~ $ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root       14877752 4066932  10145584  29% /
devtmpfs          435668       0    435668   0% /dev
tmpfs             440276       0    440276   0% /dev/shm
tmpfs             440276    5944    434332   2% /run
tmpfs               5120       4      5116   1% /run/lock
tmpfs             440276       0    440276   0% /sys/fs/cgroup
/dev/mmcblk0p1     42030   21418     20612  51% /boot
tmpfs              88056       0     88056   0% /run/user/1000
//nas.local/pics  1917971544 129748244 1788104516   7% /mnt/images

free - mémoire disponible
Bien que disposant de 1 GigaOctet de mémoire, cette quantité de RAM est à la fois énorme pour un système embarqué tout en étant relativement limité pour un ordinateur (interface graphique).

Suivant le type d'application fonctionnant sur le Pi Raspberry-Pi (nano PC, arrosage jardin, disque réseau, media center), cette quantité de mémoire paraîtra:
  • soit comme une ressource en quantité limitée qu'il faudra surveiller,
  • soit comme une vaste ressource dont il ne faut pas vraiment se soucier.

~ $ free
             total       used       free     shared    buffers     cached
Mem:        880552     212016     668536       5952      23960     144936
-/+ buffers/cache:      43120     837432
Swap:       102396          0     102396


mount - les points de montage
la commande mount est une commande permettant de créer un point de montage. Le point de montage est le répertoire dans le système de fichier offrant accès à un système de fichier stocké sur un autre périphérique (disque USB, disque flash, Pi Desktop mSata2), une autre partition (comme /boot), voir un lecteur réseau.

Voyez notre article monter un lecteur réseau sous Linux pour plus d'information sur le sujet.

Note:
Le résultat de la commande mount -l est souvent très détaillée pour une utilisation générale. La commande df sera plus abordable pour une vue d'ensemble.
La commande mount -l est souvent utilisé avec grep pour filtrer le contenu affiché (ex: mount -l | grep /boot ).

~ $ mount -l
/dev/mmcblk0p2 on / type ext4 (rw,noatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=435668k,nr_inodes=108917,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
tmpfs on /etc/machine-id type tmpfs (ro,mode=755)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro) [boot]
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=88056k,mode=700,uid=1000,gid=1000)