ऑटोमैटिकिंग यूएसबी डेबियन पर चिपक जाती है


10

मैं एक प्लग कंप्यूटर (इसलिए एसएसएच केवल, कोई जीयूआई) पर डेबियन स्क्वीज़ नहीं चला रहा हूं और जो मैं करने की कोशिश कर रहा हूं वह यह है कि जब यूएसबी स्टिक प्लग किया जाता है, तो यह स्वचालित रूप से माउंट हो जाता है।

मैंने autofsजो किया है, वह स्थापित है जो मैं इकट्ठा करता हूं, जो कि स्वचालित रूप से संभालता है, बशर्ते यह जानता है कि डिवाइस कहां है /dev

समस्या यह है कि यूएसबी स्टिक हमेशा एक ही डिवाइस के नाम पर नहीं होती है। कभी-कभार /dev/sdc1, कभी-कभी /dev/sdd1, आदि।

मैं इसे इकट्ठा करने के लिए इकट्ठा हूं, मुझे यह udevसुनिश्चित करने के लिए उपयोग करने की आवश्यकता है कि यूएसबी स्टिक को हमेशा एक ही नाम दिया जाए।

मुझे निम्नलिखित जानकारी मिली udevadm:

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/block/sdd/sdd1':
    KERNEL=="sdd1"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{partition}=="1"
    ATTR{start}=="63"
    ATTR{size}=="129339"
    ATTR{ro}=="0"
    ATTR{alignment_offset}=="0"
    ATTR{discard_alignment}=="0"
    ATTR{stat}=="      31      244      275      190        0        0        0        0        0      190      190"
    ATTR{inflight}=="       0        0"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0/8:0:0:0/block/sdd':
    KERNELS=="sdd"
    SUBSYSTEMS=="block"
    DRIVERS==""
    ATTRS{range}=="16"
    ATTRS{ext_range}=="256"
    ATTRS{removable}=="1"
    ATTRS{ro}=="0"
    ATTRS{size}=="129439"
    ATTRS{alignment_offset}=="0"
    ATTRS{discard_alignment}=="0"
    ATTRS{capability}=="51"
    ATTRS{stat}=="      56      727      783      520        0        0        0        0        0      520      520"
    ATTRS{inflight}=="       0        0"
    ATTRS{events}=="media_change"
    ATTRS{events_async}==""
    ATTRS{events_poll_msecs}=="-1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0/8:0:0:0':
    KERNELS=="8:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{device_blocked}=="0"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="3"
    ATTRS{vendor}=="        "
    ATTRS{model}=="Flash Disk      "
    ATTRS{rev}=="2.00"
    ATTRS{state}=="running"
    ATTRS{timeout}=="30"
    ATTRS{iocounterbits}=="32"
    ATTRS{iorequest_cnt}=="0x90"
    ATTRS{iodone_cnt}=="0x90"
    ATTRS{ioerr_cnt}=="0x0"
    ATTRS{modalias}=="scsi:t-0x00"
    ATTRS{evt_media_change}=="0"
    ATTRS{queue_depth}=="1"
    ATTRS{queue_type}=="none"
    ATTRS{max_sectors}=="240"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0':
    KERNELS=="target8:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8':
    KERNELS=="host8"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0':
    KERNELS=="1-1.2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb-storage"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{bInterfaceClass}=="08"
    ATTRS{bInterfaceSubClass}=="06"
    ATTRS{bInterfaceProtocol}=="50"
    ATTRS{modalias}=="usb:v1976p6025d0100dc00dsc00dp00ic08isc06ip50"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2':
    KERNELS=="1-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="383"
    ATTRS{idVendor}=="1976"
    ATTRS{idProduct}=="6025"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="11"
    ATTRS{devpath}=="1.2"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="197"
    ATTRS{idVendor}=="1a40"
    ATTRS{idProduct}=="0101"
    ATTRS{bcdDevice}=="0111"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{devpath}=="1"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="4"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{product}=="USB 2.0 Hub"

  looking at parent device '/devices/platform/orion-ehci.0/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="24"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="1"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.38.8 ehci_hcd"
    ATTRS{product}=="Marvell Orion EHCI"
    ATTRS{serial}=="orion-ehci.0"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/platform/orion-ehci.0':
    KERNELS=="orion-ehci.0"
    SUBSYSTEMS=="platform"
    DRIVERS=="orion-ehci"
    ATTRS{modalias}=="platform:orion-ehci"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""

मैं udevयूएसबी स्टिक को नाम लेने के लिए मजबूर करने के लिए नियम लिखने की कोशिश कर रहा हूं, /dev/usbstickलेकिन अभी तक मैं सफल नहीं हुआ हूं।

