Beberapa sistem memiliki lebih dari 26 (blok) perangkat (seperti hard disk drive), yang diberi nama kernel sebagai berikut:
/dev/sda
...
/dev/sdz
/dev/sdaa
/dev/sdab
/dev/sdac
...
Sebagian besar contoh aturan udev cukup sederhana, hanya cocok dengan 26 perangkat pertama, seperti misalnya:
ACTION=="add|change", KERNEL=="sd[a-z]|sr[0-9]", SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
Tetapi bagaimana cara mencocokkan setelah perangkat ke-26?
Seseorang tidak dapat menulis sd*
karena partisi seperti sda1
tidak boleh dicocokkan.
Saya dapat membayangkan menulis “atau” lainnya (simbol pipa:|
) untuk membuat kecocokan, seperti:
KERNEL=="sd[a-z]|sd[a-z][a-z]|sr[0-9]"
Atau bagi kecocokan menjadi bagian positif dan negatif, seperti:
..., KERNEL=="sd[a-z]*|sr[0-9]", KERNEL!="sd[a-z]*[0-9]", ...
Apakah ada cara yang lebih baik untuk menulis aturan udev yang dapat dibaca, cocok dengan perangkat #27 dan yang lebih baru, tetapi bukan partisi apa pun?
Jawaban yang Diterima:
KERNEL=="sd*[!0-9]|sr*"
Dapat ditemukan di sistem operasi yang disediakan aturan udev sendiri.
Dalam kasus Arch Linux ini, lihat file:
/usr/lib/udev/rules.d/60-persistent-storage.rules
Bagian 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"