connaître un fichier spécial de périphérique majeur et mineur sous linux
Question
Tous les fichiers de / dev
sont des fichiers spéciaux ... ils représentent des périphériques de l'ordinateur.
Ils ont été créés avec l'appel système mknod
. Ma question est la suivante: comment puis-je connaître le mineur et
les principaux numéros qui ont été utilisés pour créer ce fichier spécial?
La solution
Cette liste est appelée Liste des périphériques LANANA Linux . Elle est administrée par Alan Cox.
Vous pouvez trouver la dernière version en ligne ( lien direct ), ou dans la source Linux. Son nom de fichier dans l'arborescence du noyau est Documentation / devices.txt
.
Pour voir les nombres majeurs et mineurs qui ont créé un nœud dans / dev
(ou n'importe quel nœud de périphérique, utilisez simplement ls
avec - l
option:
22:26 jsmith@undertow% ls -l /dev/xvd?
brw-rw---- 1 root disk 202, 0 Nov 1 20:31 /dev/xvda
brw-rw---- 1 root disk 202, 16 Nov 1 20:31 /dev/xvdb
brw-rw---- 1 root disk 202, 32 Nov 1 20:31 /dev/xvdc
Dans cet exemple, 202
est le numéro majeur des trois périphériques et 0
, 16
et 32
sont des mineurs. Le b
à gauche indique que le nœud est un périphérique en mode bloc. L'alternative est c
, un périphérique de caractère:
crw-rw-rw- 1 root tty 5, 0 Nov 22 00:29 /dev/tty
Autres conseils
$ ls -l /dev/fd0 /dev/null brw-rw---- 1 root floppy 2, 0 Nov 22 19:48 /dev/fd0 crw-rw-rw- 1 root root 1, 3 Nov 22 19:48 /dev/null $ stat -c '%n: %F, major %t minor %T' /dev/fd0 /dev/null /dev/fd0: block special file, major 2 minor 0 /dev/null: character special file, major 1 minor 3
La plupart des numéros de périphériques sont fixes (par exemple, / dev / null
sera toujours un périphérique de caractères 1: 3
), mais sous Linux, certains sont alloués de manière dynamique.
$ cat /proc/devices Character devices: ... 10 misc ... Block devices: ... 253 mdp 254 device-mapper $ cat /proc/misc ... 57 device-mapper ...
Par exemple, sur ce système, il se trouve que / dev / mapper / control
sera c: 10: 57
tandis que le reste de / dev / mapper / *
sera b: 254: *
, et cela peut différer d'un cycle de démarrage à un autre - ou même lorsque les modules sont chargés / déchargés et que les périphériques sont ajoutés / supprimés .
Vous pouvez explorer ces enregistrements de périphériques plus en détail dans / sys
.
$ readlink /sys/dev/block/2:0 ../../devices/platform/floppy.0/block/fd0 $ cat /sys/devices/platform/floppy.0/block/fd0/dev 2:0 $ readlink /sys/dev/char/1:3 ../../devices/virtual/mem/null $ cat /sys/devices/virtual/mem/null/dev 1:3
Vous pouvez également utiliser stat.
$ stat -c 'major: %t minor: %T' <file>
Spécialement pour les périphériques en mode bloc:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 90G 0 disk
├─sda1 8:1 0 4G 0 part [SWAP]
├─sda2 8:2 0 4G 0 part /
Alternative qui ne dépend pas de stat
:
$ cat /sys/class/*/random/dev
1:8