/ Dev और / sys / वर्ग के बीच अंतर?


30

में /devऔर एक में डिवाइस प्रतिनिधित्व के बीच अंतर क्या है /sys/class?

क्या एक को दूसरे पर पसंद किया जाता है? क्या कोई एक प्रस्ताव है और दूसरा नहीं है?


1
क्या आपने पढ़ लिया ? serverfault.com/questions/65261/…
राहुल पाटिल

: इस libudev और sysfs ट्यूटोरियल देखें signal11.us/oss/udev
SLM

जवाबों:


26

फ़ाइलें /devवास्तविक डिवाइस फ़ाइलें हैं जो UDEV रन टाइम पर बनाती हैं। निर्देशिका /sys/classको रन टाइम में कर्नेल द्वारा निर्यात किया जाता है, हार्डवेयर के पदानुक्रम को उजागर करता है sysfs

से libudev और sysfs ट्यूटोरियल

अंश

यूनिक्स और यूनिक्स जैसी प्रणालियों पर, हार्डवेयर उपकरणों को विशेष फाइलों (जिसे डिवाइस फाइल या नोड्स भी कहा जाता है) / देव निर्देशिका में स्थित के माध्यम से एक्सेस किया जाता है। इन फ़ाइलों को सामान्य फ़ाइलों की तरह से पढ़ा और लिखा जाता है, लेकिन एक डिस्क पर डेटा लिखने और पढ़ने के बजाय, वे सीधे कर्नेल ड्राइवर के साथ संवाद करते हैं जो फिर हार्डवेयर के साथ संचार करता है। कई ऑनलाइन संसाधनों का वर्णन / फाइलों को अधिक विस्तार से किया गया है। परंपरागत रूप से, ये विशेष फाइलें मैकोनोड कमांड का उपयोग करके वितरण के समय स्थापित की गई थीं। हाल के वर्षों में, लिनक्स सिस्टम ने रनवे पर इन / देव फाइलों को प्रबंधित करने के लिए udv का उपयोग करना शुरू किया। उदाहरण के लिए, उपकरणों का पता चलने पर udev नोड्स बनाएगा और जब डिवाइस हटाए जाएंगे तो उन्हें हटा दें (रनटाइम पर हॉटप्लग डिवाइस सहित)। इस तरफ,

एक और अंश

Sysfs में निर्देशिका में उपकरणों की उत्तराधिकारिणी होती है, क्योंकि वे कंप्यूटर से जुड़ी होती हैं। उदाहरण के लिए, मेरे कंप्यूटर पर, hidraw0 डिवाइस नीचे स्थित है:

/sys/devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5.4/1-5.4:1.0/0003:04D8:003F.0001/hidraw/hidraw0

पथ के आधार पर, डिवाइस डिवाइस से जुड़ा हुआ है (लगभग, अंत से शुरू) विन्यास 1-1 (डिवाइस) डिवाइस के पोर्ट नंबर 4 से जुड़ा डिवाइस 1-5, यूएसबी नियंत्रक 1 (usb1) से जुड़ा है, जुड़ा हुआ है पीसीआई बस। दिलचस्प है, यह निर्देशिका पथ हमें बहुत अच्छा नहीं करता है, क्योंकि यह इस बात पर निर्भर है कि हार्डवेयर भौतिक रूप से कंप्यूटर से कैसे जुड़ा है।

सौभाग्य से, Sysfs भी बड़ी संख्या में सिमिलिंक प्रदान करता है, उपकरणों तक आसान पहुंच के लिए बिना यह जानने के लिए कि वे किस PCI और USB पोर्ट से जुड़े हैं। / Sys / वर्ग में डिवाइस के प्रत्येक अलग वर्ग के लिए एक निर्देशिका है।

प्रयोग?

सामान्य तौर पर आप /etc/udev/rules.dअपने सिस्टम को बढ़ाने के लिए नियमों का उपयोग करते हैं। विभिन्न हार्डवेयर मौजूद होने पर स्क्रिप्ट चलाने के लिए नियमों का निर्माण किया जा सकता है।

एक बार सिस्टम खत्म हो जाने के बाद आप /devया तो उसके खिलाफ काम करने के लिए स्क्रिप्ट लिख सकते हैं /sys, और यह वास्तव में व्यक्तिगत प्राथमिकताओं के लिए आता है, लेकिन मैं आमतौर पर विभिन्न सिस्टम संसाधनों के स्थानों के लिए UDEV /sysजैसे टूल का उपयोग करने के खिलाफ कोशिश करता हूं और काम करता udevadmहूं।

$ udevadm info -a -p  $(udevadm info -q path -n /dev/sda) | head -15

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 '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda':
    KERNEL=="sda"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="976773168"
    ATTR{stat}==" 6951659  2950164 183733008 41904530 16928577 18806302 597365181 580435555        0 138442293 622621324"
    ATTR{range}=="16"
...

यकीन नहीं होता कि मैंने आपको सही तरीके से समझा। इसलिए कुछ स्पष्टीकरण मांगना सुनिश्चित करें। चाहे आप एक बाहरी डिवाइस (जैसे i2c या mipi के माध्यम से) के साथ इंटरफेस करने का निर्णय लेते हैं / व्यक्तिगत रूप से व्यक्तिगत प्राथमिकता के आधार पर / dev या sys में प्रविष्टि बनाकर? यदि नहीं, तो किस स्थिति में / क्यों बाद वाले (और उपाध्यक्ष) के बजाय पूर्व के लिए एक का चयन करेगा?
LandonZeKepitelOfGreytBritn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.