Ponto de montagem /dev
é devtmpfs
filesystem e gerenciado por udev
completamente.
Então, para detalhes, precisamos ir para a configuração udev
.
2 regras do udev estão lidando com isso normalmente
$ grep -ri '/dev/disk' /usr/lib/udev/rules.d/
/usr/lib/udev/rules.d/60-persistent-storage.rules:# persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path}
/usr/lib/udev/rules.d/13-dm-disk.rules:# These rules create symlinks in /dev/disk directory.
60-persistent-storage.rules
mencionions
# by-path (parent device path)
ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id"
ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}"
ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
Finalmente ID_PATH
é um identificador único para um dispositivo baseado em sua localização física / conexão HW (por exemplo, algo como ID_PATH = pci-0000: 02: 04.0-scsi-0: 0: 0: 0).
ID_PATH
vem do programa udev incorporado chamado path_id
(por exemplo, para /sys/block/sdc
)
$ udevadm test-builtin path_id /sys/block/sdc
calling: test-builtin
=== trie on-disk ===
tool version: 204
file size: 5632867 bytes
header size 80 bytes
strings 1260755 bytes
nodes 4372032 bytes
load module index
ID_PATH=pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_1_0-scsi-0_0_0_0
Podemos relacioná-lo com
drwxr-xr-x 6 root root 0 Aug 15 02:30 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/
Por fim, se alguém estiver interessado em detalhes, consulte o código-fonte