Udev- Bir cihazın hangi alt sisteme ait olduğunu nasıl öğrenebilirim?


19

Örneğin, / dev / sdb cihazım var. Udev alt sisteminin nasıl olduğunu nasıl öğrenebilirim?

Yanıtlar:


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

NOT: yukarıdaki UDEV veritabanını cihaz bilgileri için sorgular, infotüm bilgileri sorgularız ve bu cihaz etiketi ile ilgili -q alltüm özellikleri yürüyoruz /sys.

alıntı

   --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.

Misal

İşte /dev/sdacihazım.

$ 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':

Bu 2 komut arasındaki farklar

@ sepero'nun yanıtı, yaprak düğümdeki UDEV cihazıyla ilgili bilgileri gösteriyor.

Sepero'nun cevabı

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

slm'nin cevabı

Cevabım, /syscihazların tüm zincir hiyerarşisinde yürürken özellikleri gösterir .

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

Bu ikisi arasındaki farkı görebilirsiniz.

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

Not: 204 sürümünü kullanarak Fedora 19 üzerinde çalışıyorum udevadm:

$ udevadm --version
204

Neden bu karmaşık komut yerine udevadm info -a -n /dev/sdb?
Gilles 'SO- kötü olmayı bırak'

@Gilles - Bu, tüm üst düğümler için tüm ATTRS'leri boşaltır.
slm

Benimki de öyle - çıktı aynı.
Gilles 'SO- kötü olmayı kes'

Gilles - Debian'da mısın? Udevadm'ın hangi sürümü? Yukarıdaki 2 komutu çalıştırdığımda bu 2 dosyayı alıyorum. tek udevadm çıkışı ile iç içe udevadm çıkışı . Çıktıya bakarken, tek komutun tüm ebeveynlerin tüm çıktılarını birleştirdiğini düşünüyorum, versiyonum ATTRS'nin hangi ebeveynlerden türediğini gösteriyor.
slm

pastebin.com/NHg9pydA kaynağındanudevadm info -q all değil , çıktısıdır udevadm info -a. Bence -abir kısayol -q all --attribute-walk. Yoksa bu, sürümünüzde farklı mı? Bu değişikliği hatırlamıyorum, ancak yıllardır Fedora'yı kullanmadım (ama neden bir dağıtım bunu yamalı?).
Gilles 'SO- kötü olmayı kes'

5

udevadm info bu tür bilgileri sağlar.

Özellikle alt sistemi istiyorsanız:

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

Udev kuralları yazarken en kullanışlı komut

udevadm info -a -n /dev/sdb

Bu, cihazı udev kurallarında eşleştirmek için kullanabileceğiniz kuralları yazdırır. İlk blok cihazın kendisiyle ilgilidir ve sonraki bloklar cihaz ağacındaki ataları ile ilgilidir. Tek uyarı, farklı atalara karşılık gelen anahtarları karıştıramamanızdır. Örneğin, bu alıntı dikkate alındığında

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"

bu cihazı ile SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"veya ile eşleştirebilirsiniz SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"ancak ile eşleştiremezsiniz SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci".

Kurallarda kullanım için bilgi edinmenin başka bir yolu da

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

Bu, formun udev kurallarında olduğu gibi kullanabileceğiniz aygıt özellik değerlerini yazdırır .KEY=VALUEENV{KEY}=="VALUE"

Cihazınızın bir /devgirişi yoksa, /sysbunun yerine altında bir yolla başvurabilirsiniz , ör.

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

(bu durumda yararlı bir örnek değildir - bu, kategorisi yaygın olmayan ve /devhenüz bir girişi olmayan cihazlar için yararlıdır ).

Udev kurallarını değiştirdiğinizde, kurallar otomatik olarak okunur; ancak bunlar yalnızca daha sonra sisteme takılan aygıtlara uygulanır. Yeni kuralları zaten bağlı bir cihaza udevadm triggeruygulamak için (uygulamayı belirli cihazlarla kısıtlama seçenekleriyle) kullanın.


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

Genişlik b / Bu yaklaşım w benim ki bu da sadece yaprak düğümü /sysiçin /dev/sdb. Diğer yaklaşım, dallarla birlikte yaprak düğümünün tüm ağaç hiyerarşisini gösterir.
slm
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.