बढ़ते USB डिस्क स्वचालित रूप से (यह कैसे काम करता है)


12

पृष्ठभूमि: मैं केवल पढ़ने के लिए एक USB डिस्क को माउंट करने की कोशिश कर रहा हूं, लेकिन जब मैं डिस्क को प्लग करता हूं तो मेरा ubuntu इंस्टॉल होता है।

मैं डिस्क को मैन्युअल रूप से अनमाउंट कर सकता हूं और इसे मैन्युअल रूप से रिमूव कर सकता हूं क्योंकि केवल umount और माउंट कमांड के साथ पढ़ा जाता है, लेकिन यह मज़ेदार नहीं है। क्या कोई मुझे बता सकता है कि वास्तव में usb आरोहण एक विशिष्ट लिनक्स सिस्टम पर कैसे किया जाता है (udpur? ऐतिहासिक पृष्ठभूमि भी अच्छी है) और शायद मैं डिस्क आरओ पढ़ने में मुझे इस प्रक्रिया को कैसे मोड़ सकता हूं?

धन्यवाद।

संपादित करें: मैं सूक्ति का उपयोग कर रहा हूँ अगर वह बिल्कुल मदद करता है।
Edit2: मेरी जल्दबाजी में मैं थोड़ी और जानकारी देना भूल गया। यह वही है जो डिस्क 'माउंट' के आउटपुट से दिखता है।

/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

Edit3: यह भी अपने तरीके से भरोसेमंद हो सकता है। माउंट आउटपुट में मेरे पास निम्नलिखित भी हैं:

gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)  

मैंने सोचा था कि यह उपरोक्त fuseblk माउंट से संबंधित हो सकता है, लेकिन मुझे जो पता चला वह यह था।

Gvfs ग्नोम वर्चुअल फ़ाइल सिस्टम है। यह एक वर्चुअल फाइलसिस्टम है जो पहले से मौजूद कर्नेल vfs के ऊपर बनाया गया है। gvfs GIO लाइब्रेरी (जो VFS API है) का उपयोग फाइल, डिवाइस, रिमोट नेटवर्क लोकेशन आदि को एक्सेस करने के लिए करता है। इस मामले में ऊपर ('gvfs-fuse-daemon') gvfs FUSE का उपयोग फाइल / लोकेशन / डिवाइस को माउंट करने के लिए करता है। यह अनिवार्य रूप से होता है जब आप Nautilus में एक दूरस्थ नेटवर्क कनेक्शन माउंट करते हैं। यह स्थान (अंदर?) .Gvfs निर्देशिका को माउंट करने के लिए FUSE का उपयोग करेगा, और फिर यह नए माउंट के साथ संचार करने के लिए सूक्ति आभासी फ़ाइल सिस्टम परत के साथ संचार करेगा।

मूल रूप से यह संरचना उपयोगकर्ता को नए स्थानों को गतिशील रूप से माउंट करने और नॉटिलस के माध्यम से उनके साथ बातचीत करने की अनुमति देती है।

बस संदर्भ के लिए: FUSE एक उपयोक्ता फ़ाइल सिस्टम है, यह उपयोगकर्ता को रूट को चलाने की अनुमति देता है, तब भी जब वह रूट नहीं है)

तो वह मुझे कहाँ छोड़ता है? खैर LaCie डिस्क को fuseblk प्रकार के साथ लगाया जा रहा है। यह सिर्फ एक ब्लॉक डिवाइस है जिसे फ्यूज के साथ लगाया जाता है। तो कुछ डेमॉन ने ड्राइव को तब ऑटोडेट किया है जब इसे प्लग किया गया था और फिर आगे जाकर मेरे ब्लॉक डिवाइस को माउंट करने के लिए फ्यूज चलाया। तो डेमॉन यह क्या है, और इसे कैसे कॉन्फ़िगर किया गया है (मेरा अनुमान है कि यह कुछ आंतरिक सूक्ति है) सबसे महत्वपूर्ण सवाल है। एक गौण प्रश्न यह है कि सिस्टम ने एक नई सम्मिलित usb डिस्क का स्वचालित रूप से कैसे पता लगाया, लेकिन मुझे लगता है कि थोडा एक तरफ और बहुत निचले स्तर पर है (पढ़ें: udev?)।

