Alcuni sistemi hanno più di 26 dispositivi (a blocchi) (come i dischi rigidi), che il kernel nomina come segue:
/dev/sda
...
/dev/sdz
/dev/sdaa
/dev/sdab
/dev/sdac
...
La maggior parte degli esempi di regole udev sono abbastanza semplici, corrispondono solo ai primi 26 dispositivi, come ad esempio:
ACTION=="add|change", KERNEL=="sd[a-z]|sr[0-9]", SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
Ma come abbinare dopo il 26° dispositivo?
Non si può scrivere sd*
perché partizioni come sda1
non deve essere abbinato.
Posso immaginare di scrivere un altro "o" (simbolo pipe:|
) per creare la corrispondenza, come:
KERNEL=="sd[a-z]|sd[a-z][a-z]|sr[0-9]"
Oppure dividi la corrispondenza in una parte positiva e una negativa, come:
..., KERNEL=="sd[a-z]*|sr[0-9]", KERNEL!="sd[a-z]*[0-9]", ...
C'è un modo migliore per scrivere regole udev leggibili, che corrispondano al dispositivo n. 27 e successivi, ma non a nessuna partizione?
Risposta accettata:
KERNEL=="sd*[!0-9]|sr*"
Può essere trovato nelle stesse regole udev fornite dal sistema operativo.
In questo caso di Arch Linux, dai un'occhiata al file:
/usr/lib/udev/rules.d/60-persistent-storage.rules
Sezione 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"