क्या कोई इस नियम से मदद कर सकता है कि मुझे अपने नियम फ़ाइल में निर्दिष्ट करने की आवश्यकता है कि इस USB छड़ी को हमेशा एक ही नाम प्राप्त करने के लिए क्या चाहिए?

- या, यूएसबी स्टिक को स्वचालित करने का बहुत आसान तरीका है कि मैं पूरी तरह से गायब हूं?

अपडेट करें

ठीक है, इसलिए मैंने कुछ प्रगति की है। मैंने निम्नलिखित नियम जोड़ा:

SUBSYSTEMS=="scsi", ATTRS{model}=="Flash Disk ", DRIVERS=="sd", NAME="usbstick-%k" RUN+="mkdir /mnt/usbstick-%k; mount /dev/usbstick-%k /mnt/usbstick-%k"

मुझे पता है कि इसे जोड़ने / हटाने के संदर्भ में अभी भी कुछ काम करने की आवश्यकता है, लेकिन यह अभी के लिए एक मूल परीक्षण है।

इस का असर है कि अब मैं तीन नए डिवाइस नोड्स पाने के लिए प्रबंधन है /dev, अर्थात् /dev/usbstick-sdc, /dev/usbstick-sdc1और usbstick-sg2

हालाँकि, मैंने पाया है कि RUNअनुभाग में कोड केवल एक बार निष्पादित होता है और बस एक निर्देशिका बनाता है mnt/usbstick-sdc। मैंने यह भी पाया है कि निर्देशिका हमेशा खाली है, इसलिए कुछ स्पष्ट रूप से अभी भी गलत हो रहा है! (हालांकि मैं प्रगति कर रहा हूं)।


क्या वह दूसरा /dev/sdc1माना जाता था sdd1? और आप blkidड्राइव को विशिष्ट रूप से पहचानने के लिए उपयोग कर सकते हैं (ठीक है, वास्तव में विभाजन; यह आपके द्वारा सुधार किए जाने पर बदल जाएगा)।
केविन

ठीक है, बस तय है कि। मैं बस इतना करना चाहता हूं कि जब एक यूएसबी स्टिक प्लग की जाती है, तो यह कुछ डायरेक्टरी पर चढ़ जाती है। मुझे पूरा यकीन है कि मुझे udevप्रत्येक विभाजन के लिए डिवाइस नोड्स बनाने के लिए एक नियम का उपयोग करना चाहिए , लेकिन मुझे यकीन नहीं है कि udevadmआउटपुट किस स्तर के लिए नियम बना रहा है!
jon

आपका नियम बहुत जटिल लग रहा है। केवल एक ACTION==, एक KERNEL==और एक के साथ एक सरल बनाने की कोशिश करें ATTRS{something}==(यह पूरी तरह से करने योग्य है - यह वही है जो मैं उपयोग करता हूं)। इसके अलावा, आदेशों की श्रंखला में शामिल एकल स्क्रिप्ट को चलाने पर विचार करें RUN+=
रोज़्ज़ेट्रिजेविज़

सलाह के लिए धन्यवाद, लेकिन सवाल यह है: मुझे अपने नियम के साथ किस स्तर के पेड़ के पेड़ को निशाना बनाना चाहिए? यह सब बहुत भ्रामक लगता है और इसे समझाने के लिए वास्तव में ऑनलाइन बहुत अधिक जानकारी नहीं है। मैं वास्तव में आपने मुझे अब तक इसे समझाने के लिए जो समय लिया है, उसकी सराहना करता हूं, मुझे लगता है कि मैं लगभग वहां हूं लेकिन लक्ष्यीकरण के लिए बस स्तर गायब है।
जॉन

मैंने अब यह बहुत ही बुनियादी नियम की कोशिश की है: KERNEL=="sd??", NAME="%k", RUN+="mkdir /mnt/usbstick-%k; mount /dev/usbstick-%k /mnt/usbstick-%k"- लेकिन नहीं, बेशक यह काम नहीं करता है। मैं अब लगभग पूरा दिन व्यतीत करने के बाद तेजी से निराश हो रहा हूँ बस काम करने की कोशिश कर रहा हूं कि कैसे एक यूएसबी स्टिक प्राप्त करने के लिए जो अपने आप को माउंट करने के लिए प्लग किया गया है। क्या चीजें वास्तव में यह मुश्किल होनी चाहिए? इसका आउटपुट udevadm test /sys/block/sddनिश्चित रूप से - व्यावहारिक रूप से अपठनीय है, इसलिए मेरे पास यह जानने का कोई साधन नहीं है कि मैं कहां गलत हूं। क्या कोई मुझे इस पर सही दिशा में इशारा कर सकता है?
जोंह

