reguły udev wykluczają urządzenie

4

czy można użyć reguł udev, aby wykluczyć pojedyncze urządzenie z reguły?

na przykład, jeśli mam 5 podłączonych dysków twardych i chcę utworzyć własne nazwy dla wszystkich dysków twardych z wyjątkiem jednego? Czy to możliwe?

Ponadto jądro nazywa dyski po nazwach sdz z 2 znakami. sdaa, sdab, sdqr itp. Mam z tym problem, ponieważ nie chcę umieszczać partycji w sda1, sdb2 itd. czy mogę używać wszystkich znaków, ale nie wszystkich liczb?

przykład:

KERNEL=="sd??",  NAME="test/Disk%n",  ATTRS{ID_SERIAL_SHORT}!="xxxx"
prgmjunkie
źródło

Odpowiedzi:

3

na przykład, jeśli mam 5 podłączonych dysków twardych i chcę utworzyć własne nazwy dla wszystkich dysków twardych z wyjątkiem jednego? Czy to możliwe?

  • Możesz użyć GOTO pominąć reguły:

    ENV{ID_SERIAL_SHORT}=="xxxx|yyyy|zzzz", GOTO="custom_names_end"
    ENV{ID_MODEL}=="blahblah", GOTO="custom_names_end"
    
    KERNEL=="sd*", ENV{DEVTYPE}=="disk", SYMLINK+="test/Disk%n"
    
    LABEL="custom_names_end"
    
  • Zauważ, że ID_SERIAL_SHORT nie jest atrybutem; to zmienna „środowisko” udev, więc musisz z niej korzystać ENV{} lub ENVS{} dopasować to. Atrybuty są odczytywane bezpośrednio z sysfs.

  • Zauważ również, że ostatnie wersje udev zabraniają zmiany nazw urządzeń; możesz dodawać tylko niestandardowe dowiązania symboliczne.

Ponadto jądro nazywa dyski po nazwach sdz z 2 znakami. sdaa, sdab, sdqr itp. Mam z tym problem, ponieważ nie chcę umieszczać partycji w sda1, sdb2 itd. czy mogę używać wszystkich znaków, ale nie wszystkich liczb?

  • Używasz niewłaściwego podejścia. Jeśli chcesz dopasować dyski, ale nie partycje, to zrób dokładnie to :

    KERNEL=="sd*",  ENV {DEVTYPE} == "dysk" ,… 

    The DEVTYPE wartości można zobaczyć w udevadm info /dev/sda i udevadm info /dev/sda1.

grawity
źródło
Dziękuję Ci bardzo! Uruchamia się, ale tylko na pierwszym znalezionym dysku. więc mam tylko jedno dowiązanie symboliczne w / dev / test Czy możliwe jest również użycie numeracji jako ostatniej cyfry? więc pierwsze znalezione urządzenie to Disk0, a następnie Disk1 itd.?
prgmjunkie
@prgmjunkie: Spróbuj ręcznie uruchomić go na innych urządzeniach za pomocą udevadm test lub udevadm trigger.
grawity
uruchamia się, ale operator% n w deklaracji dowiązania symbolicznego wydaje się nie działać poprawnie, dowiązanie symboliczne jest zawsze nazywane Dyskiem, bez nic.
prgmjunkie
Jeśli użyję% k zamiast% n, to działa.
prgmjunkie
Może być tak, że udev po prostu nie wie, jak przypisać numery do urządzeń sd * ... (Osobiście uważam, że% n jest i tak zupełnie bezużyteczny, ponieważ kolejność urządzeń jest niestabilna. Lepiej użyj UUID, jak w / dev / disk / by- uuid /…)
grawity