Estoy creando una nueva regla básica
/etc/udev/rules.d/10-myrule.rules
que contiene:
KERNEL!="sdb*", GOTO="auto_mount_end"
ACTION=="add", RUN+="/usr/bin/mount /dev/sdb1 /media"
LABEL="auto_mount_end"
Guardé, reinicié e inserté una tarjeta SD (reconocida por /dev/sdb1
, lo veo con dmesg
), pero no sucede nada. Cuando lo hago manualmente mount /dev/sdb1 /media
, funciona.
¿Cómo puedo solucionar / depurar dicha udev
regla?
Nota: Estoy usando ArchLinux, pero ¿debería ser igual en cualquier distribución?
arch-linux
mount
udev
Basj
fuente
fuente
99-myrule.rules
...systemd
Cambia algo el comportamiento normal de udev?udevadm monitor
, mira esto y estoudevadm test
validado las reglas contra la realidad conudevadm info
.Respuestas:
10-
como lo mencionó jasonwryan, use una numeración alta (buena para los 90). Así que tu regla no será anulada por otra.Use las teclas mínimas tal como realmente necesita. Ejemplo,
!=
&GOTO
/LABEL
, en lugar de usar directamente==
Su objetivo era
sdb1
con un comando fijo, minimice la coincidencia ciega usandoKERNEL=="sdb1"
Me resulta útil crear una regla de depuración de sombra, llamé a shadow porque siempre la dejo allí en el mismo archivo, así que la uso cuando la necesito.
Nota:
udev-env.txt
se crea y la regla se activa de todos modos. Línea==
correspondiente a un nodo coincidente. El ENV registrado en ese archivo podría ser una mezcla entre 2 nodos o más, creado casi al mismo tiempo, es unstdout
problema de almacenamientoenbúfer.Uso
udevadm monitor -u
,udevadm test ...
yudevadm trigger ...
para verificar qué reglas procesan los eventos.Dentro de los scripts, depende de usted hacer el registro de depuración y capturar comandos fallidos, guardando también el valor de retorno
stdout
y losstderr
mensajes.Actualizar:
Referencia: udev_237 -
man udev
(Ubuntu_18.04)fuente
udevadm test...
Parece que un par de comentarios solo le muestran variables de entorno,ATTRS
que puede usarudevadm info $DEVICE
para encontrar estas otras configuraciones.udevadm info
retornos, un árbol de dispositivos debe tener cuidado de distinguir la configuración entre un dispositivo y sus dispositivos principales (las propiedades parecen heredarse si no se anulan). En mi caso, el subsistema estaba mal.udevadm test "This program is for debugging only, it does not run any program specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run."
¿No hay forma de rastrear lo que realmente está sucediendo?udevadm monitor -u
para verificar eventos / condiciones yudevadm trigger ...
probar sus acciones.Creo que el comando que estás buscando aquí es
udevadm
. Utilizará los parámetrostrigger
ytest
para activar un nuevo análisis de los eventos udev y para probar un evento específico, respectivamente.Aprendí esto de la manera difícil cuando busqué con el nuevo nombre de dispositivo de red en EL 7. ¡Buena suerte!
fuente
Crear un archivo de reglas de udev
Agregue una regla que le indique a los udiscos que lo monten automáticamente
ATTRS{type}=="SD"
puede no ser necesario si está utilizando diferentes tipos.Reglas de recarga
Expulsar y luego volver a poner.
Referencia: Archlinux Wiki: algunos dispositivos, que deben tratarse como extraíbles, no son
fuente
Estaba teniendo el mismo problema con FRAMBUESA PI 3 B +, podría ser posible que los comandos anteriores puedan ayudarlo. Pero no me ayudó. Intenté invocar un script al insertar un dispositivo de almacenamiento USB. Las reglas no se registran en syslog, por lo que resulta muy difícil entender qué regla funcionó o qué falló.
Entonces hice lo siguiente:
(1) Hice mi archivo de reglas en /etc/udev/rules.d/100-myrule.rules
(2) luego ejecuté el comando
sudo /etc/init.d/udev restart
Luego verifiqué que funcionó. Una información puede ser útil para usted o no, pero los sistemas de archivos son de solo lectura para udev hasta que se ejecute el comando en (2).
fuente