У більшості сучасних систем Linux, майже все, що /dev
знаходиться тут, розміщено udev.
На моїй машині Debian /dev/disk/by-label
надходить з декількох файлів у розділі /lib/udev/rules.d
Наприклад, ось правило 60-persistent-storage.rules
:
ENV{ID_FS_LABEL_ENC}=="?*", ENV{ID_FS_USAGE}=="filesystem|other", \
SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
Кілька рядків раніше ID_FS_LABEL_ENC
звідси:
# probe filesystem metadata of disks
KERNEL!="sr*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
Ви можете запустити blkid
себе, щоб побачити дані, які передаються у udev:
root@Zia:~# /sbin/blkid -o udev -p /dev/sda2
ID_FS_SEC_TYPE=msdos
ID_FS_LABEL=xfer1
ID_FS_LABEL_ENC=xfer1
ID_FS_UUID=B140-C934
ID_FS_UUID_ENC=B140-C934
ID_FS_VERSION=FAT16
ID_FS_TYPE=vfat
ID_FS_USAGE=filesystem
ID_PART_ENTRY_SCHEME=dos
ID_PART_ENTRY_TYPE=0xc
ID_PART_ENTRY_NUMBER=2
ID_PART_ENTRY_OFFSET=257040
ID_PART_ENTRY_SIZE=257040
ID_PART_ENTRY_DISK=8:0
І справді:
root@Zia:~# ls -l /dev/disk/by-label/xfer1
lrwxrwxrwx 1 root root 10 Nov 19 10:02 /dev/disk/by-label/xfer1 -> ../../sda2
Ви можете розмістити додаткові файли правил, /etc/udev/rules.d/
якщо ви хочете зробити додаткові імена для пристроїв, змінити дозволи тощо. Наприклад, тут у нас є один, який заповнює та встановлює дозволи на /dev/disk/for-asm
.
udev
має щось подібне до подібних речей.