जवाबों:


13

यह पता लगाया जाना चाहिए कि इस तरह की सामान्य समस्या का समाधान करने के लिए बहुत आसान तरीका है, और वहाँ है। यहाँ मैंने अपने wheezy / sid सर्वर पर क्या प्रयास किया है:

sudo apt-get install usbmount

USB छड़ी में प्लग, किया! मेरी छड़ी अब के माध्यम से सुलभ है /media/usb

Btw, usbmount में मैन पेज नहीं है, कृपया /usr/share/doc/usbmount/README.gzइसके बजाय पढ़ें । ऐसा लगता है कि usbmount आपकी छड़ी को डिफ़ॉल्ट रूप से सिंक विकल्प के साथ मापता है। यह async और चलाने यह माउंट करने के लिए एक पूरी बहुत कुछ अपने छड़ी के लिए बेहतर हो सकता है syncया umountयह अनप्लग करने से पहले। वह विन्यास योग्य है।


यह भी देखेंpumount
एलेक्स

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

डेबियन जेसी पर चल रहा है, usbmount इसे माउंट करने के लिए कभी नहीं लगता है। पैकेज पेज कहता है कि यह अब अप्रमाणित है, और मैं सिस्टमड चला रहा हूं। मुझे आश्चर्य है कि अगर यह पैकेज सिस्टमड परिवर्तनों के साथ काम नहीं करता है?
ट्रैविस ग्रिग्स

वास्तव में, जेसी पर मेरे लिए काम नहीं किया, मेरा जवाब देखें (यह: ddumont.wordpress.com/2015/09/27/… ने काम किया)
पॉल

2

ध्यान दें कि आपके पास संलग्न किसी भी संभावित पेनड्राइव का प्रतिनिधित्व करने के लिए सिर्फ एक डिवाइस नोड नहीं हो सकता है। क्या होगा यदि आप उनमें से दो को प्लग करते हैं? या जब पेनड्राइव में एक से अधिक विभाजन हैं?

