personalización y depuración de reglas udev
En proyectos de personalización, la gestión de la conexión en caliente de periféricos la gestiona básicamente udev/systemd-udev. El uso básico de udev/escritura de reglas no se trata aquí.
1. Posibles ubicaciones para las reglas de udev
/lib/udev/rules.d -- reglas predeterminadas/preconfiguradas de udev
/etc/udev/ reglas. d/ -- Reglas personalizadas, con mayor prioridad que /lib/udev/rules.d, recomendadas oficialmente para los clientes. Los funcionarios recomiendan que los clientes pongan aquí todas las reglas que escriben
Por favor, decida dónde colocarlas, porque está modificando el sistema y debe saber lo que está haciendo
2. Personalice su reglas propias
Personalizar eventos de conexión en caliente Las reglas específicas son las siguientes:
?1) Filtrar los eventos udev correctos.
?2) Especifique la operación a realizar, el "EJECUTAR" en la regla, generalmente un script (después de todo, para completar una función, la mayoría de los escenarios no se pueden manejar con un solo comando)
3. En este punto es necesario diseñar la depuración de las reglas
?1) ¿Cómo sé qué condiciones filtrar?
?2) ¿Cómo pasar los parámetros necesarios al script ejecutado por RUN?
Método 1:
udevadm monitor -p
-- Monitorea los eventos de conexión en caliente del kernel/udevd. La opción -p imprime el hot-plug actual. -plug events son obligatorios
Aquí están las diferencias en los atributos de eventos cuando el dispositivo está enchufado y desconectado, que se pueden usar como condiciones de filtrado
Por ejemplo:
p>
udevadm monitor -p
-- Monitorea los eventos de conexión en caliente de kernel/udevd La opción -p es necesaria para imprimir algunos atributos del evento de conexión en caliente actual
.Aquí está la comparación de la inserción del dispositivo y la diferencia en los atributos del evento al desconectar, esto se puede usar como condición de filtrado
Las reglas en el archivo de reglas son:
Estos requisitos muchas veces se pueden satisfacer, si todavía hay escenarios que no se pueden resolver, debemos modificar aún más las condiciones del filtro.
man udev proporcionará información para la mayoría de las palabras clave (si desea todas las palabras clave, debe ver el código fuente).
Método 2:
Descubra la diferencia entre las propiedades que existen en el dispositivo y las propiedades que no existen pasando parámetros en el script especificado por RUN.
Por ejemplo:
Referencia:
a), clave de coincidencia de reglas udev
Acción: el comportamiento del evento (uevent) , por ejemplo agregar (agregar dispositivo), eliminar (eliminar dispositivo).
KERNEL: Nombre del dispositivo del kernel, como sda, cdrom.
DEVPATH:? La ruta Devpath del dispositivo.
SUBSISTEMA: El nombre del subsistema del dispositivo, por ejemplo, el subsistema de sda es bloque.
BUS: El nombre del bus del dispositivo en devpath, como usb.
DRIVER: El nombre del controlador del dispositivo en devpath, como ide-cdrom.
SYSFS{filename}: el contenido del archivo de propiedades del dispositivo "filename" en la ruta devpath del dispositivo.
Por ejemplo, SYSFS{model}==="ST936701SS " significa que si el modelo del dispositivo es ST936701SS, el dispositivo coincide con esta palabra clave coincidente.
Puede configurar hasta cinco palabras clave coincidentes SYSFS en una regla.
ENV{key}: variable de entorno. Se pueden establecer hasta cinco claves coincidentes de variables de entorno en una regla.
PROGRAMA: Programa: llama a comandos externos.
RESULTADO: ?Devuelve el resultado del comando externo PROGRAMA.
b) Claves de asignación importantes para udev
NOMBRE: El nombre del archivo del dispositivo generado en /dev. Sólo tendrá efecto la primera asignación del nombre del dispositivo; las reglas de coincidencia posteriores se ignorarán. Si no existe una regla para asignar un valor al nombre del dispositivo, udev generará el archivo del dispositivo utilizando el nombre del dispositivo del kernel.
SYMLINK: Genera enlaces simbólicos que apuntan a archivos de dispositivo en /dev/. Dado que udev solo puede generar un archivo de dispositivo para un dispositivo determinado, se recomienda utilizar enlaces simbólicos para evitar sobrescribir los archivos generados por las reglas udev predeterminadas del sistema.
PROPIETARIO, GRUPO, MODO: Establece los permisos del dispositivo.
ENV{key}: Importa una variable de entorno.
c), valores udev y operadores de sustitución invocables
Los usuarios de Linux pueden personalizar los valores de los archivos de reglas udev como quieran. Por ejemplo: mi_disco_raíz, mi_impresora. También se pueden llamar los siguientes operadores de reemplazo:
$kernel, %k: el nombre del dispositivo del kernel, como sda, cdrom.
$number, %n: el número de kernel del dispositivo, por ejemplo, el número de kernel de sda3 es 3.
$devpath, %n: El número de kernel del dispositivo.
$id, %b: El número de identificación del dispositivo en devpath.
$sysfs{file}, %s{file}:? El contenido del archivo en el dispositivo sysfs. En realidad, este es el valor de la propiedad del dispositivo.
$env{key}, %E{key}: el valor de la variable de entorno.
$major, %M: El número principal del dispositivo.
$minor %m: El número menor del dispositivo.
$resultado, %c: El resultado devuelto por PROGRAMA.
$parent, %P: el nombre de archivo del dispositivo principal.
$root, %r: valor ?udev_root, el valor predeterminado es /dev/.
$tempnode, %N: Nombre del dispositivo temporal.
%%: El símbolo % en sí.
$$: El símbolo $ en sí.
Compare esto con $sysfs{file} en man, que es muy útil para resolver problemas.
Este método es adecuado para depurar reglas al iniciar el sistema, lo cual no es posible con el monitor udevadmin. (Por supuesto, también puede intentar escribir el servicio de inicio de systemd usted mismo, lo que implica tiempo de inicio, asociación, efectos, etc. La operación real será más complicada de lo imaginado)
Hay dos puntos aquí:
1. env - puede ser un atributo en el evento udev (-p lo imprime)
2. $sysfs{file}, el archivo aquí se refiere al archivo bajo el Nodo correspondiente en el directorio system/sys. En algunos casos, solo la memoria de archivos en sysfs puede distinguir con precisión los eventos.