Le système d'exploitation GNU-Linux/Les périphériques /dev



Les fichiers spéciaux

modifier

Nous allons nous intéresser plus particulièrement au répertoire /dev :

Ce dossier contient tous les périphériques matériels, par exemple : un lecteur CD-ROM, une carte son, une carte réseau, etc.

Il contient également les pseudo-périphériques. Quelques exemples :

  • /dev/zero génére des zéros
  • /dev/random génère de l'aléatoire
  • /dev/null constitue un trou noir à octets, et notamment utilisé pour se débarrasser des fichiers et des affichages
  • /dev/loop0 permet de créer de faux périphériques de type block (stockage) à partir de fichiers créés avec la commande dd

Si on liste le contenu de /dev

# ls -l /dev | more

On s'aperçoit que certains périphériques sont de type c (de l'anglais character) dans ce cas ils communiquent octet par octet. Ex : un port série.

Alors que d'autres sont de types b (blocks) ils communiquent par blocs de données (ex: un disque dur).

Par ailleurs le noyau identifie chaque périphérique au moyen de deux numéros, le majeur (en vert) et le mineur (en rouge), exemple :

# ls -l /dev/sda*
brw-rw---- 1 root disk 8, 0 2007-09-22 18:08 /dev/sda
brw-rw---- 1 root disk 8, 1 2007-09-22 18:08 /dev/sda1
brw-rw---- 1 root disk 8, 2 2007-09-22 18:08 /dev/sda2
brw-rw---- 1 root disk 8, 3 2007-09-22 18:08 /dev/sda3
brw-rw---- 1 root disk 8, 4 2007-09-22 18:08 /dev/sda4

Les partitions sda1 à sda4 ont le même majeur. Le majeur correspond au premier disque dur SCSI ou SATA.

Le noyau identifie ensuite chaque partition grâce au numéro mineur.

Les majeurs et les mineurs sont définis dans la documentation accompagnant le noyau Linux dans le fichier /usr/src/linux/Documentation/devices.txt ... et oui! comme vous pouvez vous en douter, le noyau Linux est livré avec une documentation très fournie disponible dans le répertoire Documentation/ livré avec le noyau, voir chapitre Le noyau Linux et les modules.

Extrait de /usr/src/linux/Documentation/devices.txt :

 ...
 8 block     SCSI disk devices (0-15)
               0 = /dev/sda            First SCSI disk whole disk
              16 = /dev/sdb            Second SCSI disk whole disk
              32 = /dev/sdc            Third SCSI disk whole disk
              ...
             240 = /dev/sdp            Sixteenth SCSI disk whole disk
              ...
             Partitions are handled in the same way as for IDE
             disks (see major number 3) except that the limit on
             partitions is 15.
 ...

La commande mknod sert à créer de nouveaux périphériques :

# mknod /dev/bidon b 42 0

On peut également directement lui affecter les droits d'accès :

# mknod -m 660 /dev/bidon b 42 0

dmidecode

modifier

Cette commande affiche les informations sur les périphériques hardware. Par exemple pour déterminer la version et puissance de la RAM :

sudo dmidecode --type 17

 Getting SMBIOS data from sysfs.
 SMBIOS 3.0 present.

 Handle 0x0019, DMI type 17, 40 bytes
 Memory Device
        Array Handle: 0x0018
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 4096 MB
        Form Factor: SODIMM
        Set: None
        Locator: ChannelA-DIMM0
        Bank Locator: BANK 0
        Type: DDR3
        Type Detail: Synchronous
        Speed: 1600 MHz
        Manufacturer: 0215
        Serial Number: 00000000
        Asset Tag: 9876543210
        Part Number: CMSO8GX3M2C1600C11
        Rank: 2
        Configured Clock Speed: 1600 MHz
        Minimum Voltage: Unknown
        Maximum Voltage: Unknown
        Configured Voltage: 1.35 V