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.