लिंक:


क्या / मीडिया / LaCie फ़ाइल सिस्टम और / या / dev / sdb1 डिवाइस के लिए fstab प्रविष्टि है? / Dev / sdb1 को वैसे भी लेबल किया गया है (e2label / dev / sdb1)?
टोक

नहीं, कोई fstab प्रविष्टि नहीं है। मेरा मानना ​​है कि इसे लेबल किया जाता है क्योंकि यह / मीडिया / LaCie पर चढ़ जाता है। मुझे यह पता लगाने के लिए ntfslabel स्थापित करने की आवश्यकता है, लेकिन मैं काम छोड़ने वाला हूं। यह LaCie के रूप में मेरे डेस्कटॉप पर भी आता है।
fthinker

जवाबों:


3

मैंने अपने कंप्यूटर पर ऐसा करने की कोशिश की और यह काम कर रहा है :)

पहले मुझे अपने डिवाइस के लिए एक नाम मिलता है:

ls -l /proc/disk/by-id/

मेरे मामले में यह / proc / disk / by-id / usb-09a6_8001 है

मैंने इस लाइन को / etc / fstab में जोड़ा:

/dev/disk/by-id/usb-09a6_8001   /media/macle ext2 ro,users 0 2

और यह काम कर रहा है, जब मैं अपनी usbkey को प्लग करता हूं, तो यह आरओ माउंटेड होता है और मेरे उपयोगकर्ता के स्वामित्व में होता है।


धन्यवाद profy :) लेकिन मेरे सवाल का मुख्य जोर अत्यधिक निराशा को कम करना है जो मुझे लगता है कि हर बार मुझे यह समझने के लिए मजबूर किया जाता है कि कैसे आटोमाउंट और यूएसबी डिवाइस काम करते हैं। मैं इन जटिल प्रणालियों के पीछे के जादू को समझने के लिए यहाँ हूँ। इसके अलावा, fstab और usb उपकरणों का उपयोग करना थोड़ा मुश्किल है क्योंकि वे हमेशा स्टार्ट-अप में प्लग इन होने की गारंटी नहीं देते हैं!
fthinker

1
मुझे नहीं पता कि यह कैसे काम करता है, लेकिन मुझे पूरा यकीन है कि नए उपकरणों को एक udv नियमों से पता चलता है, /etc/udev/rules.d/ और /lib/udev/rules.d/ पर एक नज़र डालें।
प्रोफेसरी

2

आजकल डिफॉल्ट सॉल्यूशन जहां तक ​​है, मुझे पता है udiskकि डेमन एब्स के साथ-साथ कमांडलाइन इंटरफेस भी उपलब्ध कराता है । वहाँ भी कई udisks आवरण और आटोमोटिव उपलब्ध हैं।

आमतौर पर आप udiskखुद को कॉन्फ़िगर नहीं करते हैं क्योंकि यह सिर्फ वही करता है जो आपको बताया गया है ताकि आपको सूक्ति में देखना पड़े। शायद सूक्ति डिस्क उपयोगिता आपको माउंट फ़्लैग को संशोधित करने / बदलने की अनुमति देती है।


2

जैसा कि उलरिच डांगेल ने कहा, udisks आजकल संदर्भ होना चाहिए। मैंने अभी तक यह नहीं देखा है कि इसे कैसे अधिसूचित किया गया है (udev-> dbus-> udisks?), लेकिन मैन्युअल रूप से इसका उपयोग आपके द्वारा आवश्यक विकल्पों के साथ डिवाइस को माउंट करने के लिए किया जा सकता है।

