regras do udev excluem dispositivo

regras do udev excluem dispositivo

é possível usar regras do udev para excluir um único dispositivo da regra?

por exemplo, se eu tiver 5 discos rígidos conectados e quiser criar nomes personalizados para todos os discos rígidos, exceto um único? É possível?

Além disso, os discos com nomes de kernel após sdz são nomeados com 2 caracteres. sdaa, sdab, sdqr etc. Tenho um problema com isso, pois não quero incluir a partição em sda1, sdb2 etc. posso usar curinga para todos os caracteres, mas não para todos os números?

exemplo:

KERNEL=="sd??",  NAME="test/Disk%n",  ATTRS{ID_SERIAL_SHORT}!="xxxx"

Responder1

por exemplo, se eu tiver 5 discos rígidos conectados e quiser criar nomes personalizados para todos os discos rígidos, exceto um único? É possível?

  • Você pode usar GOTOpara pular regras:

    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"
    
  • Observe que isso ID_SERIAL_SHORTnão é um atributo; é uma variável de "ambiente" do udev, então você precisa usar ENV{}ou ENVS{}combiná-la. Os atributos são lidos diretamente do sysfs.

  • Observe também que as versões recentes do udev proíbem renomear dispositivos; você só pode adicionar links simbólicos personalizados.

Além disso, os discos com nomes de kernel após sdz são nomeados com 2 caracteres. sdaa, sdab, sdqr etc. Tenho um problema com isso, pois não quero incluir a partição em sda1, sdb2 etc. posso usar curinga para todos os caracteres, mas não para todos os números?

  • Você está usando a abordagem errada. Se você deseja combinar discos, mas não partições, entãofaça exatamente isso:

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

    Os DEVTYPEvalores podem ser vistos em udevadm info /dev/sdae udevadm info /dev/sda1.

informação relacionada