उदय- मुझे यह कैसे पता चलेगा कि कौन सा उपतंत्र किस उपकरण से संबंधित है?


19

उदाहरण के लिए, मेरे पास डिवाइस / देव / एसडीबी है। मुझे यह कैसे पता चलेगा कि यह udv सबसिस्टम है?

जवाबों:


12
$ udevadm info -q all -a /dev/sdb

नोट: उपरोक्त जानकारी डिवाइस की जानकारी के लिए UDEV डेटाबेस info, हम सभी जानकारी के लिए क्वेरी कर रहे हैं -q all, और हम /sysइस डिवाइस लेबल से संबंधित सभी विशेषताओं को चला रहे हैं ।

अंश

   --attribute-walk|-a
       Print all sysfs properties of the specified device that can be used 
       in udev rules to match the specified device. It prints all devices
       along the chain, up to the root of sysfs that can be used in udev 
       rules.

उदाहरण

यहाँ मेरा /dev/sdaउपकरण है।

$ udevadm info -q all -a /dev/sda | grep parent
walks up the chain of parent devices. It prints for every device
and the attributes from one single parent device.
  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0':
  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0':
  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0':
  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1':
  looking at parent device '/devices/pci0000:00/0000:00:1f.2':
  looking at parent device '/devices/pci0000:00':

इन 2 आदेशों के बीच अंतर

@ सेपरो का उत्तर केवल यूडीवी डिवाइस से संबंधित जानकारी को नोड नोड पर दिखा रहा है।

सेपरो का जवाब

$ udevadm info -q all -n /dev/sda > udevadm_info_1.txt

स्लम का जवाब

मेरे उत्तर में विशेषताओं को दिखाया गया है क्योंकि यह /sysउपकरणों की पूरी श्रृंखला पदानुक्रम को चलाता है।

$ udevadm info -q all -a /dev/sda > udevadm_info_2.txt

आप इन दोनों में अंतर देख सकते हैं।

$ diff -y udevadm_info_1.txt udevadm_info_2.txt  \
    > udevadm_info_diff.txt

नोट: मैं फेडोरा 19 पर चल रहा हूं, संस्करण 204 का उपयोग कर रहा हूं udevadm:

$ udevadm --version
204

क्यों इस जटिल आदेश के बजाय udevadm info -a -n /dev/sdb?
गिलेस एसओ- बुराई को रोकना '

@ गिल्स - यह सभी मूल नोड्स के लिए सभी एटीटीआरएस को डंप करता है।
स्लम

तो मेरा है - उत्पादन समान है।
गिलेस एसओ- बुराई को रोकना '

गिलेस - आप डेबियन पर? Udvadm का क्या संस्करण? जब मैं उपरोक्त 2 कमांड चलाता हूं तो मुझे ये 2 फाइलें मिलती हैं। एकल udvadm आउटपुट बनाम नेस्टेड udvadm आउटपुट । आउटपुट को देखकर मुझे लगता है कि सिंगल कमांड सिर्फ सभी माता-पिता के सभी आउटपुट को मिला रहा है जबकि मेरा संस्करण दिखाता है कि एटीआरएस कौन से माता-पिता से आ रहे हैं।
स्लम

pastebin.com/NHg9pydA से आउटपुट है udevadm info -q all, से नहीं udevadm info -a। मुझे लगता -aहै कि यह एक शॉर्टकट है -q all --attribute-walk। या यह आपके संस्करण पर अलग है? मुझे यह बदलना याद नहीं है, लेकिन फिर मैंने वर्षों में फेडोरा का उपयोग नहीं किया है (लेकिन वितरण पैच क्यों होगा?)।
गिलेस एसओ- बुराई को रोकना '

5

udevadm info इस तरह की जानकारी प्रदान करता है।

यदि आप विशेष रूप से सबसिस्टम चाहते हैं:

udevadm info -n /dev/sdb -q property | sed -n 's/SUBSYSTEM=//p'

जब आप udv नियम लिख रहे हैं, तो सबसे उपयोगी कमांड है

udevadm info -a -n /dev/sdb

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

KERNEL=="sdb"
SUBSYSTEM=="block"
…
KERNELS=="5:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{model}=="Yoyodyne Diskinator"
…
KERNELS=="0000:00:1f.2"
SUBSYSTEMS=="pci"
DRIVERS=="ahci"

तब आप इस उपकरण के साथ SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"या साथ मेल कर सकते हैं SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"लेकिन साथ नहीं SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci"

नियमों में उपयोग के लिए जानकारी प्राप्त करने का दूसरा तरीका है

udevadm info -q property -n /dev/sdb --export

यह उस डिवाइस के गुण मान को प्रिंट करता है जिसे आप udv नियमों के रूप में उपयोग कर सकते हैं ।KEY=VALUEENV{KEY}=="VALUE"

यदि आपके डिवाइस में कोई /devप्रविष्टि नहीं है , तो आप /sysइसके बजाय एक पथ के साथ इसका उल्लेख कर सकते हैं , जैसे

udevadm info -a -p /sys/block/sdb

(इस मामले में उपयोगी उदाहरण नहीं है - यह उन उपकरणों के लिए उपयोगी है जिनकी श्रेणी सामान्य नहीं है और /devअभी तक कोई प्रविष्टि नहीं है)।

जब आप udev नियम बदलते हैं, तो वे स्वचालित रूप से पढ़े जाते हैं; हालाँकि, वे केवल उन उपकरणों पर लागू होते हैं जो बाद में सिस्टम में प्लग किए जाते हैं। पहले से जुड़े डिवाइस पर नए नियमों को लागू करने के लिए, udevadm trigger(कुछ उपकरणों के लिए एप्लिकेशन को प्रतिबंधित करने के विकल्प के साथ) का उपयोग करें।


4
$ udevadm info -q all -n /dev/sdb

अंतर b / w इस दृष्टिकोण और मेरा है कि यह सिर्फ पत्ती नोड के /sysलिए दिखाता है /dev/sdb। अन्य दृष्टिकोण शाखाओं के साथ पत्ती नोड के पूरे पेड़ पदानुक्रम को दर्शाता है।
स्लम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.