में /dev
और एक में डिवाइस प्रतिनिधित्व के बीच अंतर क्या है /sys/class
?
क्या एक को दूसरे पर पसंद किया जाता है? क्या कोई एक प्रस्ताव है और दूसरा नहीं है?
में /dev
और एक में डिवाइस प्रतिनिधित्व के बीच अंतर क्या है /sys/class
?
क्या एक को दूसरे पर पसंद किया जाता है? क्या कोई एक प्रस्ताव है और दूसरा नहीं है?
जवाबों:
फ़ाइलें /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"
...