किसी भी डेस्कटॉप वातावरण के बिना, स्वचालित रूप से डाले जाने पर / मीडिया / <LABEL> में हटाने योग्य मीडिया कैसे माउंट करें?


17

मेरे पास डेबियन साइड सिस्टम है (व्हीजी) (और आर्क के लिए भी ऐसा ही है), बिना किसी डेस्कटॉप वातावरण के (और बिल्कुल भी कोई Xorg नहीं)।

मैं अपने एसडी-कार्ड, यूएसबी स्टिक, बाहरी एचडीडी को एक निर्दिष्ट निर्देशिका में लेबल के /media/साथ मैन्युअल रूप से mount/ में umountऔर उपयुक्त प्रविष्टियों /etc/fstabको बूट समय पर माउंट कर सकता हूं , लेकिन यह मेरी आवश्यकताओं के लिए पर्याप्त रूप से प्रतिबंधात्मक और गतिशील नहीं है: अगर मैं चाहता हूं कि उन्हें अंदर ले जाया जाए /media/<LABEL>, तो प्रत्येक डिवाइस <LABEL>की अपनी प्रविष्टि की आवश्यकता होती है, और प्रत्येक <LABEL>उपनिर्देशिका को मैन्युअल /media/रूप से बनाने या हटाने की आवश्यकता होती है )।

तो, प्रविष्टि में स्वचालित रूप से उन्हें माउंट करने का सबसे अच्छा तरीका क्या है (और फाइल सिस्टम से उन्हें अनमाउंट करने के लिए जैसे ही वे अनप्लग होते हैं, भले ही यह डेटा के लिए कितना जोखिम भरा हो )?/media/<LABEL>

आदर्श समाधान होगा:

  1. का पता लगाने के एक हटाने योग्य मीडिया प्लग-इन किया जब (यानी जब में जोड़ा /dev/के रूप में sdax, sdbx... द्वारा udev)
  2. /media/इसके लेबल के अनुसार निर्देशिका बनाएं (हटाने योग्य मीडिया का लेबल)
  3. इसे निर्देशिका /media/<LABEL>में RWमोड में माउंट करें (यदि यह फ़ाइल सिस्टम समर्थन करता है) flushविकल्प के साथ (एक के लिए vfat)
  4. पता लगाएं कि क्या मीडिया को अनप्लग कर दिया गया है
  5. यदि तब, फाइल सिस्टम से इसे अनमाउंट करें
  6. से संबंधित निर्देशिका निकालें /media/

(उपकरणों oviously तुल्यकालिक मोड में रखा जाना चाहिए, किसी भी डेटा हानि से बचने जब गर्म कैशिंग की वजह से अनप्लग करने के लिए : संपादित sync है जिस तरह के लिए बहुत अधिक vfatहटाने योग्य मीडिया तो flush एक समझौता के रूप में बनाया गया है , कम से कम सुरक्षित syncजीवन के अनुसार, लेकिन कम जोखिम भरा फ्लैश मेमोरी के चक्र)

मैं के बारे में कुछ जानकारी मिल गया autofs, HAL, udisks, udisks2, usbmountआदि, लेकिन यह स्पष्ट नहीं है जो एक पदावनत या पसंद किया जाता है, और वैसे भी, मैं पता लगा नहीं किया है अब है कि ऐसा करने के लिए अपने सिस्टम पर उन्हें आसानी से कॉन्फ़िगर करने के तरीके, अप ...


पहले, क्या आपने इसी तरह के प्रश्नों की खोज की है? मुझे याद है कि यह पहले ही पूछा जा चुका है। दूसरा, अनमाउंटिंग से पहले अनमाउंट होना चाहिए।
enzotib

1
बेशक मैंने किया: ओ] यहां और सुपरसुसर पर। समस्या यह है कि उपकरण विकसित (udisks / udev), या पदावनत (HAL?), अन्य "" पसंदीदा नहीं हैं "(udisks2?), और इसी तरह। वैसे भी, मैं किसी भी काम और न ही स्पष्ट समाधान खोजने में सक्षम नहीं है । एक डेस्कटॉप पर्यावरण तंत्र (ग्नोम, केडीई या एक्सएफसीई) पर भरोसा करने के लिए मुझे जो पता चला, उसमें से अधिकांश; मैं किसी भी स्थापित करने के लिए नहीं करना चाहती। जरूरी नहीं कि अनमाउटिंग के बारे में। यदि डिवाइस पर सेट किया गया है sync, तो एक बहरा डिवाइस को fs से अनमाउंट कर सकता है यदि यह पता लगाता है कि यह बिना डेटा हानि के अनप्लग कर दिया गया है। सभी डेस्कटॉप डिस्ट्रोस ऐसा करते हैं। मैं चाहता हूं कि टर्मिनल में।
cedbeu

