Regras do Udev: como combinar apenas dispositivos do kernel (não partições) após o dispositivo # 26?

2

Alguns sistemas têm mais de 26 (blocos) dispositivos (como discos rígidos), que o kernel nomeia da seguinte maneira:

/dev/sda
...
/dev/sdz
/dev/sdaa
/dev/sdab
/dev/sdac
...

A maioria dos exemplos de regras do udev é bastante simples, correspondendo apenas aos primeiros 26 dispositivos, como por exemplo:

ACTION=="add|change", KERNEL=="sd[a-z]|sr[0-9]", SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"

Mas como combinar depois do 26º dispositivo? Não é possível escrever sd* porque partições como sda1 não devem ser correspondidas.

Eu posso imaginar escrever outro "ou" (símbolo de pipe: | ) para fazer a correspondência, como:

KERNEL=="sd[a-z]|sd[a-z][a-z]|sr[0-9]"

Ou divida a partida em uma parte positiva e negativa, como:

..., KERNEL=="sd[a-z]*|sr[0-9]", KERNEL!="sd[a-z]*[0-9]", ...

Existe uma maneira melhor de escrever regras do udev que sejam legíveis, que combinem com o dispositivo # 27, mas não com qualquer partição?

    
por Pro Backup 16.11.2017 / 18:45

1 resposta

2

KERNEL=="sd*[!0-9]|sr*"

Pode ser encontrado nas próprias regras do udev fornecidas pelo sistema operacional.

Neste caso do Arch Linux, dê uma olhada no arquivo:

/usr/lib/udev/rules.d/60-persistent-storage.rules

Seção 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"
    
por 16.11.2017 / 21:13