यूएसबी डिटेक्शन के प्रवाह को कैसे समझें?


14

मैं USB घटनाओं के प्रवाह को समझने के लिए उपयोगकर्ता स्थान के लिए कर्नेल स्थान बनाना चाहता हूं (बस चीजों को कैसे लागू किया जाता है, यह जानने में मेरी जिज्ञासा से बाहर)।

अधिक स्पष्ट होने के लिए, मैं यह जानना चाहूंगा कि जब मेरे सिस्टम में यूएसबी ड्राइव प्लग होता है और ड्राइव कैसे माउंट होता है, तो यह पॉप-अप मेरे डेस्कटॉप में कैसे आता है।

मैं यह भी जानना चाहूंगा कि यह कैसे पता चलता है कि कुछ चित्र मेरे USB में मौजूद हैं और यदि "हाँ", तो यह कैसे मुझसे पूछता है कि क्या मुझे इसे GIMP या किसी अन्य सॉफ़्टवेयर में खोलने की आवश्यकता है?

मैं इसका एक बहुत बड़ा और विस्तृत प्रश्न जानता हूं, लेकिन कृपया कुछ संकेतकर्ताओं के साथ मेरा मार्गदर्शन करें कि इसके पीछे के पूरे विचार को कैसे समझा जाए।

मैंने बड़े कोड ब्राउजिंग नहीं किए हैं, लेकिन मैं आपको विश्वास दिलाता हूं कि मुझे ऐसा करने में कोई समस्या नहीं है अगर मुझे सही तरीके से निर्देशित किया जा सके।

जवाबों:


16
  1. डिवाइस को प्लग इन किया जाता है, और उस उपकरण के लिए हार्डवेयर बस का प्रबंधन करने वाले सॉफ़्टवेयर को एक अवरोध (या हार्डवेयर स्तर पर अन्य सूचना) प्राप्त होता है, और बस चालक संलग्न उपकरणों की गणना करता है, या डिवाइस की पहचान करने के लिए अन्य बस-विशिष्ट हार्डवेयर क्रिया करता है।
  2. कर्नेल नए हार्डवेयर के लिए ड्राइवर को कॉल करने के लिए अनुरोध करता है / हार्डवेयर / बस / डिवाइस / आदि पहचानकर्ता के साथ sbin / modprobe कॉल करके ।
  3. उपयोगकर्ता-स्पेस में, modprobe एक मेल ड्राइवर-निर्दिष्ट उपनाम खोजने की कोशिश करता है। ( /lib/modules/$(uname -r)/modules.aliasपूरी सूची देखें ।) ये हार्डवेयर इंटरफ़ेस के आधार पर अलग-अलग दिखेंगे। उदाहरण के लिए, pci:v0000102Bd00002527sv*sd*bc*sc*i*पीसीआई उपकरण विक्रेता के लिए 102 बी, डिवाइस 2527, और सबवेन्डर, आदि या यूएसबी के लिए कुछ भी usb:v2040p4982d*dc*dsc*dp*ic*isc*ip*:।
  4. एक बार जब डिवाइस ड्राइवर लोड हो जाता है (या एक नया डिवाइस जिसमें पहले से ही एक ड्राइवर शुरू होता है), कर्नेल में ड्राइवर लोड किए गए डिवाइस की सूचना को udevयूजरस्पेस में भेजता है ।
  5. udevमें नियमों की अपनी सूची के खिलाफ अधिसूचना से मेल खाता है /lib/udev/rules.d/और /etc/udev/rules.d। यहां से, नियम के आधार पर, व्यवहार अत्यंत विशिष्ट है।
  6. USB डिस्क के मामले में, 80-udisks.rulesफ़ाइल से काम करने के लिए सबसे अच्छी जगह होने की संभावना है। ये नियम डिस्क के प्रकार और सामग्री की जांच करने के लिए ब्लकिड और अन्य सहायकों जैसी चीजों का उपयोग करेंगे , सभी प्रकार के कॉन्फ़िगरेशन मानों को पॉप्युलेट करेंगे, जिसमें ENV{UDISKS_PRESENTATION_HIDE}="1"किसी कारण के लिए डिस्क को अनदेखा करना पसंद है। विवरण के लिए "मैन 7 udisks" देखें।
  7. Udisks-डेमॉन उपकरणों में प्रदर्शित करने के लिए देखता है udev डेटाबेस, और DBus से अधिक उपकरणों की एक खोज योग्य सूची के रूप में उन्हें प्रस्तुत करता है उन्हें। ("Udisks --enumerate" देखें।)
  8. विभिन्न कार्यों को udisks में कॉन्फ़िगर किया गया है , और उन कार्यों को अनुमति देने की नीति को नीति फ़ाइल में देखा जा सकता है /usr/share/polkit-1/actions/org.freedesktop.udisks.policy। (कौन कर सकता है, umount, आदि)
  9. डिवाइसों में रुचि रखने वाली सेवाएं udisks से DBus घटनाओं के लिए सुनेंगी , और जब वे कुछ शर्तों को देखते हैं तो कार्रवाई करेंगे। उदाहरण के लिए, गनोम के नॉटिलस (gvfs वॉल्यूम-मॉनीटर के माध्यम से) उपकरणों के लिए ऑटोमाउंटिंग का अनुरोध करेगा ( udisks के माध्यम से , जो ऊपर उल्लिखित इसकी नीति की जांच करेगा)।
  10. एक बार एक फाइलसिस्टम आरोहित हो जाने के बाद, वही श्रवण सेवाएं अधिक कार्रवाई करेंगी। उदाहरण के लिए, Nautilus पूछेगा कि क्या आप F- स्पॉट को खोलना चाहते हैं जब DCIMएक फाइल सिस्टम पर आम फोटो स्टोरेज डायरेक्टरी पाई जाती है।

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