Domanda

Tutti i file in / dev sono file speciali ... rappresentano i dispositivi del computer. Sono stati creati con il syscall mknod . La mia domanda è: come posso conoscere il minore e numeri importanti che sono stati utilizzati per creare questo file speciale?

È stato utile?

Soluzione

L'elenco si chiama Elenco dei dispositivi LANANA Linux ed è gestito da Alan Cox.

Puoi trovare ultima copia online ( collegamento diretto ) o nel sorgente Linux. Il suo nome file nella struttura del kernel è Documentation / devices.txt .

Per vedere i numeri maggiori e minori che hanno creato un nodo in / dev (o qualsiasi nodo del dispositivo in quel caso), usa semplicemente ls con - l opzione:

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

In questo esempio, 202 è il numero principale dei tre dispositivi e 0 , 16 e 32 sono minori. Il b a sinistra indica che il nodo è un dispositivo a blocchi. L'alternativa è c , un dispositivo personaggio:

crw-rw-rw- 1 root tty       5,   0 Nov 22 00:29 /dev/tty

Altri suggerimenti

$ 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 maggior parte dei numeri di dispositivo sono fissi (ovvero / dev / null sarà sempre un dispositivo a caratteri 1: 3 ) ma su Linux, alcuni sono allocati dinamicamente.

$ cat /proc/devices
Character devices:
...
 10 misc
...

Block devices:
...
253 mdp
254 device-mapper
$ cat /proc/misc
...
 57 device-mapper
...

Ad esempio, su questo sistema, accade che / dev / mapper / control sarà c: 10: 57 mentre il resto di / dev / mapper / * sarà b: 254: * e questo potrebbe differire da un ciclo di avvio all'altro - o anche quando i moduli vengono caricati / scaricati e i dispositivi vengono aggiunti / rimossi .

Puoi esplorare ulteriormente queste registrazioni del dispositivo in / 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

Puoi anche usare stat.

$ stat -c 'major: %t minor: %T' <file>

Soprattutto per i dispositivi a blocchi:

$ 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 /

Alternativa che non dipende da stat :

$ cat /sys/class/*/random/dev
1:8
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top