इसके लिएhalevt इस प्रतिस्थापन को देखें । शारीरिक रूप से अनप्लग करने से पहले , अनमाउंट के बारे में, आमतौर पर DE आपको फ़ाइल प्रबंधक से डिवाइस को बेदखल करने की उम्मीद करता है।
enzotib

हाँ सच। लेकिन मैंने देखा है कि कुछ (पूर्व में उपयोग किए गए) डेमॉन एफएस से उपकरणों को अनमाउंट कर सकते हैं जो अनप्लग करने से पहले अनमाउंट नहीं किए गए हैं, और यहां तक ​​कि स्वचालित रूप से / मीडिया / से उनकी संबंधित निर्देशिका को हटाते हैं, और यह कि वे सामान्य तरीके से काम कर रहे हैं (यदि उपकरणों को पाठ्यक्रम के तुल्यकालिक होने के लिए कॉन्फ़िगर किया गया है)। आपके लिंक के लिए धन्यवाद। जैसे ही मैं udisksevt पर घर वापस आऊँगा, मेरे पास एक नज़र होगा। मैं पहले से ही devmon और udiskie पर एक नज़र रखता हूं, लेकिन वे डेबियन पैकेज में नहीं हैं। अगर मुझे कुछ और मिल सकता है तो मैं कोशिश करूँगा लेकिन मुझे विश्वास नहीं हो रहा है कि ऐसा करने के लिए डेबियन पर कोई मूल समाधान नहीं है।
cedbeu

1
मैं डेबियन पर भी कर रहा हूँ और मैं का उपयोग fdisk -lऔर उसके बाद mount- यह है कि दो आदेशों, लेकिन ठीक है, अगर आप चाहते हैं यह automatized, आप पार्स करने के लिए होगा fdisk -lउत्पादन, और उसके बाद में रख mount- मैं के साथ इस तरह सामान करना head, tail, tr, cut, आदि। लेकिन आमतौर पर पेशेवरों के साथ यह awkया, और भी बेहतर, सही जगह डेटा के लिए देखो। डिलीट करने के बारे में, कम से कम मेरे लिए जब मैं माउंट करता हूं /mnt, तो यह अपने आप हो जाता है। ट्रिगर के बारे में (जब आप प्लग इन करते हैं) मेरे पास कोई सुराग नहीं है, लेकिन कृपया हमें बताएं जब आप इसे हल करते हैं।
इमानुएल बर्ग

जवाबों:


10

मुझे लगता है कि आप ढूंढ रहे हैं pmount

यदि आप सम्मिलन पर स्वचालित माउंटिंग चाहते हैं, तो Debian पर Automounting USB स्टिक देखें ।

यदि आपका सिस्टम udisks2 का उपयोग करता है , तो यह एक हटाने योग्य भंडारण उपकरण के सम्मिलन पर प्रतिक्रिया करने का पसंदीदा तरीका है। Udisks के लिए कॉन्फ़िगरेशन युक्तियों के लिए आर्क विकी देखें ।

अन्यथा, जब कोई नया उपकरण दिखाई देता है , तो यह प्रोग्राम udev है , इसलिए udev नियम से स्वचालित माउंटिंग चालू हो जाता हैUsbmount पैकेज udev नियम प्रदान करता है स्वचालित रूप से USB संग्रहण डिवाइस और कुछ अन्य लोगों माउंट करने के लिए। mountUdv नियमों से कॉल करना FUSE फाइल सिस्टम (जैसे कि ntfs-3G) के लिए काम नहीं करता है , इसलिए यदि आपको आवश्यकता है तो udisks का उपयोग करें।

