Le système d'exploitation GNU-Linux/Les périphériques /dev
Les fichiers spéciaux [modifier]
Nous allons nous interesser plus particulièrement au répertoire /dev :
Ce dossier contient tous les périphériques matériels, par exemple:un lecteur cdrom,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 (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éfinit 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