sabendo que um arquivo especial de dispositivo principal e números menores em linux
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?
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