जब आप हटाए जाते हैं तो आप मीडिया को स्वचालित रूप से अनमाउंट नहीं कर सकते क्योंकि कार्यशीलता उस तरह से काम नहीं करती है। इसे हटाने से पहले मीडिया को अनमाउंट होना चाहिए । केवल-पढ़ने के लिए मीडिया, आप हटाने के बाद अनमाउंटिंग से दूर हो सकते हैं, हालांकि यह कुछ अनुप्रयोगों को भ्रमित कर सकता है यदि उनके पास अचानक गायब हो गई फाइल सिस्टम पर फाइलें खुली हों। योग्य मीडिया के लिए, यदि आप एक माउंटेड फ़ाइल सिस्टम को अनप्लग करते हैं, तो डेटा भ्रष्टाचार की संभावना है।


उत्तर के लिए एक लाख धन्यवाद। मैं जल्द से जल्द कोशिश करूंगा और यहां के लोगों को बताऊंगा। अनमनेपन के बारे में। दोस्तों, कृपया मुझे यह बताना बंद कर दें कि यह कहां का कार्य-कारण है, जहां यह नहीं है: ओ] डिवाइस के अनप्लग होने के बाद पूरी तरह से डिवाइस को सिंक्रोनाइज़ करने के लिए कॉन्फ़िगर किए जाने के बाद ही (और संभव है) समझ में आता है। फिर, यह केवल फ़ाइल सिस्टम का मामला है। यदि डेटा को कैशिंग (सिंक्रोनस) के बिना स्थानांतरित किया गया है, तो अनमाउंट किए बिना अनप्लग करने के लिए कोई समस्या नहीं है। फिर, अनमाउंटिंग का प्रदर्शन किया जा सकता है और सिस्टम को सूचित करने के लिए केवल उपयोगी है कि डिवाइस अब वहां नहीं है।
cedbeu

1
@cblab आप ओवरसाइम्पलाइज़ कर रहे हैं। यदि कोई फ़ाइल लिखने के लिए खुली है और आप डिवाइस को खींचते हैं, तो फ़ाइल के क्षतिग्रस्त होने की संभावना है; अनमाउंटिंग यह सुनिश्चित करता है कि कोई भी फाइल ओपन न हो। कई फाइल सिस्टम पर (हालांकि FAT नहीं), मैला बिट को 0 पर सेट करने की तुलना में अधिक है, उन्हें एक लॉग को फ्लश करने की आवश्यकता है। फ्लैश उपकरणों के लिए, सिंक माउंट के साथ एक बड़ी चिंता यह है कि यह डिवाइस को बहुत तेजी से नीचे पहनता है, क्योंकि यह लिखने के समूह को रोकता है। देखें superuser.com/questions/180722/... और readlist.com/lists/vger.kernel.org/linux-kernel/22/111748.html
गाइल्स 'तथाकथित बंद किया जा रहा बुराई'

हाय @ गलियाँ। आपके उत्तर के लिए धन्यवाद। मुझे नहीं लगता कि मैं ओवरसिम्लिफाइंग हूं, हालांकि। आप कुछ बिंदुओं पर सही हैं। लेकिन, उपयोगकर्ता यह तय करता है कि वह जोखिम भरा जीवन जीना चाहता है या नहीं। आप सहमत होंगे, आपका पद 7 वर्ष पुराना है; अब, flushविशेष रूप vfatसे उन मुद्दों से बचने के लिए डिज़ाइन किया गया एक माउंट विकल्प : प्रत्येक ब्लॉक के बाद लेखन नहीं किया जाता है, लेकिन जैसे ही डिवाइस निष्क्रिय होने लगता है। और फ्लैश मेमोरी ने उनके मृत-जीवन चक्रों को भी बहुत बढ़ा दिया है। अब, जाहिर है कि उपयोगकर्ता को फ़ाइलों को खोलने या कॉपी करने के दौरान (या इसके तुरंत बाद) उपकरणों को अनप्लग करने के लिए जागरूक नहीं होना चाहिए। लेकिन यह अच्छा समझौता है।
cedbeu

