Cómo usar UDEV para la detección y administración de dispositivos en Linux

Cómo usar UDEV para la detección y administración de dispositivos en Linux

Udev (espacio de usuario /desarrollo) es un subsistema de Linux para la detección y administración de dispositivos dinámicos, ya que la versión del kernel 2.6. Es un reemplazo de devfs y conexión en caliente.

Dinámicamente crea o elimina los nodos del dispositivo (una interfaz a un controlador de dispositivo que aparece en un sistema de archivos como si fuera un archivo ordinario, almacenado en el /desarrollo directorio) en el momento de la arranque o si agrega un dispositivo o elimina un dispositivo del sistema. Luego propaga información sobre un dispositivo o cambia a su estado al espacio de usuario.

Su función es 1) suministrar las aplicaciones del sistema con eventos del dispositivo, 2) Administrar los permisos de los nodos del dispositivo y 3) puede crear enlaces simbólicos útiles en el /desarrollo Directorio para acceder a dispositivos, o incluso renombres de interfaces de red.

Uno de los pros de udev es que puede usar nombres de dispositivos persistentes para garantizar el nombramiento constante de los dispositivos a través de los reinicios, a pesar de su orden de descubrimiento. Esta característica es útil porque el kernel simplemente asigna nombres de dispositivos impredecibles basados ​​en el orden del descubrimiento.

En este artículo, aprenderemos a usar Udev Para la detección y administración de dispositivos en los sistemas Linux. Tenga en cuenta que la mayoría de las distribuciones modernas de Linux, si no todas, vienen con Udev Como parte de la instalación predeterminada.

Aprenda conceptos básicos de UDEV en Linux

El udev demonio, Systemd-UDVD (o Systemd-UDVD.servicio) se comunica con el kernel y recibe dispositivo Ueventos directamente de él cada vez que agrega o elimina un dispositivo del sistema, o un dispositivo cambia su estado.

Udev se basa en las reglas: sus reglas son flexibles y muy poderosas. Cada evento de dispositivo recibido coincide con el conjunto de reglas leídas de los archivos ubicados en /lib/udev/reglas.d y /ejecutar/udev/reglas.d.

Puede escribir archivos de reglas personalizadas en el /etc/udev/reglas.d/ directorio (los archivos deben terminar con el .normas extensión) para procesar un dispositivo. Tenga en cuenta que los archivos de reglas en este directorio tienen la más alta prioridad.

Para crear un archivo de nodo de dispositivo, udev necesita identificar un dispositivo que use ciertos atributos, como el etiqueta, número de serie, su número mayor y menor utilizado, número de dispositivo de bus y mucho más. Esta información es exportada por el sysfs sistema de archivos.

Siempre que conecte un dispositivo al sistema, el kernel lo detecta e inicializa, y se crea un directorio con el nombre del dispositivo debajo /sys/ Directorio que almacena los atributos del dispositivo.

El archivo de configuración principal para UDEV es /etc/udev/udev.confusión, Y para controlar el comportamiento de tiempo de ejecución, el demonio UDEV, puede usar el udevadm utilidad.

Para mostrar el núcleo recibido eventos (Ueventos) y Eventos de UDEV (que UDEV envía después del procesamiento de reglas), ejecute udevadm con el comando monitor. Luego conecte un dispositivo a su sistema y observe, desde el terminal, cómo se maneja el evento del dispositivo.

La siguiente captura de pantalla muestra un extracto de un AGREGAR evento después de conectar un disco Flash USB al sistema de prueba:

$ UDEVADM MONITOR 
Monitorear eventos del dispositivo en Linux

Para encontrar el nombre asignado a su disco USB, use la utilidad LSBLK que lee la sysfs sistema de archivos y UDEV DB Para recopilar información sobre dispositivos procesados.

 $ lsblk 
Lista de dispositivos de bloque en Linux

Desde la salida del comando anterior, se nombra el disco USB sdb1 (el camino absoluto debería ser /dev/sdb1). Para consultar los atributos del dispositivo desde la base de datos UDEV, use la comando de información.

