Udv द्वारा / dev / डिस्क / बाय-आईडी के तहत लिंक बनाया गया है। /Etc/udev/rules.d/50-udev.rules में ऐसी लाइनें पाई जा सकती हैं:
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}"
दुर्भाग्य by-id
से डिवाइस के नाम से इस सिमिलिंक का पता लगाना तुच्छ नहीं है। लेकिन कम से कम एक सीधा रास्ता है:
$ 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
एक अंतरिक्ष अलग सूची वापस आ गई है। तो by-id
रास्ता मिल सकता है।
या आप सीधे "समग्र" सीरियल नंबर प्राप्त कर सकते हैं:
$ 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
अंतिम अंडरस्कोर के बाद आप सीरियल नंबर प्राप्त कर सकते हैं।
जैसा कि मैं देख रहा हूं कि एक सीरियल नंबर में अल्फ़ान्यूमेरिकल कैरेक्टर और '-' (मेरे पास ऐसे SCSI HDD हैं) हो सकते हैं। क्या किसी को सीरियल नंबर के बारे में कोई सीमा पता है? यदि इसमें '_' हो सकता है तो यह विधि बुलेट प्रूफ नहीं है।
ID_MODEL
के रूप में (मुझे लगता है) इसके पहले 15 वर्णों से जुड़ जाते हैं कुंजी, और अधिक स्पष्ट सीरियल नंबर की शुरुआत स्थानीय बनाना करने के लिए इस्तेमाल किया जा सकता है ID_SERIAL
(द्वारा '_' की जगह रिक्त स्थान)।
udisks --show-info
।__ लेकिन__ यह ध्यान दिया जाना चाहिए कि जब बैच मोड में या आम तौर पर लिपियों में उपयोग किया जाता है, तोudisks
क्या तुलना में धीमी हैudevadm
।