वैसे भी, usbmount मेरे लिए अच्छा विकल्प हो सकता था, लेकिन दुर्भाग्य से, यह उपकरणों पर उनके लेबल नामों के आधार पर माउंट नहीं करता है, लेकिन /media/usb-*जो मेरी आवश्यकताओं के अनुरूप नहीं है। मैं पैरामीटर के /media/<DEV_LABEL>साथ डिवाइस को स्वचालित रूप से माउंट करने में सक्षम होना चाहता हूं flushजब उनका पता लगाया जाता है (यदि निर्देशिका के गतिशील निर्माण के साथ संभव है), और उन्हें अनमाउंट करने और निर्देशिकाओं को /media/स्वचालित रूप से हटाने के लिए यदि वे अब तक पता नहीं किए गए हैं। मैं जो जोखिम उठाता हूं वह मेरे ऊपर है।
cedbeu

1
वेतन ध्यान कि usbmountके बाद से NTFS का समर्थन नहीं करते jessieअब और: bugs.debian.org/774149
malat

2

यहाँ है कि मैंने हाल ही में इसे कैसे किया, और मैं अब इस दृष्टिकोण से काफी खुश हूँ। यह 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" फ़ाइल के साथ आप किसी भी तरह की फ़ाइल प्रणाली का समर्थन कर सकते हैं और इसके अतिरिक्त आप किसी भी प्रकार की नामकरण योजना का समर्थन करने में सक्षम हैं।
  • यह दृष्टिकोण कई विभाजन के साथ यूएसबी स्टिक्स का समर्थन करता है, भले ही ये विभाजन अलग-अलग फ़ाइल सिस्टम प्रकारों का उपयोग करें।

2

ठीक है, यह एक लंबा समय हो गया है, लेकिन मैं अभी भी मेरे सबसे अच्छे विकल्प के साथ मेरे सवाल का जवाब दूंगा। संक्षेप करने के लिए: एक udevनियम बनाएं , कुछ लिपियों से संबंधित (जो निर्देशिकाओं को बनाएगा / हटाएगा और संयुक्त राष्ट्र / हटाने योग्य उपकरणों को माउंट करेगा), और udevडिवाइस ईवेंट प्रकार = से जुड़ा हुआ है partition

1 - स्क्रिप्ट जोड़ना / हटाना

निम्नलिखित स्क्रिप्ट storage-automount.shको सहेजें /lib/udev/और इसे निष्पादन योग्य बनाएं ( sudo chmod a+x /lib/udev/storage-automount.sh):

#!/bin/sh

