GNU/Linux >> Tutoriales Linux >  >> Linux

Linux – Reglas de Udev:¿Cómo hacer coincidir solo los dispositivos del kernel (no las particiones) después del dispositivo n.º 26?

Algunos sistemas tienen más de 26 dispositivos (de bloque) (como unidades de disco duro), que el kernel nombra de la siguiente manera:

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

La mayoría de los ejemplos de reglas de udev son bastante simples, solo coinciden con los primeros 26 dispositivos, como por ejemplo:

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

Pero, ¿cómo hacer coincidir después del dispositivo 26?
No se puede escribir sd* porque particiones como sda1 no debe coincidir.

Me imagino escribiendo otro "o" (símbolo de tubo:| ) para hacer la coincidencia, como:

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

O divide el partido en una parte positiva y negativa, como:

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

¿Hay una mejor manera de escribir reglas de udev que sean legibles, que coincidan con el dispositivo n.º 27 en adelante, pero no con ninguna partición?

Respuesta aceptada:

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

Se puede encontrar en las propias reglas udev proporcionadas por el sistema operativo.

En este caso de Arch Linux, eche un vistazo al archivo:

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

Sección 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"

Linux
  1. Cómo actualizar Kernel en Linux Desktop

  2. El dispositivo Linux no muestra el espacio en disco correcto después de un cambio de tamaño

  3. Cómo configurar Chroot SFTP en Linux (Permitir solo SFTP, no SSH)

  4. Cómo configurar reglas UDEV para RAC OCR y dispositivos de votación en particiones

  5. Salida lsblk de Linux

Cómo cargar o descargar un módulo del kernel de Linux

Cómo enumerar particiones de disco en Linux

Cómo detectar y administrar dispositivos en Linux

¿Cómo codificar un módulo del kernel de Linux?

Hacer que udev ignore ciertos dispositivos durante el arranque

¿Cómo verificar si el kernel de Linux está habilitado para Retpoline o no?