आम तौर पर, आप एक कस्टम-नामित डिवाइस नोड बनाने के लिए क्या उपयोग करते हैं, है SYMLINK+=। यह कैसे उपयोग किया जाता है यह देखने के लिए नियमों में इसके लिए grep grep SYMLINK /etc/udev/rules.d/*:। जैसा कि सभी udv- ट्रिगर कमांड्स में, आप कुछ सार्थक चर का उपयोग कर सकते हैं जो इसमें वर्णित हैं man udev। आप महसूस कर सकते हैं कि आपको वास्तव में डिवाइस को एक कस्टम नाम देने की आवश्यकता नहीं है, क्योंकि आप इसे किसी स्क्रिप्ट को नाम दे सकते हैं ( %kचर के माध्यम से )।

ऑटो-माउंट समाधान के लिए, UAM पर एक नज़र है , जिसे मैंने इस प्रश्न के उत्तर में थोड़ा वर्णित किया है ।


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

फिर मेरे द्वारा किए गए संपादन (मध्य भाग) पर एक नज़र डालें। क्या यह पर्याप्त होगा?
rozcietrzewiacz

यह भी ध्यान दें कि UAM वास्तव में एक कार्यक्रम नहीं है - यह udevस्क्रिप्ट के साथ अच्छे नियमों का एक समूह है । आप नियमों पर एक नज़र डाल सकते हैं और आसानी से उन्हें अपनी आवश्यकताओं के अनुकूल बना सकते हैं।
rozcietrzewiacz

सलाह के लिए धन्यवाद। एक और बात: क्या आपको लगता है कि आप मेरे आउटपुट को देख सकते हैं udevadmऔर मुझे बता सकते हैं कि वह कौन सा उपकरण है जिसे मुझे वास्तव में अपने नियम से लक्षित करना चाहिए? मैंने जितने भी उदाहरण ऑनलाइन देखे हैं, वे सभी बहुत छोटे पेड़ों को शामिल करने के लिए प्रतीत होते हैं और प्रत्येक उदाहरण डिवाइस के एक अलग स्तर को लक्षित करने के लिए लगता है, जिसमें से कोई भी स्पष्टीकरण नहीं होना चाहिए कि क्यों और किसी को लक्षित किया जाना चाहिए और क्यों।
जॉन

बस ऊपर एक अद्यतन जोड़ा गया, कोई विचार? धन्यवाद!
जॉन

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] 
# for automounter support

ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    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", \
    SYMLINK+="usbdisks/%k", MODE:="0660"


# When device is removed, also remove /media/usb/<...>
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    RUN+="/bin/rm /media/usb/%k"

यह क्या करता है: यह दो सिम्लिंक बनाता है, एक USB स्टोरेज डिवाइस विभाजन के लिए "/ dev / usbdisks / <...>" के तहत।

दूसरा सिमलिंक "/ मीडिया / usb / <...>" से "/ मीडिया / ऑटोब / / ...>" से लिंक हो जाएगा। यह ऑटोमोटिव सपोर्ट के लिए किया गया है (चरण 2 देखें)।

यह सुनिश्चित करने के लिए कि udv इन नियमों का उपयोग करता है

sudo udevadm control --reload-rules

नोट: एक ही usb स्टिक के लिए एक ही नाम: संभव है लेकिन शायद खतरनाक: आप उपरोक्त UDEV नियमों में "% k" के बजाय "$ env {ID_FS_LABEL_ENC}" का उपयोग कर सकते हैं। यह / मीडिया / usb / <... बनाने के लिए वॉल्यूम लेबल का उपयोग करेगा, लेकिन क्या होगा यदि आप दो यूएसबी स्टिक में प्लग करते हैं और दोनों एक ही वॉल्यूम लेबल का उपयोग करते हैं ...

इस udev नियम फ़ाइल के साथ USB संग्रहण डिवाइस विभाजन को स्वचालित करने के लिए सब कुछ सेटअप है। ध्यान दें कि अभी, डिवाइस को स्वचालित रूप से (जानबूझकर) नहीं किया जाएगा। इसका उपयोग करने के बाद इसे स्वचालित कर दिया जाएगा

चरण 2)

ऑटोऑउट / मीडिया / ऑटोसब / <...> के लिए ऑटोफ़ोटो सेटअप करें: मैंने अपनी "/etc/auto.master" फ़ाइल (Ubuntu 12.04 के लिए) में निम्न पंक्ति जोड़ी:

/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" (शायद USB स्टिक के लिए सबसे आम), "ntfs" और "ext4" फ़ाइल सिस्टम के लिए नमूना कोड शामिल किया। बेशक अधिक फ़ाइल सिस्टम का समर्थन करने के लिए इसे बढ़ाना काफी आसान है।

चरण 3)

वैकल्पिक ... "बेदखल करना" == अपनी usb स्टिक (s) (या अपने usb स्टिक पर विभाजन) को अनमाउंट करें, / sbin / usbeject के तहत एक स्क्रिप्ट बनाएं:

#!/bin/bash
# make sure everything is written to USB disk(s)
sync
# sending SIUGSR1 to automount will unmount the media
killall -s SIGUSR1 /usr/sbin/automount

इस स्क्रिप्ट के साथ आप "सुडो usbeject" का उपयोग सभी आरोहित USB डिवाइस विभाजन को अनमाउंट करने के लिए कर सकते हैं (ऑटोमेट को उन्हें अनमाउंट करने के लिए कहकर)।

बेशक आप बस यह सुनिश्चित कर सकते हैं कि विभाजन कहीं भी उपयोग नहीं किया गया है; आटोमोटिव 60 सेकंड के समय के बाद विभाजन को अनमाउंट करेगा ...

यहां वास्तविक चाल "/ मीडिया / यूएसबी" से "/ मीडिया / ऑटोसब" तक सीमलिंक का उपयोग करना है:

  • "/ मीडिया / यूएसबी" सिम्लिंक udv द्वारा बनाए जाएंगे, एक उपयोगकर्ता को एक सरल अवलोकन देंगे जो USB संग्रहण डिवाइस विभाजन हैं
  • यदि आप इसे मीडिया / USB के माध्यम से उपयोग करते हैं, तो AutoFS डिमांड पर विभाजन को स्वचालित कर देगा
  • स्क्रिप्ट किए गए "auto.usb" फ़ाइल के साथ आप किसी भी तरह की फ़ाइल प्रणाली का समर्थन कर सकते हैं और इसके अतिरिक्त आप किसी भी प्रकार की नामकरण योजना का समर्थन करने में सक्षम हैं।
  • यह दृष्टिकोण कई विभाजन के साथ यूएसबी स्टिक्स का समर्थन करता है, भले ही ये विभाजन अलग-अलग फ़ाइल सिस्टम प्रकारों का उपयोग करें।

क्या मैं आपको दिखा सकता हूं कि ऑटोफोटो संकेत मेरे / घर / फ्रैंक निर्देशिका को कैसे नष्ट कर देता है? धन्यवाद।
फ्रैंक

1

मेरे अपने प्रश्न का उत्तर देने के लिए क्षमा करें, और योगदान के लिए rozcietrzewiacz के कारण बहुत धन्यवाद , लेकिन मैं अंततः ऑनलाइन पढ़ने के घंटों के बाद निम्नलिखित नियम का उपयोग करके कुछ बड़ी प्रगति करने में कामयाब रहा:

SUBSYSTEMS=="scsi", KERNEL=="sd[a-h]1", SYMLINK+="removable", RUN+="/bin/mount /dev/removable /path/to/mount"

यह किसी भी SCSI डिवाइस के पहले विभाजन को माउंट करेगा। मुझे लगता है कि अगले प्रश्न में कई विभाजन कैसे माउंट किए जाएंगे, लेकिन यह एक और दिन के लिए एक और मुद्दा है।


1
यह एक अच्छा नियम नहीं है। यह हार्ड ड्राइव के विभाजन से भी मेल खाएगा । एक removableविशेषता है जिसके लिए आपको परीक्षण करना चाहिए, और इसके blockबजाय scsi
rozcietrzewiacz

1

मैंने पाया है कि सबसे अच्छा जवाब वास्तव में पदावनत हो गया है, क्योंकि यह बनाए नहीं रखा गया है और जेसी से काम नहीं करता है (दुर्भावना से टिप्पणी देखें)

मेरे लिए (जेसी पर), इस ब्लॉग में समाधान ने एक आकर्षण की तरह काम किया।

"Ddumont" को श्रेय, लेकिन भविष्य में संभावित लिंक सड़ांध से निपटने के लिए, अपने ब्लॉग / उत्तर का अवलोकन यहां पोस्ट करना।

निम्न पंक्ति को इसमें जोड़ें /etc/fstab

/dev/sr0 /media/bluray auto defaults,nofail,x-systemd.automount 0 2

आप नैनो का उपयोग करके ऐसा कर सकते हैं:

sudo nano /etc/fstab

स्पष्टीकरण:

/dev/sr0डिवाइस फ़ाइल है। आप udv द्वारा / देव / डिस्क / बाय-आईडी में एक प्रतीकात्मक लिंक सेटअप का भी उपयोग कर सकते हैं। आपको इसे अपनी डिवाइस फ़ाइल ( sudo fdisk -lउपकरणों को सूचीबद्ध करने के लिए) के अनुसार बदलना होगा

/media/blurayआरोह बिंदु है। आप दूसरा माउंट पॉइंट चुन सकते हैं

nofail ऑप्टिकल ड्राइव में डिस्क के बिना बूट होने पर विफलता रिपोर्ट से बचने के लिए आवश्यक है

x-systemd.automount सिस्टम डिस्क को स्वचालित रूप से सम्मिलित डिस्क को माउंट करने का विकल्प है

Noauto निर्दिष्ट न करें: यह सिस्टमड को स्वचालित रूप से डिस्क को माउंट करने से रोकता है, जो उद्देश्य को हरा देता है।

परीक्षा

journalctl -x -fसिस्टमड के साथ क्या चल रहा है यह जांचने के लिए एक टर्मिनल में कमांड चलाएँ

के साथ पुनः लोड करें sudo systemctl daemon-reload

अपने ऑप्टिकल ड्राइव में डिस्क लोड करें

फिर, जर्नलक्ट को कुछ इस तरह दिखाना चाहिए:

Sept. 27 16:07:01 frodo systemd[1]: Mounted /media/bluray.

आगे की

सफलतापूर्वक NTFS ड्राइव माउंट करने के लिए मुझे ntfs-3G (पुराने ntfsprogs) को स्थापित करना पड़ा

sudo apt-get install ntfs-3g

मुझे काम करने के लिए एक OSX स्वरूपित USB पाने के लिए hfsprogs स्थापित करने की आवश्यकता नहीं थी, लेकिन आपको इसे स्वयं जांचना चाहिए।


यह USB-HDD के साथ मेरे डेबियन जेसी पर स्वचालित रूप से माउंट नहीं होता है।
buhtz

@buhtz लेकिन मैन्युअल रूप से बढ़ते काम करता है? ऊपर दिए गए चरणों ने वास्तव में केवल मेरे लिए ड्राइव पर काम किया जो स्टार्टअप पर सिस्टम में थे, न कि "गतिशील रूप से" यूएसबी के सिस्टम को चलाने और हटाने के दौरान "गतिशील रूप से"।
पॉल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.