sabendo que um arquivo especial de dispositivo principal e números menores em linux

StackOverflow https://stackoverflow.com/questions/1823743

  •  22-07-2019
  •  | 
  •  

Pergunta

Todos os arquivos em /dev são arquivos especiais ... eles representam dispositivos do computador. Eles foram criados com o syscall mknod. A minha pergunta é: Como posso saber o menor e grandes números que foram usados ??para criar este arquivo especial?

Foi útil?

Solução

A lista é chamada de LANANA Linux Device List , e é administrado por Alan Cox.

Você pode encontrar o mais recente copiar on-line ( link direto ), ou na fonte de Linux. Seu nome de arquivo na árvore do kernel é Documentation/devices.txt .

Para ver as maiores e menores números que criaram um nó em /dev (ou qualquer nó de dispositivo para que o assunto), basta usar ls com a opção -l:

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

Neste exemplo, 202 é as três principais número dispositivos e 0, 16 e 32 são menores de idade. O b à esquerda indica que o nó é um dispositivo de bloco. A alternativa é c, um dispositivo de caractere:

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

Outras dicas

$ 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

A maioria dos números de dispositivo são fixos (ou seja /dev/null será sempre caráter dispositivo 1:3), mas no Linux, alguns são alocados dinamicamente.

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

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

Por exemplo, neste sistema, isso só acontece que /dev/mapper/control será c:10:57 enquanto o resto do /dev/mapper/* será b:254:*, e isso pode variar de um ciclo de inicialização para outra - ou mesmo como módulos são carregados / descarregados e dispositivos são adicionados / removidos.

Você pode explorar esses registros de dispositivos ainda mais em /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

Você também pode usar estatísticas.

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

Especialmente para dispositivos de bloco:

$ 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 que não depende stat:

$ cat /sys/class/*/random/dev
1:8
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top