हालांकि UUIDs सीधे udev द्वारा सुलभ नहीं हैं, कम से कम Fedora और Ubuntu में वे पर्यावरण चर ( ENV
) के रूप में सेट हैं । आप एक डिवाइस के सभी पर्यावरण चर को कॉल करके पढ़ सकते हैं udevadm info /dev/sdc
। जैसे मुझे बाहरी ड्राइव पर NTFS के लिए:
$ udevadm info /dev/sdc2
P: /devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/host7/target7:0:0/7:0:0:0/block/sdc/sdc2
N: sdc2
[…]
E: ID_FS_TYPE=ntfs
E: ID_FS_USAGE=filesystem
E: ID_FS_UUID=4A6F2ABC1232FA37
[…]
E:
सामने वाली सब कुछ एक पर्यावरण चर के रूप में सेट है।
यूयूआईडी के खिलाफ मिलान
आप इसके साथ मेल कर सकते हैं ENV{ID_FS_UUID}=="4A6F2ABC1232FA37"
। पहले फिल्टर के रूप में मैं मैच के KERNEL=="sd?2"
लिए सुनिश्चित करता हूं कि मैं केवल सही विभाजन संख्या के साथ ब्लॉक डिवाइस को संभाल रहा हूं। पूरा नियम इस तरह दिखेगा:
KERNEL=="sd?2", ENV{ID_FS_UUID}=="4A6F2ABC1232FA37", RUN+="/usr/bin/logger --tag my-manual-usb-mount Mounting the device with UUID 4A6F2ABC1232FA37", RUN+="/usr/bin/mount [Your mount options here]"
लकड़हारा आदेश यह सुनिश्चित करने के लिए उपयोगी है कि नियम वास्तव में चलाया जाता है। आगे आपको जांचना चाहिए कि नियम में कोई सिंटैक्स त्रुटि तो नहीं है udevadm test /dev/sdc2
। आपकी नियम फ़ाइल को आउटपुट में सूचीबद्ध किया जाना चाहिए और इसके आगे कोई त्रुटि संदेश नहीं दिखाई देना चाहिए। अब आप अपने डिवाइस है कि क्या अपने नियम काम करता है योजना के अनुसार की जाँच करने के लिए सभी नियमों को गति प्रदान कर सकते हैं: sudo udevadm trigger /dev/sdc2
। यदि आपका नियम मेल खाता है तो आपको सिस्टम लॉग ( /var/log/syslog
या journalctl -b
) के माध्यम से कस्टम लॉग संदेश मिलेगा ।
संपादित करें: ali_m ने इंगित किया है कि पर्यावरण चर पिछले नियमों द्वारा निर्धारित किए गए हैं और इस प्रकार केवल तभी संभव है जब आपकी .rules
फ़ाइल में पर्याप्त रूप से उच्च लेक्सोग्राफ़िक ऑर्डर हो । "60" से शुरू करना पर्याप्त होना चाहिए। व्यक्तिगत रूप से मैं अपने नियमों को एक नज़र में पूर्वनिर्धारित नियमों से अलग करने के लिए "zz" (यदि संभव हो तो) के साथ शुरू करता हूं।
RUN
कमांड और अन्य जगहों पर UUIDs का उपयोग करना
Udev में काफी शक्तिशाली वैरिएबल और विशेषता प्रतिस्थापन सिंटैक्स है । विशेष रूप से हर घटना $env{ID_FS_UUID}
को ड्राइव के यूयूआईडी के साथ बदल दिया जाएगा। तो /media/
UUID
आप इस नियम का उपयोग कर सकते हैं के तहत एक डिवाइस माउंट करने के लिए:
KERNEL=="sd??", RUN+="/usr/bin/mkdir /media/$env{ID_FS_UUID}", RUN+="/usr/bin/mount $devpath /media/$env{ID_FS_UUID}"
आप शायद इसके बजाय udisks कॉन्फ़िगर करना चाहते हैं, हालांकि, यह उस समस्या स्थान के लिए विशिष्ट है जिसे आप हल करना चाहते हैं। Https://wiki.archlinux.org/index.php/udisks#udisks2:_mount_to_.2Fmedia को एक प्रारंभिक बिंदु के रूप में देखें ।
/etc/fstab
Udv के साथ या udisks के साथ बढ़ते उपकरणों के लिए मेरा वास्तविक उपयोग मामला zfs फाइल सिस्टम को माउंट करने के लिए है, जिसमें कुछ idiosyncrasies हैं जो उन्हें सामान्य टूल के लिए बिल्कुल फिट नहीं बनाते हैं।