# set the mountpoint name according to partition or device name
mount_point=$ID_FS_LABEL
if [ -z $mount_point ]; then
    mount_point=${DEVNAME##*/}
fi

# if a plugdev group exist, retrieve it's gid set & it as owner of mountpoint
plugdev_gid="$(grep plugdev /etc/group|cut -f3 -d:)"
if [ -z $plugdev_gid ]; then
    gid=''
else
    chown root:plugdev $mount_point
    gid=",gid=$plugdev_gid"
fi

# create the mountpoint directory in /media/ (if not empty)
if [ -n $mount_point ]; then
    mkdir -p /media/$mount_point
    # other options (breaks POSIX): noatime,nodiratime,nosuid,nodev
    mount -t $ID_FS_TYPE \
      -o rw,flush,user,uid=0$gid,umask=002,dmask=002,fmask=002 \
      $DEVNAME /media/$mount_point
fi

निम्नलिखित स्क्रिप्ट storage-autounmount.shको सहेजें /lib/udev/और इसे निष्पादन योग्य बनाएं ( sudo chmod a+x /lib/udev/storage-autounmount.sh):

#!/bin/sh

# set the mountpoint name according to partition or device name
mount_point=$ID_FS_LABEL
if [ -z $mount_point ]; then
    mount_point=${DEVNAME##*/}
fi

# remove the mountpoint directory from /media/ (if not empty)
if [ -n $mount_point ]; then
    umount -l /media/$mount_point
    rm -R /media/$mount_point
fi

2 - udevघटनाओं के लिए उन लिपियों को संलग्न करने के लिए नियम बनाना

और अंत udevमें /etc/udev/rules.d/, उदाहरण के लिए, में एक नियम जोड़ें 85-storage-automount.rules:

ENV{DEVTYPE}=="partition", RUN+="/lib/udev/storage-automount.sh", ENV{REMOVE_CMD}="/lib/udev/storage-autounmount.sh"

और इसे उस dir / फ़ोल्डर के अन्य नियमों की तरह ही अनुमति दें

अब, जब आप स्टोरेज डिवाइस को प्लग इन करते हैं, /media/तो विभाजन नाम के अनुसार एक निर्देशिका बनाई जाएगी (मुझे याद नहीं है लेकिन मुझे लगता है कि यह NTFS विभाजन के साथ भी काम कर रहा है) और आपके विभाजन को इसमें लगाया जाएगा। यदि आप plugdevअपने सिस्टम पर एक समूह रखते हैं तो यह उपयोगकर्ताओं के लिए R / W है। साथ ही, गर्म अनप्लगिंग के मामले में डेटा हानि के जोखिम को सीमित करने के लिए उपकरणों को सिंक्रोनस मोड में माउंट किया जाता है।

जब डिवाइस को हटा दिया जाता है, तो यह अनमाउंट हो जाता है और निर्देशिका को हटा दिया जाता है /media

इसके अलावा, udevघटनाओं की निगरानी करने के लिए उपकरण udevadm monitor, जैसे विकल्पों के साथ --envया --property:

$ udevadm monitor --env

यह डेबियन और आर्च दोनों पर परीक्षण और ठीक काम कर रहा है, लेकिन संभवतः उन सभी वितरणों पर काम करते हैं जो भरोसा करते हैं udev


मुझे लगता है कि + r को "x" से इसे "निष्पादन योग्य (sudo chmod + r /lib/udev/storage-autounmount.sh) पर सेट किया जाना चाहिए"
जेरेमी

मेरे पास एक नई jessie इंस्टॉल है, जिस पर मैंने आपके निर्देशों का बारीकी से पालन किया है, लेकिन पुनः आरंभ करने के बाद भी tty1 से आटोमाउंट नहीं हो सकता है, (जो आपके निर्देशों में नहीं है, लेकिन मुझे कोई आटोमाउंट प्री-रिस्टार्ट भी नहीं मिला)। USB ड्राइव डालने से पता चलता है (मुझे कंसोल संदेश मिलते हैं), लेकिन / मीडिया / (cdrom को छोड़कर) में कुछ भी दिखाई नहीं देता है। मैं यूएसबी ड्राइव को मैन्युअल रूप से माउंट कर सकता हूं, इसलिए मुझे पता है कि यह भी काम करता है। [निम्नलिखित टिप्पणी में जारी रखा]
TomRoche

[पिछली टिप्पणी से जारी] मेरे पास पैकेज = udev स्थापित है, dirs = {/ etc / udev / rules.d /, / lib / udev /} पूर्व-आबादी है, और $ $ATH में निष्पादन योग्य = udevadm है। मैं जानना चाहता हूं (1) किस डेबियन रिलीज में आपने यह काम किया है? (मैं मट्ठा ग्रहण कर रहा हूँ) (2) डेबियन पैकेज के अलावा आपने क्या स्थापित किया है udev?
टॉमरोच जूल

@TomRoche उस समय वायजे था, वास्तव में, और मेरे पास कोई विशेष पैकेज स्थापित नहीं था, मैं एक न्यूनतर सेटअप बनाने की कोशिश कर रहा था और उन पैकेजों का उपयोग करने से यथासंभव बचने की कोशिश कर रहा था जो न्यूनतम इंस्टॉल द्वारा प्रदान नहीं किए गए थे। मुझे पुनरारंभ करने की आवश्यकता नहीं थी, कि यह मेरे निर्देशों में क्यों नहीं है। यह काफी लंबा समय है जब मैंने इसमें डुबकी नहीं ली है ... मैं जल्द ही फिर से कोशिश कर सकता हूं।
cedbeu

1

मुझे लगता है कि इसकी बहुत देर हो चुकी है, लेकिन अगर किसी को इसकी आवश्यकता है तो मैं इसे पोस्ट करूंगा: (मेरा पहला StackExchange उत्तर भी)

कई स्थानों पर समाधान की जाँच करने के बाद, मुझे आर्क विकी में एक सरल समाधान मिला:

आर्क विकी से लिंक ।

हम एक udisks2 नियम डिफ़ॉल्ट बदलने के लिए से निर्देशिका माउंट जोड़ सकते हैं /run/media/$USER/करने के लिए /media/<Label>

निम्न नियम /etc/udev/rules.d/को नाम के साथ जोड़ें 99-udisks2.rules:

ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"

तब हम ऑटोमोटिव के लिए बस उडिस्की जैसा एक सरल उपकरण स्थापित कर सकते हैं ।


नमस्कार आपका यहां स्वागत है। अपने विकल्प के लिए धन्यवाद। उडिस्की के लिए, मैं वास्तव में एक पूर्ण कमांड लाइन विकल्प (कोई Xorg और न ही सिस्टम पर उपलब्ध कोई ग्राफ़िकल इंटरफ़ेस) चाहता था। और ... प्रश्न 6.5 वर्ष पुराना है (ओउ, गोश!), मुझे लगता है कि चीजें अब बदल गईं :) लेकिन वैसे भी, +1 आपके पहले उत्तर के लिए, धन्यवाद।
cedbeu

1

कृपया ArchWiki Udev पेज देखें । आप mountUdev नियमों या Udev नियमों द्वारा निष्पादित स्क्रिप्ट से निष्पादित करने वाले नहीं हैं ।

हालाँकि, जैसा कि udv-Media-automount प्रोजेक्ट में दिखाया गया है , इसे Udev शासन से एक Systemd इकाई में शामिल करके इसे करना बहुत सरल है, जो तब एक स्क्रिप्ट को कॉल करता है जो माउंटिंग करता है। Udisks2 और अन्य समाधानों के विपरीत, udv-media-automount सरल केस की ओर केंद्रित है, जहाँ आप rootआवश्यक रूप से उपयोगकर्ता को डेस्कटॉप वातावरण या "उपयोगकर्ता सत्र" के लिए प्रतीक्षा किए बिना कुछ माउंट करना चाहते हैं । यह वही प्रतीत होता है जो ओपी पूछ रहा है, और मैंने इसे कार्यात्मक और समझने में आसान पाया।


अच्छा आपका धन्यवाद। यह एक बहुत पुराना प्रश्न है जो मैंने पूछा है (लगभग 7 साल पहले ... मुझे छोटा नहीं लगता ^ ^)। लेकिन फिर भी, मैं आपके प्रस्ताव पर एक नज़र डालूंगा। मुझे लगता है कि तब से सिस्टमैड वातावरण अधिक परिपक्व हो गया। धन्यवाद, मैं इसे देख लूंगा!
cedbeu

0

मुझे संपादन / etc / fstab फ़ाइल द्वारा ऐसा करने का एक तरीका मिला। एक साधारण प्रविष्टि जैसा दिखता है:

/dev/sdb1 /media/robot/hdd1 ntfs defaults 0 0

<file system> <mount point> <type> <options> <dump> <pass>


Mounts में /etc/fstabकेवल बूट पर स्वचालित रूप से माउंट किया जाता है।
ग्रीम

@ ग्रेमे, मेरे पास एक sdcard है जिसे मैं / etc / fstab के माध्यम से माउंट करता हूं। परीक्षण के रूप में, मैंने अपने कंप्यूटर से एसडीकार्ड को हटाने और शारीरिक रूप से हटाने की कोशिश की। मैंने सत्यापित किया कि माउंट अब 'df' के माध्यम से नहीं दिखाया गया है। जब मैंने अपना एसडीकार्ड पुनः डाला, तब माउंट फिर से प्रकट हुआ, हालांकि मैंने इसे स्पष्ट रूप से नहीं बताया था। यह उबंटू 16.04 पर है।
गीनो

@Gino, Ubuntu ने पिछले कुछ समय से डिफ़ॉल्ट रूप से ऑटो माउंटिंग किया है।
ग्रीम

@Gememe, ऐसा लगता है कि उबंटू आटोमैटिक सही माउंट / etc / fstab से उठा रहा है, अगर यह वहां मौजूद है। तो, कम से कम उबंटू 16.04 पर, माउंट स्वचालित रूप से बूट पर मुहिम शुरू की है और बाद में यूएसबी पोर्ट में फिर से सम्मिलन, अगर कोई हो ..
गीनो

@ मैं कुछ समय के लिए उबंटू का उपयोग नहीं किया है, लेकिन मुझे पूरा यकीन है कि यह आपके sd कार्ड को fstab में जो भी है की परवाह किए बिना स्वचालित कर देगा। Fstab आधुनिक सिस्टम पर अतिरिक्त डिस्क की तुलना में कोर सिस्टम तत्वों को स्थापित करने के बारे में अधिक है।
ग्रीम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.