Některé systémy mají více než 26 (blokových) zařízení (jako jsou pevné disky), které jádro pojmenuje následovně:
/dev/sda
...
/dev/sdz
/dev/sdaa
/dev/sdab
/dev/sdac
...
Většina příkladů pravidel udev je poměrně jednoduchá, odpovídá pouze prvním 26 zařízením, jako například:
ACTION=="add|change", KERNEL=="sd[a-z]|sr[0-9]", SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
Ale jak spárovat po 26. zařízení?
Nelze napsat sd*
protože oddíly jako sda1
by se neměly shodovat.
Umím si představit, že napíšu další „nebo“ (symbol potrubí:|
), aby se shodovalo, jako:
KERNEL=="sd[a-z]|sd[a-z][a-z]|sr[0-9]"
Nebo rozdělte zápas na pozitivní a negativní část, například:
..., KERNEL=="sd[a-z]*|sr[0-9]", KERNEL!="sd[a-z]*[0-9]", ...
Existuje lepší způsob, jak napsat pravidla udev, která jsou čitelná, vyhovují zařízení #27 a vyššímu, ale ne žádnému oddílu?
Přijatá odpověď:
KERNEL=="sd*[!0-9]|sr*"
Lze je nalézt v samotných pravidlech udev dodaných operačním systémem.
V tomto případě Arch Linuxu se podívejte na soubor:
/usr/lib/udev/rules.d/60-persistent-storage.rules
Sekce ATA:
$ grep /usr/lib/udev/rules.d/60-persistent-storage.rules -e \"ATA\"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode"