Câu trả lời:
Trên hầu hết các hệ thống Linux hiện đại, hầu hết mọi thứ bên dưới /dev
đều được udev đưa vào đó.
Trên máy Debian của tôi, /dev/disk/by-label
xuất phát từ một số tệp trong /lib/udev/rules.d
Ví dụ: đây là quy tắc từ 60-persistent-storage.rules
:
ENV{ID_FS_LABEL_ENC}=="?*", ENV{ID_FS_USAGE}=="filesystem|other", \
SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
Một vài dòng trước đó là từ đâu ID_FS_LABEL_ENC
đến:
# probe filesystem metadata of disks
KERNEL!="sr*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
Bạn có thể blkid
tự chạy để xem dữ liệu truyền đến 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
Và thực sự:
root@Zia:~# ls -l /dev/disk/by-label/xfer1
lrwxrwxrwx 1 root root 10 Nov 19 10:02 /dev/disk/by-label/xfer1 -> ../../sda2
Bạn có thể đặt các tệp quy tắc bổ sung vào /etc/udev/rules.d/
nếu bạn muốn đặt tên bổ sung cho thiết bị, thay đổi quyền, v.v. Ví dụ: ở đây chúng tôi có một quy tắc cư trú và đặt quyền trên a /dev/disk/for-asm
.
udisks-daemon
có lẽ đang làm điều đó (mặc dù HAL hoặc DBUS cũng có thể). Bạn có thể xem nó xảy ra nếu bạn rất nghiêng. Mở một termanal và chạy:
udisks --monitor-detail
và sau đó cắm vào một ổ đĩa. Bạn sẽ nhận được một cái gì đó như:
job-changed: /org/freedesktop/UDisks/devices/sdb1
job underway: FilesystemMount, initiated by uid 1000
changed: /org/freedesktop/UDisks/devices/sdb1
Showing information for /org/freedesktop/UDisks/devices/sdb1
native-path: /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb1
device: 8:17
device-file: /dev/sdb1
presentation: /dev/sdb1
by-id: /dev/disk/by-id/usb-SanDisk_Cruzer_20054858820EEB607D7D-0:0-part1
by-id: /dev/disk/by-uuid/D033-D063
by-path: /dev/disk/by-path/pci-0000:00:1a.7-usb-0:4:1.0-scsi-0:0:0:0-part1
detected at: Wed 21 Nov 2012 07:45:47 AM EST
system internal: 0
removable: 0
has media: 1 (detected at Wed 21 Nov 2012 07:45:47 AM EST)
detects change: 0
detection by polling: 0
detection inhibitable: 0
detection inhibited: 0
is read only: 0
is mounted: 1
mount paths: /media/CRUZER
mounted by uid: 1000
presentation hide: 0
presentation nopolicy: 0
presentation name:
presentation icon:
size: 8000094208
block size: 512
job underway: no
usage: filesystem
type: vfat
version: FAT32
uuid: D033-D063
label: CRUZER
partition:
part of: /org/freedesktop/UDisks/devices/sdb
scheme: mbr
number: 1
type: 0x0b
flags:
offset: 16384
alignment offset: 0
size: 8000094208
label:
uuid:
udisk
scribd.com/doc/63425975/Intesistion-to-Udisks
udev
có liên quan đến những thứ đó.