Hallo zusammen,
nee, nicht mitlesen. Mitmachen. udev ist echt klasse. Damit kann man Windoof-Nutzer echt beeindrucken. Aber ich mache mal weiter.
Der erste Schritt ist, sich darüber zu informieren, was udev denn so über das Gerät weiß. Dazu schließen wir das Gerät an, wechseln auf eine Konsole, verschaffen uns root-Rechte und geben folgenden Befehl ein:
udevadm info --name=/dev/geraet --query=all --attribute-walk
Der Befehl udevadm dient zum Administrieren des udev. Daher der Name. Mit info geben wir an, dass wir was wissen wollen. Mit --name (oder für schwere Fälle --path) geben wir an, welches Gerät wir meinen. Das --query gibt an, was wir wissen wollen. Wir sind neugierig, wir wollen alles wissen. Und zum Schluß soll er durch die Attribute auch der Elterngeräte wandern und sie uns anzeigen. Bei der Ausgabe staunt der Windoof-User Bauklötze. g
looking at device '/devices/pci0000:00/0000:00:1d.7/usb5/5-4/5-4:1.0/host6/target6:0:0/6:0:0:0/block/sdb/sdb5':
KERNEL=="sdb5"
SUBSYSTEM=="block"
DRIVER==""
ATTR{start}=="4096"
ATTR{size}=="1953519616"
ATTR{stat}==" 74 56 1034 172 1 0 8 4 0 148 176"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-4/5-4:1.0/host6/target6:0:0/6:0:0:0/block/sdb':
KERNELS=="sdb"
SUBSYSTEMS=="block"
DRIVERS==""
ATTRS{range}=="16"
ATTRS{removable}=="0"
ATTRS{ro}=="0"
ATTRS{size}=="1953525168"
ATTRS{capability}=="12"
ATTRS{stat}==" 92 118 1662 284 1 0 8 4 0 252 288"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-4/5-4:1.0/host6/target6:0:0/6:0:0:0':
KERNELS=="6:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{device_blocked}=="0"
ATTRS{type}=="0"
ATTRS{scsi_level}=="3"
ATTRS{vendor}=="SAMSUNG "
ATTRS{model}=="HD103SI "
ATTRS{rev}==" "
ATTRS{tgps}=="0"
ATTRS{state}=="running"
ATTRS{timeout}=="30"
ATTRS{iocounterbits}=="32"
ATTRS{iorequest_cnt}=="0x6b"
ATTRS{iodone_cnt}=="0x6b"
ATTRS{ioerr_cnt}=="0x0"
ATTRS{modalias}=="scsi:t-0x00"
ATTRS{evt_media_change}=="0"
ATTRS{queue_depth}=="1"
ATTRS{queue_type}=="none"
ATTRS{max_sectors}=="240"
...]
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}=="0x1043"
ATTRS{subsystem_device}=="0x1877"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="23"
ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003"
ATTRS{local_cpulist}=="0-1"
ATTRS{modalias}=="pci:v00008086d0000293Asv00001043sd00001877bc0Csc03i20"
ATTRS{numa_node}=="0"
ATTRS{enable}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
Ich habe das ein wenig gekürzt. Wie wir sehen, fängt er beim Gerät an, das wir angegeben haben und hangelt sich dann Elterngerät für Elterngerät durch, bis er bei der Kernel-Schnitstelle angelangt ist. Jedes dieser Attribute kann benutzt werden, um eine udev-Regel zu schreiben. Aber nicht alle sind sinnvoll. Deshalb suchen wir in der Ausgabe z. B. nach Modellbezeichnung, Hersteller oder, was ich bevorzuge, da es eindeutig ist, nach Seriennummern. Einfach mal in der Ausgabe blättern und nach verdächtigen Kandidaten suchen.
Aber vorsicht! Nicht jede Seriennummer eignet sich. Erwische ich z. B. die vom Host-Controller und nicht eine von denen, die sich auf das angeschlossene Gerät beziehen, dann gilt die Regel immer, wenn etwas an den Controller angeschlossen wird. Je nach dem, was wir dann ausführen lassen, kann das fatale Folgen haben. Also suchen wir erstmal nach der Festplatte und finden folgende Zeilen:
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-4/5-4:1.0/host6/target6:0:0/6:0:0:0':
KERNELS=="6:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{device_blocked}=="0"
ATTRS{type}=="0"
ATTRS{scsi_level}=="3"
ATTRS{vendor}=="SAMSUNG "
ATTRS{model}=="HD103SI "
ATTRS{rev}==" "
ATTRS{tgps}=="0"
ATTRS{state}=="running"
ATTRS{timeout}=="30"
ATTRS{iocounterbits}=="32"
ATTRS{iorequest_cnt}=="0x6b"
ATTRS{iodone_cnt}=="0x6b"
ATTRS{ioerr_cnt}=="0x0"
ATTRS{modalias}=="scsi:t-0x00"
ATTRS{evt_media_change}=="0"
ATTRS{queue_depth}=="1"
ATTRS{queue_type}=="none"
ATTRS{max_sectors}=="240"
So sieht das bei meiner externen Platte aus. Aus irgend einem Grund steht da aber leider die Seriennummer der Platte nicht. Also suche ich bei den Elterngeräten weiter und stoße auf folgendes:
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-4':
KERNELS=="5-4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
...]
ATTRS{speed}=="480"
...]
ATTRS{manufacturer}=="Sunplus Innovation Technology."
ATTRS{product}=="USB to Serial-ATA bridge"
ATTRS{serial}=="FAFFFFF0FDF1FFF9EF80712"
Ich habe das auf die nötigen Informationen gekürzt. Die ersten Zeilen sagen uns, dass es sich um ein Gerät am USB handelt. Beruhigend ist, dass es mit 480 Mbit/s läuft. Die letzten drei Zeilen sind der Hersteller, die Produktbezeichnung und die Seriennummer. Wir haben jetzt eine eindeutige Bezeichnung des Geräts, mit der wir arbeiten können. Nun seid Ihr dran. Guckt mal selbst nach und sucht nach einer solchen Nummer.
Ich bevorzuge übrigens deshalb die Seriennummern, da ich dann auch zwei baugleiche Geräte erkennen und getrennt behandeln kann. Vielleicht kaufe ich mir noch so eine Platte. Das Teil war billig und wie udev mir verrät, ist trotzdem gute HW verbaut.
Liebe Grüße
Erik