คำตอบ:
ในระบบลีนุกซ์ที่ทันสมัยส่วนใหญ่แล้วทุกสิ่งที่อยู่ภายใต้การดูแล/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/
กรณีที่คุณต้องการที่จะทำให้ชื่อเพิ่มเติมสำหรับอุปกรณ์สิทธิ์การเปลี่ยนแปลงอื่น ๆ เช่นที่นี่เรามีหนึ่งที่ populates /dev/disk/for-asm
และชุดสิทธิ์ใน
udisks-daemon
อาจทำเช่นนั้น (แม้ว่า HAL หรือ DBUS ก็ทำได้เช่นกัน) คุณสามารถดูมันเกิดขึ้นหากคุณมีแนวโน้ม เปิด termanal และเรียกใช้:
udisks --monitor-detail
แล้วเสียบไดรฟ์ คุณจะได้รับสิ่งที่ชอบ:
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/Introduction-to-Udisks
udev
มีบางอย่างเกี่ยวข้องกับเรื่องแบบนั้น