$ UDEVADM INFO /DEV /SDB1 
Atributos del dispositivo de consulta de UDEV DB en Linux

Cómo trabajar con las reglas UDEV en Linux

En esta sección, discutiremos brevemente cómo escribir udev normas. Una regla se compone de una lista separada por comas de uno o más pares de valores clave. Las reglas le permiten cambiar el nombre de un nodo de dispositivo desde el nombre predeterminado, modificar los permisos y la propiedad de un nodo de dispositivo, activar la ejecución de un programa o script cuando se crea o elimina un nodo de dispositivo, entre otros.

Escribiremos una regla simple para iniciar un script cuando se agrega un dispositivo USB y cuando se elimine del sistema en ejecución.

Comencemos creando los dos scripts:

$ sudo vim /bin /dispositivo_added.mierda 

Agregue las siguientes líneas en el dispositivo_added.mierda guion.

#!/Bin/Bash Echo "Dispositivo USB agregado a $ (fecha)" >>/tmp/scripts.registro 

Abra el segundo script.

$ sudo vim /bin /dispositivo_removed.mierda 

Luego agregue las siguientes líneas a dispositivo_removed.mierda guion.

#!/bin/bash echo "dispositivo USB eliminado a $ (fecha)" >>/tmp/scripts.registro 

Guarde los archivos, cierre y haga que ambos scripts sean ejecutables.

$ sudo chmod +x /bin /dispositivo_added.sh $ sudo chmod +x /bin /dispositivo_removed.mierda 

A continuación, creemos una regla para activar la ejecución de los scripts anteriores, llamado /etc/udev/reglas.prueba de d/80.normas.

$ vim/etc/udev/reglas.prueba de d/80.normas 

Agregue estas dos reglas siguientes en él.

Subsistema == "USB", Action == "Add", Env DevType == "USB_Device", Run+= "/bin/dispositivo_added.sh "subsistema ==" usb ", acción ==" eliminar ", env devType ==" usb_device ", run+="/bin/dispositivo_removed.mierda 

dónde:

  • "==": es un operador para comparar la igualdad.
  • "+=": es un operador para agregar el valor a una clave que contiene una lista de entradas.
  • SUBSISTEMA: coincide con el subsistema del dispositivo de eventos.
  • ACCIÓN: coincide con el nombre de la acción del evento.
  • Env devtype: coincide con un valor de propiedad de un dispositivo, tipo de dispositivo en este caso.
  • CORRER: especifica un programa o script para ejecutar como parte del manejo del evento.

Guarde el archivo y cierre. Entonces como raíz, dile Systemd-UDVD Para recargar los archivos de reglas (esto también vuelve a cargar otras bases de datos, como el índice del módulo de kernel), ejecutándose.

$ sudo Udevadm Control -Reload 

Ahora conecte una unidad USB a su máquina y verifique si el dispositivo_added.mierda Se ejecutó el script. En primer lugar el archivo guiones.registro debe crearse debajo /TMP.

$ ls -l /tmp /scripts.registro 
Verifique el registro de scripts después de agregar USB

Entonces el archivo debe tener una entrada como "Dispositivo USB eliminado en date_time", Como se muestra en la captura de pantalla.

$ Cat /TMP /Scripts.registro 
Verifique el registro de scripts después de eliminar USB

Para obtener más información sobre cómo escribir las reglas de UDEV y administrar UDEV, consulte el udev y udevadm Entradas manuales respectivamente, ejecutando:

$ man udev $ man udevadm 
Resumen

Udev es un administrador de dispositivos notable que proporciona una forma dinámica de configurar nodos de dispositivos en el /desarrollo directorio. Asegura que los dispositivos estén configurados tan pronto como estén enchufados y descubiertos. Propaga información sobre un dispositivo procesado o cambia a su estado, al espacio de usuario.

Si tiene alguna pregunta o pensamiento para compartir sobre este tema, use el formulario de comentarios.