एक उपयोगकर्ता को वॉल्यूम के साथ क्या करने की अनुमति दी जाती है, यह देखने के लिए उडीस्क पॉलकिट से बात करते हैं। मैं यहां अनुमान लगा रहा हूं, लेकिन अगर हमें नामित डिस्क / डिवाइस के लिए गुण सेट करने के लिए जगह मिल सकती है तो यह काम करना चाहिए।

Udisksctl का उपयोग करते हुए, आपके उपयोगकर्ता को आपके द्वारा आवश्यक विकल्पों के साथ डिवाइस को माउंट करने में सक्षम होना चाहिए, कुछ इस तरह से:

udisksctl माउंट -b / dev / sdxy -o ro / Mountpoint

फिर भी मैं विकल्प नहीं रखता।

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

यह fstab में एक प्रविष्टि जोड़ता है (यह वह जगह है जहां मैं इसे एक सुरुचिपूर्ण समाधान के रूप में नहीं देखता हूं, मुझे लगता है कि इसे उपयोगकर्ता कॉन्फ़िगरेशन के रूप में रहना चाहिए सिस्टम चौड़ा नहीं है), मैं ड्राइव में प्लग करता हूं और यह स्वचालित रूप से चयनित माउंट बिंदु पर विकल्पों के साथ घुड़सवार होता है मैं सूक्ति डिस्क उपयोगिता पर बचाया।


आपके साथ क्या मतलब है यह देखना है कि इसे कैसे अधिसूचित किया जाता है? क्या कदम याद आ रहा है?
उलरिच डैंगेल

और यह नहीं है udev→dbus→udiskलेकिनudev/uevent→udisk→dbus
उलरिच डेंगल

मेरा मतलब था कि मैं वास्तव में निश्चित नहीं था और मैं इसे सत्यापित करना चाहता था लेकिन अब मैं देखता हूं कि मैं 100% गलत नहीं था।
tripledes

[हड़ताल] कृपया उस लाइन को दिखाएं जिसे fstab में जोड़ा गया था। मैं पुष्टि करना चाहूंगा कि मुझे क्या लगता है कि यह है। roविकल्प के साथ ।
पलटना

-1

कैसे कर्नेल हार्डवेयर का पता लगाता है, इस विषय पर, यहां बहुत अच्छा लेख है कि क्या होता है

संक्षेप में:

  • कर्नेल आपके PC बस और मैप डिवाइस को लगातार वर्चुअल फ़ाइल सिस्टम में स्कैन करता है, आमतौर पर इसके अंतर्गत /sys/
  • कर्नेल संदेश भेजता है कि नया हार्डवेयर udv के लिए उपलब्ध है, जो:
    • डिवाइस पर udev नियमों की प्रक्रिया करें
    • डिवाइस में सिमलिंक करें /dev/
    • लोड डिवाइस ड्राइवर
    • डिवाइस के उपयोगकर्ता स्थान को dbus के माध्यम से सूचित करें

इस बिंदु पर डिवाइस को उपयोगकर्ता द्वारा उपयोग किए जाने के लिए तैयार है। Gvfs और FUSE दोनों ही यूजरस्पेस फाइल सिस्टम हैं।


नहीं, udevआम तौर पर इसके माध्यम से आवेदनों को अधिसूचित नहीं dbusकिया जाता है यह तीसरे पक्ष के अनुप्रयोगों द्वारा किया जाता है। यदि आप उपयोग करते हैं qdbus --systemतो आपको कोई udv नाम नहीं दिखाई देगा। आमतौर पर एप्लीकेटन सिर्फ खुद को ueventsया अपने स्वयं के नियमों को शिप करने के लिए सब्सक्राइब करता है
उलरिच डेंगल

@Ulrich को इंगित करने के लिए धन्यवाद। मेरा सारांश कई बुनियादी कदमों को छोड़कर एक बहुत ही मूल रूपरेखा देता है। किरकिरा विवरण के लिए जुड़ा हुआ लेख देखें।
पलटना

2
लेख भी गलत है क्योंकि आम तौर पर बसों की निगरानी के लिए कोई मतदान शामिल नहीं है
उलरिच डांगेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.