उदेव का प्रयोग करें। उदय एक डिवाइस मैनेजर डेमन है। अन्य चीजों के बीच यह आपके उपकरणों के नामकरण के लिए जिम्मेदार है। आप नियमों की निर्देशिका में एक निश्चित वाक्यविन्यास के साथ फाइल डालकर udev-rules को परिभाषित कर सकते हैं। नियम कई काम कर सकते हैं - विशेष रूप से वे स्क्रिप्ट चला सकते हैं, जब एक निश्चित डिवाइस जुड़ा होता है।
अपनी समस्या को कैसे हल करें:
सबसे पहले आपको अपने डिवाइस पर जानकारी एकत्र करने की आवश्यकता है। मान लीजिए कि आपने इसे कनेक्ट किया है, और यह जानते हैं कि यह नाम के अंतर्गत आता है /dev/sdb1
। यदि ऐसा है तो चलाएं:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)
कमांड आपके डिवाइस के बारे में जानकारी आउटपुट करेगा। यह एक लंबा लंबा है। आपको कुछ ऐसा खोजने की आवश्यकता है जो डिवाइस को विशिष्ट रूप से पहचानती है। यह एक धारावाहिक जैसा ATTRS{serial}=="UA04FLGC"
या अन्य विशेषताओं का संयोजन हो सकता है जैसे कि ATTRS{idVendor}
और ATTRS{idProduct}
। अधिकांश नाम कमोबेश स्व व्याख्यात्मक हैं। एक या कुछ का एक संयोजन चुनें जो उचित लगता है - यदि वे काम नहीं करते हैं, तो कुछ और प्रयास करें।
एक बार जब आप एक अद्वितीय पहचानकर्ता पा लेते हैं तो एक फाइल बनाते हैं जो /etc/udev/rules.d
दो अंकों से शुरू होती है और साथ समाप्त होती है .rules
। दो अंक इन .rules-files को संसाधित करने के क्रम को निर्दिष्ट करते हैं - 70-usb-log-custom.rules
आपके लिए एक अच्छा विकल्प होना चाहिए। इस नियम फ़ाइल का सिंटैक्स बहुत जटिल हो सकता है। यदि आप रुचि रखते हैं, तो Google udev। यदि केवल नई बनाई गई फ़ाइल को न खोलें और इसे कुछ इस तरह से देखने के लिए संपादित करें:
# /etc/udev/rules.d/70-usb-log-custom.rules
KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k"
ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"
यह एक वास्तविक udv फ़ाइल है जिसका मैं उपयोग कर रहा हूं। इसके तीन नियम हैं। हर लाइन का अपना एक नियम है। जब भी एन्क्रिप्टेड डिस्क कनेक्ट होती है, तो पहली पंक्ति डिक्रिप्टेड डिवाइस बनाने के लिए एक स्क्रिप्ट चलाती है। दूसरी पंक्ति उसी स्क्रिप्ट को आमंत्रित करती है जिसमें अलग-अलग विकल्पों के साथ डिक्रिप्ट किए गए डिवाइस को हटा दिया जाता है। तीसरी पंक्ति किसी अन्य संबंधित डिवाइस के लिए अनुमतियाँ सेट करती है।
सबसे अधिक संभावना है कि आपको केवल पहली पंक्ति की आवश्यकता होगी। बाकी को हटाएं और सही सीरियल डालें (या अपने डिवाइस की पहचान करने के लिए आपके द्वारा चुने गए मापदंडों का संकलन)।
मेरी फाइल का स्पष्टीकरण:
KERNEL=="sd?1"
कहते हैं कि जिस डिवाइस को हम इस नियम के लिए देख रहे हैं उसका नाम रेखा है /dev/sda1
, /dev/sdc1
या ऐसा कुछ। प्रश्नचिह्न किसी भी पत्र के लिए एक वाइल्डकार्ड है। ATTRS{serial}=="UA04FLGC"
यहाँ अद्वितीय पहचानकर्ता है। अन्य डिवाइस के लिए मैं (तीसरी लाइन) मैं सीरियल नंबर लेकिन के संयोजन का उपयोग नहीं कर रहा हूँ के बारे में बात कर रहा था SYSFS{idVendor}=="1781"
और SYSFS{idProduct}=="0c9f"
यह पहचान करने के लिए।
ACTION=="add"
नियम बताता है कि यह केवल तभी काम करना चाहिए जब डिवाइस को जोड़ा जाता है; जब इसे हटाया नहीं जाता है।
SYMLINK+="cusb1"
डिस्क के लिए एक सिमलिंक बनाता है ताकि कोई इसे खोज सके /dev/cusb1
।
RUN+="/home/confus/bin/usb-encrypt.sh add %k"
स्क्रिप्ट चलाता है और इसे 'ऐड' और '% k' (डिवाइस का नाम) पास करता है।
मैं अधिक विस्तार नहीं दूंगा, क्योंकि udv नियमों पर उत्कृष्ट ट्यूटोरियल हैं। यद्यपि आप यहाँ पढ़ते हैं, हालांकि घूरने के लिए पर्याप्त होना चाहिए।