Các liên kết dưới / dev / đĩa / by-id được tạo bởi udev. Trong /etc/udev/rules.d/50-udev.rules những dòng như vậy có thể được tìm thấy:
KERNEL=="sd*[!0-9]|sr*", SYSFS{ieee1394_id}=="*", ENV{ID_SERIAL}="$sysfs{ieee1394_id}", ENV{ID_BUS}="ieee1394"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/usb_id -x"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/scsi_id -g -x -s %p -d $tempnode"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/scsi_id -g -x -a -s %p -d $tempnode"
KERNEL=="nst[0-9]*|st*|sd*[!0-9]|sr*|dasd*[!0-9]|cciss?c", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
Thật không may, nó không phải là tầm thường để tìm ra by-id
symlink này từ tên của thiết bị. Nhưng có ít nhất một cách trực tiếp:
$ udevinfo -q path -n /dev/sda
/block/sda
$ udevinfo -q symlink -p /block/sda
disk/by-id/scsi-SATA_KINGSTON_SVP100_31JY100MY5SK disk/by-path/pci-0000:00:11.0-scsi-0:0:0:0
Một danh sách ngăn cách không gian được trả lại. Vì vậy, by-id
con đường có thể được tìm thấy.
Hoặc Bạn có thể trực tiếp lấy số sê-ri "tổng hợp":
$ udevinfo -q env -p /block/sda
ID_VENDOR=ATA
ID_MODEL=KINGSTON_SVP100S
ID_REVISION=CJR1
ID_SERIAL=SATA_KINGSTON_SVP100_31JY100MY5SK
ID_TYPE=disk
ID_BUS=scsi
ID_PATH=pci-0000:00:11.0-scsi-0:0:0:0
Ở ID_SERIAL
sau dấu gạch dưới cuối cùng, bạn có thể nhận được số sê-ri.
Như tôi thấy một số sê-ri có thể chứa các ký tự chữ và số và '-' (Tôi có các ổ cứng SCSI như vậy). Có ai biết bất kỳ giới hạn về số sê-ri? Nếu nó có thể chứa '_' thì phương thức này không phải là bằng chứng.
Các ID_MODEL
chủ chốt có thể được sử dụng để định vị chính xác hơn đầu số sê-ri, như (có vẻ như với tôi) 15 ký tự đầu tiên của nó được thêm vào ID_SERIAL
(số lượng có thay thế bằng '_').
udisks --show-info
.__ Nhưng _ phải lưu ý rằng khi được sử dụng ở chế độ hàng loạt hoặc nói chung trong các tập lệnh,udisks
thì CÁCH chậm hơnudevadm
.