Eu sei que o /dev
diretório armazena arquivos de dispositivos, mas o /dev
diretório é o único lugar onde os arquivos de dispositivos podem ser armazenados ou é apenas uma convenção para armazenar arquivos de dispositivos no /dev
diretório?
Responder1
É apenas convenção. Na verdade, em um chroot
ambiente ou contêiner (por exemplo, docker), as entradas do dispositivo podem estar presentes em outro lugar.
O que torna uma entrada de dispositivo uma entrada de dispositivo é otipode entrada, não é o nome
Então, por exemplo:
% ls -ld /dev/vda
brw-rw---- 1 root disk 253, 0 May 26 07:00 /dev/vda
O primeiro “b” significa que este é um dispositivo de bloco. O “253” é o número principal do dispositivo e o “0” é o número secundário do dispositivo. Nesse caso
% grep virt /proc/devices
253 virtblk
Portanto, o dispositivo principal 253 está relacionado à camada de bloco virtual.
Você notará que o nome "vda" não é importante aqui!
eu poderia
sudo mknod /tmp/foo b 253 0
Agora /tmp/foo
acessará exatamente os mesmos dados:
% sudo dd if=/dev/vda bs=256b count=1 | sum
....
40545 128
% sudo dd if=/tmp/foo bs=256b count=1 | sum
....
40545 128
Nomes comuns são importantes para humanos e arquivos de configuração (por exemplo, /dev/tty1
é o nome comum para o primeiro console virtual em uma máquina Linux; /dev/ttyS0
é o nome comum para a primeira porta serial), mas é o tipo (bloco/char) e número maior/secundário isso faz funcionar.