`Udvadm जानकारी -a -n / dev / sdb` के आउटपुट को समझें


11

मैं अपने लैपटॉप में एक बाहरी एचडीडी प्लग करता हूं। मैं इस जानकारी का पता लगाने की कोशिश करता हूं

$ udevadm info -a -n /dev/sdb

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:1d.7/usb2/2-1/2-1:1.0/host10/target10:0:0/10:0:0:0/block/sdb':
    KERNEL=="sdb"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{range}=="16"
    ATTR{ext_range}=="256"
    ATTR{removable}=="0"
    ATTR{ro}=="0"
    ATTR{size}=="312581808"
    ATTR{alignment_offset}=="0"
    ATTR{discard_alignment}=="0"
    ATTR{capability}=="50"
    ATTR{stat}=="     322    11207    13259     2196        2        0       16        0        0     1524     2196"
    ATTR{inflight}=="       0        0"
    ATTR{events}==""
    ATTR{events_async}==""
    ATTR{events_poll_msecs}=="-1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host10/target10:0:0/10:0:0:0':
    KERNELS=="10:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{device_blocked}=="0"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="0"
    ATTRS{vendor}=="USB 2.0 "
    ATTRS{model}=="Storage Device  "
    ATTRS{rev}=="0100"
    ATTRS{state}=="running"
    ATTRS{timeout}=="30"
    ATTRS{iocounterbits}=="32"
    ATTRS{iorequest_cnt}=="0x165"
    ATTRS{iodone_cnt}=="0x165"
    ATTRS{ioerr_cnt}=="0x2"
    ATTRS{evt_media_change}=="0"
    ATTRS{dh_state}=="detached"
    ATTRS{queue_depth}=="1"
    ATTRS{queue_type}=="none"
    ATTRS{max_sectors}=="240"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host10/target10:0:0':
    KERNELS=="target10:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host10':
    KERNELS=="host10"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0':
    KERNELS=="2-1:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb-storage"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{bInterfaceClass}=="08"
    ATTRS{bInterfaceSubClass}=="06"
    ATTRS{bInterfaceProtocol}=="50"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1':
    KERNELS=="2-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="1076"
    ATTRS{idVendor}=="0402"
    ATTRS{idProduct}=="5621"
    ATTRS{bcdDevice}=="0103"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="8"
    ATTRS{devpath}=="1"
    ATTRS{product}=="USB 2.0 Storage Device"
    ATTRS{serial}=="00042222200000064007"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2':
    KERNELS=="usb2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="382"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0302"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="6"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 3.2.0-27-generic-pae ehci_hcd"
    ATTRS{product}=="EHCI Host Controller"
    ATTRS{serial}=="0000:00:1d.7"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7':
    KERNELS=="0000:00:1d.7"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x293a"
    ATTRS{subsystem_vendor}=="0x17aa"
    ATTRS{subsystem_device}=="0x20f1"
    ATTRS{class}=="0x0c0320"
    ATTRS{irq}=="19"
    ATTRS{local_cpus}=="ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""
    ATTRS{companion}==""
    ATTRS{uframe_periodic_max}=="100"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

मुझे आश्चर्य है कि आउटपुट द्वारा निहित "मूल उपकरणों की श्रृंखला" क्या है? मुझे समझ में नहीं आ रहा है कि प्रत्येक looking at (parent) deviceसाधन का अनुसरण क्या है। उदाहरण के लिए,

क्या पहले वाला मेरा एक्सटर्नल एचडीडी है? बाकी क्या हैं?

अंतिम दो को छोड़कर सभी '' ... '' के भीतर हैं?

क्या पिछले पीसीआई स्लॉट के बगल में एक है?

आखिरी क्या है जो इतना खाली है, हालांकि pciइसके नाम पर है?

बाहरी एचडीडी से सीपीयू तक "वॉक अप" का मतलब है?

धन्यवाद!

जवाबों:


11

चलना विभिन्न सॉफ्टवेयर घटकों (ड्राइवरों) पर है जो डिवाइस को संभालता है; यह हार्डवेयर उपकरणों और बसों से मेल खाती है जो डिवाइस को जोड़ने में शामिल हैं। यह ज्यादातर उपकरणों की भौतिक व्यवस्था से असंबंधित है: उनमें से ज्यादातर वैसे भी एक ही चिप के अंदर हैं।

