"Udevadm info -a -n / dev / sdb" çıktısını anlama


11

Dizüstü bilgisayarıma harici bir HDD takıyorum. Bilgileri bulmaya çalışıyorum

$ 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==""

Acaba "ana cihazların zinciri" ne çıktı çıktı ima? Her birinin ne anlama looking at (parent) devicegeldiğini tam olarak anlamıyorum . Örneğin,

İlki harici HDD'im mi? Gerisi nedir?

Neden son ikisi hariç hepsi "..." içinde "usb" var?

Son PCI yuvalarının yanında mı?

Adında olmasına rağmen bu kadar boş olan sonuncusu nedir pci?

Harici HDD'den CPU'ya "yürümek" demek mi?

Teşekkürler!

Yanıtlar:


11

Yürüyüş, aygıtı kullanan farklı yazılım bileşenlerinin (sürücüler) üzerindedir; bu, cihaza bağlanmada yer alan donanım cihazlarına ve otobüslere karşılık gelir. Bu çoğunlukla cihazların fiziksel düzeniyle ilgisizdir: çoğu zaten aynı çipin içindedir.

Bu örneği üstten alarak:

  • İlk önce bir blok cihazımız var (disk benzeri bir cihaz).
    Onun anahtarları hiçbir nihai zorunda gerçekteki cihazdır S( KERNEL, ATTRvb.) Çıktıdaki ataların tuşlarına , udev kurallarında yazabileceklerinizle eşleşen bir final S( KERNELS, ATTRSvb.) Eklenir .udevadm
  • İlk üst (SCSI disk) sürücüsü tarafından işlenen bir SCSI disktir sd. Bu, fiziksel bir SCSI bağlantısı üzerinden değil, SCSI protokolüne bağlı bir disktir; modern depolama bağlantılarının çoğu (ATA, SCSI, USB, iSCSI) farklı fiziksel iletişim protokolleri üzerinden SCSI protokolünü kullanır.
  • SCSI adresleme katmanlıdır: SCSI aygıtı, bir ana bilgisayara bağlı bir hedefe eklenir .
  • SCSI ana bilgisayarı, sürücü tarafından kullanılan bir USB depolama denetleyicisidir usb-storage.
  • USB depolama denetleyicisi bir USB denetleyiciye bağlıdır. USB aygıtları ağaç biçiminde bağlanır (SCSI gibi, ancak SCSI sabit sayıda dallanma noktasına sahipken, USB ağacın derinliğini artıran hub'ları zincirleyebilir). USB adımlarının ayrıntılarını açıklamak için USB hakkında yeterli bilgim yok.
  • Sonunda USB ana denetleyicisi varmak: ATTRS{product}=="EHCI Host Controller". EHCI , bir USB 2.0 denetleyicisi anlamına gelir.
  • USB denetleyicisi bir PCI veri yolu üzerinden CPU ile konuşur . 0000:00:1d.7USB denetleyicinin bağlı olduğu veri yolu adresidir.
    PCI genişletme kartları bu düzeyde takılıdır. USB denetleyicisini içeren çip çok hantal bir şeye bağlı değil, bağlantıları silikonun derinliklerinde.
  • Son giriş PCI veri yolunun kendisidir. Bu son giriştir, çünkü bu veri yolunun uç noktası CPU'dur.

2
@Zaman Kasa, IDE ve USB depolama birimi arasında fiziksel olarak, elektriksel olarak ve protokol yığınının daha düşük düzeyinde çevirir. Hem IDE hem de USB depolama birimi, veri değişim protokolü (veya çok yakın varyasyonlar) olarak SCSI kullanır. İlk sorunuz biraz zor; sistem farklı seviyelerde farklı şeyler görür (sabit diski blok cihaz seviyesinde, hdd'yi SCSI seviyesinde ve muhafazayı USB seviyesinde gördüğünü söyleyebilirsiniz). USB kablosu yazılımdan görünmez.
Gilles 'SO- kötü olmayı kes

2
@Tim Bu seviyelerin tümü OS tasarımcıları tarafından oluşturulan soyutlamalardır. Bu soyutlamaların çoğu, bir donanım parçasının (tüm ayrı bileşenler olmayabilir ve fiziksel olarak tek parçalı bir donanım parçasında birden fazla bileşen olabilir) bazı görünümlerine karşılık gelir, soyutlamalar ve donanım arasındaki yazışma yakın ama her zaman mükemmel değil.
Gilles 'SO- kötü olmayı kes

1
@Tim Hmmm, sanırım bunlar sadece her iki tarafa da sürücü kodunu yazdığınızda gerçekten anladığınız şeyler (daha önce hiç yapmadığım). Wikipedia'dan başlayabilirsiniz ve konuyla ilgili kitaplar var (ne önereceğime dair hiçbir fikrim yok) ve standartları okuyabilirsiniz (bazıları serbestçe kullanılabilir, bazıları ödeme gerektirir, bazen sadece orta düzeyden yüksek bir ücrete tabidir. -büyük organizasyon).
Gilles 'SO- kötü olmayı kes

1
@Tim Sanki Ethernet üzerinden IP, PPP veya Bluetooth üzerinden vb. Olabilir. IP üzerinden TCP üzerinden HTTP üzerinden Ajax gibi şeylere sahip olabilirsiniz. SCSI komutları üzerinde SCSI, IDE, USB, vb. Komutlara sahip olabilirsiniz. Ayrıca PCI veri yolu bunların tümünü aktarır.
Gilles 'SO- kötü olmayı kes

1
@ Zaman 1) IDE'yi USB depolama birimiyle değiştirin , kasa ikisi arasında çeviri yapar. 2) SCSI komutları vs SCSI
Gilles 'SO dur olma şer'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.