यहाँ है कि मैंने हाल ही में इसे कैसे किया, और मैं अब इस दृष्टिकोण से काफी खुश हूँ। यह Ubuntu 12.04 + gentoo के लिए है, लेकिन मुझे लगता है कि कोई भी डिस्ट्रो है, जो udv को स्थापित करने की अनुमति देता है और ऑटोफ़ को काम करना चाहिए।
आवश्यकताएँ: आपको udv + autofs स्थापित करना होगा।
चरण 1)
निम्नलिखित "/etc/udev/rules.d/90-usbsd-auto.rules" फ़ाइल बनाएं (बेशक आप किसी भी नाम का उपयोग तब तक कर सकते हैं जब तक वह ".rules" के साथ समाप्त होता है)। :
# Add symlink /dev/usbdisks/<label> to /dev/sd[a-z][1-9]
# if partition has a label
# Add symlink /media/usb/<label> to /media/autousb/<label>
# for automounter support
ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
SYMLINK+="usbdisks/$env{ID_FS_LABEL_ENC}", MODE:="0660", \
RUN+="/bin/rm /media/usb/$env{ID_FS_LABEL_ENC}", \
RUN+="/bin/ln -sf /media/autousb/$env{ID_FS_LABEL_ENC} /media/usb/$env{ID_FS_LABEL_ENC}"
# Fallback: If partition has a NO label, use kernel name (sd[a-z][1-9])
ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
SYMLINK+="usbdisks/%k", MODE:="0660", \
RUN+="/bin/rm /media/usb/%k", \
RUN+="/bin/ln -sf /media/autousb/%k /media/usb/%k"
# Some FileSystems emit a "change" event when they are unmounted.
# UDEV seems to delete the device symlink in this case :-(
# So we need to re-create it here
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
SYMLINK+="usbdisks/$env{ID_FS_LABEL_ENC}", MODE:="0660"
# Fallback: If partition has NO label, use kernel name
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
SYMLINK+="usbdisks/%k", MODE:="0660"
# When device is removed, also remove /media/usb/<label>
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
RUN+="/bin/rm /media/usb/$env{ID_FS_LABEL_ENC}"
# Fallback: If partition has no label, remove /media/usb/%k
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
RUN+="/bin/rm /media/usb/%k"
यह क्या करता है: यह दो सिम्लिंक बनाता है, एक USB स्टोरेज डिवाइस विभाजन के लिए "/ dev / usbdisks / <...>" के तहत। यह या तो USB संग्रहण विभाजन या कर्नेल नाम के लेबल का उपयोग करेगा, यदि कोई लेबल नहीं है। दूसरा सिमलिंक "/ मीडिया / usb / <...>" से "/ मीडिया / ऑटोसब / <...>" से लिंक होगा यह ऑटोमोटिव सपोर्ट के लिए किया गया है (चरण 2 देखें)।
नोट: मैंने मूल रूप से ID_FS_LABEL_ENC चर के साथ नियमों का उपयोग नहीं किया, क्योंकि यह मेरी राय में खतरनाक है। यदि आप एक ही लेबल का उपयोग करने वाले दो यूएसबी स्टिक में प्लग करते हैं तो क्या होगा?
लेकिन पोस्टर विशेष रूप से यूएसबी डिस्क के लेबल का उपयोग करना चाहता था, इसलिए मैंने तदनुसार नियमों को संशोधित किया।
यह सुनिश्चित करने के लिए कि udv इन नियमों का उपयोग करता है
sudo udevadm control --reload-rules
इस udv नियम फ़ाइल के साथ USB संग्रहण डिवाइस विभाजन को स्वचालित करने के लिए सब कुछ सेटअप है। ध्यान दें कि अभी, डिवाइस को स्वचालित रूप से (जानबूझकर) नहीं किया जाएगा। इसका उपयोग करने के बाद इसे स्वचालित कर दिया जाएगा
चरण 2)
ऑटोऑउट / मीडिया / ऑटोसब / <...> के लिए ऑटोफ़ोटो सेटअप
/media/autousb /etc/auto.usb --timeout=60
इसका मतलब यह है कि ऑटोएफएस 60 सेकंड की निष्क्रियता के बाद डिवाइस को अनमाउंट करेगा। आप अपने स्वाद पर निर्भर करते हुए कम या अधिक उपयोग करना चाहते हैं।
Gentoo के लिए आपको "/etc/autofs/auto.master" को संशोधित करना होगा ताकि यह उपयोग करने के लिए समझ में आए
/media/autousb /etc/autofs/auto.usb --timeout=60
अब मैंने निम्नलिखित सामग्री के साथ "auto.usb" बनाया:
#!/bin/bash
key=${1}
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/${key})
if [ "${fstype}" = "vfat" ] ; then
echo "-fstype=vfat,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
exit 0
fi
if [ "${fstype}" = "ntfs" ] ; then
echo "-fstype=fuse.ntfs-3g,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
exit 0
fi
if [ "${fstype}" = "ext4" ] ; then
echo "-fstype=ext4,sync,nocheck :/dev/usbdisks/${key}"
exit 0
fi
exit 1
इस auto.usb को निष्पादन योग्य बनाने की आवश्यकता है, ताकि ऑटोफ़्स इसे (bash) स्क्रिप्ट के रूप में उपयोग करता है। इसलिए उदाहरण के लिए
sudo chmod 0755 /etc/auto.usb
यह क्या करता है: यह स्क्रिप्ट AutoFS (/ usr / sbin / automount) को बताएगी कि कैसे USB संग्रहण डिवाइस विभाजन को माउंट किया जाए।
विभाजन पर किस प्रकार की फ़ाइल प्रणाली है, यह जानने के लिए स्क्रिप्ट पहले "/ sbin / blkid" का उपयोग करेगी।
स्क्रिप्ट तब डिवाइस विभाजन के आधार पर सही माउंट विकल्प प्रदान करेगी।
नोट: मैंने "vfat" के लिए नमूना कोड शामिल किया (शायद यूएसबी स्टिक के लिए सबसे आम), "ntfs" और "xfs" फ़ाइल सिस्टम। बेशक अधिक फ़ाइल सिस्टम का समर्थन करने के लिए इसे बढ़ाना काफी आसान है।
चरण 3) वैकल्पिक ... "बेदखल करना" == अपनी usb स्टिक (s) (या अपने usb स्टिक पर विभाजन) को अनमाउंट करें, के तहत एक स्क्रिप्ट बनाएं / sbin / usbeject:
#!/bin/bash
killall -s SIGUSR1 /usr/sbin/automount
इस स्क्रिप्ट के साथ आप "सुडो usbeject" का उपयोग सभी आरोहित USB डिवाइस विभाजन को अनमाउंट करने के लिए कर सकते हैं (ऑटोमेट को उन्हें अनमाउंट करने के लिए कहकर)।
बेशक आप बस यह सुनिश्चित कर सकते हैं कि विभाजन कहीं भी उपयोग नहीं किया गया है; आटोमैटिक 60 सेकंड के टाइमआउट के बाद विभाजन को रद्द कर देगा ...
यहाँ वास्तविक चाल "/ मीडिया / usb" से "/ मीडिया / ऑटोब" के लिए सिम्लिंक का उपयोग करना है:
- "/ मीडिया / यूएसबी" सिम्लिंक udv द्वारा बनाए जाएंगे, एक उपयोगकर्ता को एक सरल अवलोकन देंगे जो USB संग्रहण डिवाइस विभाजन हैं
- यदि आप इसे / मीडिया / यूएसबी के माध्यम से उपयोग करते हैं तो AutoFS डिमांड पर विभाजन को स्वचालित कर देगा
- स्क्रिप्ट किए गए "auto.usb" फ़ाइल के साथ आप किसी भी तरह की फ़ाइल प्रणाली का समर्थन कर सकते हैं और इसके अतिरिक्त आप किसी भी प्रकार की नामकरण योजना का समर्थन करने में सक्षम हैं।
- यह दृष्टिकोण कई विभाजन के साथ यूएसबी स्टिक्स का समर्थन करता है, भले ही ये विभाजन अलग-अलग फ़ाइल सिस्टम प्रकारों का उपयोग करें।