Udv नियमों में UUID का उपयोग करें और / मीडिया / $ UUID पर USB ड्राइव माउंट करें


13

मैं /mediaडिस्क के UUID के आधार पर USB ड्राइव माउंट करना चाहता हूं । मैं एक udv रूल्स फ़ाइल में usb ड्राइव के UUID का उपयोग कैसे कर सकता हूं और फ़ोल्डर नाम के रूप में UUID नंबर के साथ usb ड्राइव को माउंट करने के लिए एक udv नियम क्या है।

blkidआदेश एक डिस्क के UUID आउटपुट लेकिन केवल बढ़ते पर।


1
कैविएट 2019: आधुनिक डेस्कटॉप लिनक्स सिस्टम पर सिस्टमड का उपयोग करते हुए, यूडीवी नियम नियमित उपयोगकर्ता नामस्थान में फाइल सिस्टम को माउंट नहीं करते हैं, अर्थात आप यूडीवी नियम में माउंट कमांड का उपयोग करके फाइल सिस्टम को माउंट नहीं कर सकते हैं। इसके अलावा, इन प्रणालियों में, फ्यूज (यूजर फाइल सिस्टम) सिस्टम को डेस्कटॉप आइकनों के माध्यम से यूएसबी माउंट को संभालने के लिए कॉन्फ़िगर किया गया है, इसलिए फ्यूज सिस्टम के साथ कुछ हद तक टकराव नियम का उपयोग करके हाथ से बढ़ते हुए। UUID द्वारा स्वचालित रूप से एक हेडलेस सर्वर पर USB फाइल सिस्टम बढ़ते के लिए, आप सिस्टम-फ़्यूड कॉन्फ़िगरेशन को हटाने और एक-शॉट माउंट सेवाओं को ट्रिगर करने के लिए udev नियमों का उपयोग करने के लिए सबसे अच्छा होगा।
जोनाथन बेन-अब्राहम

हाल के डेबियन पर परीक्षण किए गए fstab, systemd और automount का उपयोग करके इस समाधान को देखें: unix.stackexchange.com/a/347007/31228
जोनाथन बेन-

जवाबों:


14

हालांकि 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/fstabUdv के साथ या udisks के साथ बढ़ते उपकरणों के लिए मेरा वास्तविक उपयोग मामला zfs फाइल सिस्टम को माउंट करने के लिए है, जिसमें कुछ idiosyncrasies हैं जो उन्हें सामान्य टूल के लिए बिल्कुल फिट नहीं बनाते हैं।


1
एक महत्वपूर्ण बिंदु जो मुझे पता लगाने में थोड़ा समय लगा: पर्यावरण चर के खिलाफ मैच करने के लिए, आपके नियम को उन चर को स्थापित करने के बाद लागू किया जाना चाहिए । इसे प्राप्त करने के लिए, आपके .rulesफ़ाइल नाम को नंबर> 60 से शुरू करना होगा
एलिअम

@ali_m: धन्यवाद, मैंने आपकी जानकारी उत्तर में जोड़ दी है।
पर्सिड्स

उबंटू 18.04, कुछ udvadm कमांड को / dev / sdXX (उदा। Udevadm जानकारी) को इंगित किया जा सकता है, दूसरों को किसी कारण से / sys / block / sdXX को इंगित करने की आवश्यकता है (जैसे। udevadm परीक्षण)।
ग्रेग बेल

0

मेरे दिमाग में एक मोटा समाधान आ गया है। USTID द्वारा आईडी किए गए कोस्टारसिंग fstab प्रविष्टि सेट करें। और udev नियमों में, mount -aहर समय निष्पादित करें एक नया एसडी * डिवाइस जोड़ा गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.