Я знаю, что в /dev
каталоге хранятся файлы устройств, но является ли этот /dev
каталог единственным местом, где могут храниться файлы устройств, или это просто соглашение хранить файлы устройств в каталоге /dev
?
решение1
Это просто соглашение. Действительно, в chroot
среде или контейнере (например, docker) записи устройств могут присутствовать в другом месте.
То, что делает запись об устройстве записью об устройстве, этотипзаписи, а не ее название
Так, например:
% ls -ld /dev/vda
brw-rw---- 1 root disk 253, 0 May 26 07:00 /dev/vda
Первая "b" означает, что это блочное устройство. "253" — это старший номер устройства, а "0" — младший номер устройства. В этом случае
% grep virt /proc/devices
253 virtblk
Таким образом, основное устройство 253 относится к слою виртуальных блоков.
Обратите внимание, что имя «vda» здесь не имеет значения!
Я действительно мог бы
sudo mknod /tmp/foo b 253 0
Теперь /tmp/foo
получим доступ к тем же самым данным:
% sudo dd if=/dev/vda bs=256b count=1 | sum
....
40545 128
% sudo dd if=/tmp/foo bs=256b count=1 | sum
....
40545 128
Общие имена важны для людей и файлов конфигурации (например, /dev/tty1
— это общее имя для первой виртуальной консоли на машине Linux; /dev/ttyS0
— это общее имя для первого последовательного порта), но именно тип (блок/символ) и старший/младший номер делают это работающим.