इस उदाहरण को ऊपर से लेना:

  • पहले हमारे पास एक ब्लॉक डिवाइस (एक डिस्क जैसा डिवाइस) होता है।
    यह वास्तविक उपकरण है इसलिए इसकी कुंजी कोई अंतिम है S( KERNEL, ATTR, आदि)। आउटपुट में पूर्वजों की कुंजियों में एक अंतिम S( KERNELSऔर ATTRS, इत्यादि) जोड़ा जाता है udevadm, मैच के लिए जो आप udv नियमों में लिख सकते हैं।
  • पहला पैरेंट एक SCSI डिस्क है, जिसे sd(SCSI डिस्क) ड्राइवर द्वारा नियंत्रित किया जाता है । यह SCSI प्रोटोकॉल से जुड़ी एक डिस्क है, जो जरूरी नहीं कि एक भौतिक SCSI कनेक्शन पर हो; अधिकांश आधुनिक संग्रहण लिंक (ATA, SCSI, USB, iSCSI) विभिन्न भौतिक संचार प्रोटोकॉल पर SCSI प्रोटोकॉल का उपयोग करते हैं।
  • SCSI एड्रेसिंग स्तरित है: SCSI डिवाइस एक लक्ष्य से जुड़ी है जो एक होस्ट से जुड़ी है ।
  • SCSI होस्ट एक USB स्टोरेज कंट्रोलर है, जिसे usb-storageड्राइवर द्वारा हैंडल किया जाता है ।
  • USB संग्रहण नियंत्रक एक से जुड़ा हुआ है यूएसबी नियंत्रक। USB डिवाइस एक ट्री फ़ैशन में संलग्न होते हैं (SCSI की तरह, लेकिन SCSI की एक निश्चित संख्या में शाखाएँ हैं, जबकि USB चेन हब्स कर सकते हैं जो पेड़ की गहराई को बढ़ाते हैं)। मैं USB चरणों के विवरण को समझाने के लिए USB के बारे में पर्याप्त नहीं जानता।
  • आखिरकार हम USB होस्ट कंट्रोलर पर पहुंचते हैं ATTRS{product}=="EHCI Host Controller":। EHCI का अर्थ है USB 2.0 नियंत्रक।
  • USB नियंत्रक एक PCI बस पर सीपीयू से बात करता है । 0000:00:1d.7वह बस पता है जिस पर USB नियंत्रक जुड़ा हुआ है।
    इस स्तर पर पीसीआई विस्तार कार्ड संलग्न हैं। USB कंट्रोलर वाली चिप इतनी भारी चीज के साथ नहीं जुड़ी है, इसके कनेक्शन सिलिकॉन के अंदर गहरे हैं।
  • अंतिम प्रविष्टि पीसीआई बस की ही है। यह अंतिम प्रविष्टि है क्योंकि उस बस का समापन बिंदु सीपीयू है।

2
@ समय संलग्नक आईडीई और यूएसबी स्टोरेज के बीच भौतिक, विद्युत रूप से और प्रोटोकॉल स्टैक के निचले स्तर पर अनुवाद करता है। आईडीई और यूएसबी स्टोरेज दोनों एससीएसआई को डेटा एक्सचेंज प्रोटोकॉल (या बहुत करीबी वेरिएंट) के रूप में उपयोग करते हैं। आपका पहला सवाल थोड़ा मुश्किल है; सिस्टम विभिन्न स्तरों पर अलग-अलग चीजों को देखता है (आप कह सकते हैं कि यह ब्लॉक डिवाइस स्तर पर हार्ड डिस्क, SCSI स्तर पर HDD और USB स्तर पर बाड़े को देखता है)। USB केबल सॉफ्टवेयर से अदृश्य है।
गिल्स एसओ- बुराई को रोकना '

2
@ यह स्तर ओएस डिजाइनरों द्वारा बनाए गए सभी सार हैं। इनमें से अधिकांश सार हार्डवेयर के एक टुकड़े के कुछ दृश्य के अनुरूप हैं (जो सभी अलग-अलग घटक नहीं हो सकते हैं, और एक भौतिक रूप से एकल-टुकड़ा टुकड़ा हार्डवेयर के अंदर एक से अधिक घटक हो सकते हैं), अमूर्त और हार्डवेयर के बीच पत्राचार है करीब लेकिन हमेशा सही नहीं।
गिल्स एसओ- बुराई को रोकना '

1
@ टिम हम्म, मुझे लगता है कि ये ऐसी चीजें हैं जो आपको केवल तभी समझ में आती हैं जब आपने ड्राइवर कोड को दोनों तरफ लिखा होता है (जो मैंने कभी नहीं किया है)। आप विकिपीडिया से शुरू कर सकते हैं, और विषय पर किताबें हैं (मुझे पता नहीं है कि क्या सिफारिश करना है), और आप मानकों को पढ़ सकते हैं (कुछ स्वतंत्र रूप से उपलब्ध हैं, कुछ को भुगतान करने की आवश्यकता है, कभी-कभी पर्याप्त शुल्क केवल एक माध्यम से उपलब्ध है (संगठन बढ़ाना)।
गिल्स एसओ- बुराई को रोकना '

1
@ यह ऐसा है जैसे आप ईथरनेट पर आईपी, या पीपीपी या ब्लूटूथ के ऊपर, आदि कर सकते हैं और आपके पास आईपी पर टीसीपी पर HTTP पर Ajax जैसी चीजें हो सकती हैं। आप SCSI कमांड SCSI पर, IDE पर, USB पर, आदि कर सकते हैं और PCI बस इन सभी से संबंधित है।
गिल्स एसओ- बुराई को रोकना '

1
@ 1) USB स्टोरेज से IDE को बदलें , एनक्लोजर दोनों के बीच अनुवाद करता है। 2) SCSI कमांड बनाम SCSI
गाइल्स 'तथाकथित बंद किया जा रहा बुराई'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.