Table of Contents

PLD udev FAQ (udev-0.79-5)

Jaki kernel jest zalecany do prawidłowego działania udev/udev-hotplug?

Minimalna zalecana wersja to 2.6.15.x. Ze staszymi udev i HAL nie będą poprawnie działać co objawi się problemami z automountowaniem urządzeń.

Udev nie ładuje mi wszystkich modułów!

…bo ładuje tylko moduły urządzeń PCI spełniający warunek zawarty w regułach udev. Reguły te dopuszczają automatyczne ładowanie modułów tylko dla wewnętrznych urządzeń (hubów) USB jak uhci-hcd czy ehci-hcd.

Jeśli chcesz aby moduły wszystkich urządzeń załadowały się automatycznie włącz udevsynthesize w /etc/udev/udev.conf.

Jeśli chcesz aby udev nie ładował jakiegoś modułu w tym trybie to rzuć okiem na udev-blacklist.conf w /etc/modprobe.d

Co z hotplugiem?

Hotplug zawarty w obecnym udev zastępuje całkowicie stary hotplug. Równoległe instalowanie ich obu jest nadzwyczaj niewskazane.

Chcę podłączyć mój aparat cyfrowy/skaner/inne urządzenie usb do komputera. Czy muszę mountować /proc/bus/usb z opowiednimi prawami?

Absolutnie nie. Dopisz się do grupy usb i zainstaluj libusb w wersji co najmniej 0.1.10a. Jeśli chcesz zgrać zdjęcia z aparatu pomocnym może okazać się hal-gphoto.

Czy udev może automatycznie mountować znalezione partycje czy napędy cd?

Nie. Tym zajmują się wyspecjalizowane programy jak ivman czy gnome-volume-manager + gnome-mount.

Używam nvidia-legacy i nie tworzy się plik urządzenia /dev/nvidia*!

To problem sterowników nvidia (legacy). udev nie ma z tym nic wspólnego.

Czy muszę dopisywać do /etc/modprobe.conf alias usb-controller?

Nie. Moduły *-hcd są ładowane automatycznie.

Mam kilka kart sieciowych w komputerze, udev jednak sam ustawia im nazwy!

W Ac tylko udevsynthesize

Rozwiązaniem jest dodanie reguły o nazwie np. 09-network.rules, w której możemy zmienić nazwy urządzeń za pomocą mac-adresu i identyfikatorze urządzenia

   ACTION!="add", GOTO="local_end"
   SUBSYSTEM!="net", GOTO="local_end"

   DRIVERS=="?*", ATTRS{address}=="00:11:22:33:45:45", ATTRS{device}=="0x0900", NAME="wireless"
   DRIVERS=="?*", ATTRS{address}=="aa:bb:aa:cc:aa:dd", ATTRS{device}=="0x0900", NAME="lan"
   DRIVERS=="?*", ATTRS{address}=="00:aa:22:bb:33:dd", ATTRS{device}=="0x0900", NAME="firewire"

   LABEL="local_end"

w przypadku urządzeń tego samego rodzaju (tu eth*) można identyfikować po samym mac-adresie:

   ACTION!="add", GOTO="local_end"
   SUBSYSTEM!="net", GOTO="local_end"
   KERNEL!="eth*", GOTO="local_end"

   DRIVERS=="?*", ATTR{address}=="00:05:5d:6d:1a:07", NAME="eth0"
   DRIVERS=="?*", ATTR{address}=="00:50:04:3c:a6:6f", NAME="eth1"
   DRIVERS=="?*", ATTR{address}=="00:a0:d2:1d:22:73", NAME="eth2"

   LABEL="local_end"

ATTR{device} i ATTR{address} uzyskamy za pomocą:

# udevadm info -a -p /sys/class/net/eth0

zaś sam mac-adres także za pomocą

# ip a

Aby sprawdzić czy regułki są prawidłowe musimy sprawdzić każdą kartę z osobna

# udevadm test /sys/class/net/eth0

interesuje nas komunikat: udev_rules_apply_to_event: NAME 'eth0'

udev tworzy niektóre pliki urządzeń z złymi uprawnieniami!

Dla urządzeń, których sterowniki nie są w stanie porozumieć się z udev, przy jego starcie tworzone są pliki urządzeń z /etc/udev/links.conf. Aby nie zmieniać uprawnień przy każdym stacie systemu wystarczy skopiować interesujący nas plik urządzenia do /lib/udev/devices, nadać mu prawa jakie trzeba i zapomnieć o problemie.

Jak przeładować udev ?

udevadm control --reload-rules

Jak debuggować udev ?

Włączyć debuggowanie:

udevadm control --log-priority=debug

i zobaczyć co wpada do '/var/log/daemon'.

Podejrzeć zdarzenia kernela i udev:

udevadm monitor --udev --kernel

Mam problem, na który tu nie znalazłem odpowiedzi. Jak go zdiagnozować?

Ustaw udev_log na “info” w /etc/udev/udev.conf lub przy pomocy: udevcontrol log_priority=info aby zwiększyć gadatliwość udeva, użyj udevmonitora (man udevmonitor) aby wyciągnąć jeszcze więcej informacji, zajrzyj do archiwum listy linux-hotplug http://marc.theaimsgroup.com/?l=linux-hotplug-devel. Jeśli nadal masz wątpliwości zapytaj na pld-users.

CategoryUpdateNeeded