LinuxParty

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Udev (userspace /dev ) es un subsistema de Linux para la detección y gestión dinámica de dispositivos, desde la versión 2.6 del kernel. Es un reemplazo de devfs y hotplug .

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

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

Una de las ventajas de udev es que puede usar nombres de dispositivo persistentes para garantizar un nombre constante de los dispositivos en los reinicios, a pesar de su orden de descubrimiento. Esta característica es útil porque el núcleo simplemente asigna nombres de dispositivos impredecibles según el orden de descubrimiento.

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

Aprenda los conceptos básicos de Udev en Linux

El demonio udev , systemd-udevd (o systemd-udevd.service ) se comunica con el núcleo y recibe los eventos del dispositivo directamente de él cada vez que agrega o elimina un dispositivo del sistema, o un dispositivo cambia su estado.

Udev se basa en reglas: sus reglas son flexibles y muy potentes. Cada evento de dispositivo recibido se compara con el conjunto de reglas leídas de los archivos ubicados en /lib/udev/rules.d y /run/udev/rules.d .

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

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

Cada vez que conecta un dispositivo al sistema, el núcleo lo detecta e inicializa, y se crea un directorio con el nombre del dispositivo en el directorio / sys / que almacena los atributos del dispositivo.

El archivo de configuración principal para udev es /etc/udev/udev.conf , y para controlar el comportamiento en tiempo de ejecución del udev daemon, puede usar la utilidad udevadm .

Para mostrar los eventos del núcleo recibidos ( uevents ) y los eventos udev (que udev envía después del procesamiento de la regla), ejecute udevadm con el comando monitor. Luego, conecte un dispositivo a su sistema y observe, desde la terminal, cómo se maneja el evento del dispositivo.

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

$ udevadm monitor 

Monitorear eventos de dispositivos en Linux

Para encontrar el nombre asignado a su disco USB, use la utilidad lsblk que lee el sistema de archivos sysfs y udev db para recopilar información sobre los dispositivos procesados.

 
$ lsblk

Listar dispositivos de bloque en Linux

A partir de la salida del comando anterior, se nombra el disco USB sdb1(la ruta absoluta debe ser /dev/sdb1). Para consultar los atributos del dispositivo desde la base de datos udev, use el comando info .

$ udevadm info /dev/sdb

Consultar atributos de dispositivo de Udev DB en Linux

Cómo trabajar con reglas Udev en Linux

En esta sección, discutiremos brevemente cómo escribir reglas udev . Una regla se compone de una lista separada por comas de uno o más pares clave-valor. Las reglas le permiten cambiar el nombre de un nodo de dispositivo del 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 agregue un dispositivo USB y cuando se elimine del sistema en ejecución.

Comencemos creando los dos scripts:

$ sudo vim /bin/device_added.sh

Agregue las siguientes líneas en el device_added.shscript.

#!/bin/bash
echo "Dispositivo USB agregado en fecha: $(date)" >>/tmp/scripts.log

Abre el segundo script.

$ sudo vim /bin/device_removed.sh

Luego agregue las siguientes líneas al device_removed.shscript.

#!/bin/bash
echo "Dispositivo USB eliminado en fecha: $(date)" >>/tmp/scripts.log

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

$ sudo chmod +x /bin/device_added.sh
$ sudo chmod +x /bin/device_removed.sh

A continuación, creemos una regla para activar la ejecución de los scripts anteriores, llamada /etc/udev/rules.d/80-test.rules .

$ vim /etc/udev/rules.d/80-test.rules

Agregue estas dos reglas siguientes en él.

SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device",  RUN+="/bin/device_added.sh"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/bin/device_removed.sh"

dónde:

  • "==": es un operador para comparar por igualdad.
  • "+=": es un operador para agregar el valor a una clave que contiene una lista de entradas.
  • SUBSYSTEM: coincide con el subsistema del dispositivo de evento.
  • ACTION: coincide con el nombre de la acción del evento.
  • ENV{DEVTYPE}: coincide con un valor de propiedad del dispositivo, tipo de dispositivo en este caso.
  • RUN: especifica un programa o script para ejecutar como parte del manejo de eventos.

Guarde el archivo y ciérrelo. Luego, como root, dígale a systemd-udevd que vuelva a cargar los archivos de reglas (esto también recarga otras bases de datos, como el índice del módulo del kernel), ejecutando.

$ sudo udevadm control --reload

Ahora conecte una unidad USB a su máquina y verifique si device_added.shse ejecutó el script. En primer lugar, el archivo scripts.log debe crearse en / tmp .

$ ls -l /tmp/scripts.log
[root@localhost ~]# ls -l /tmp/scripts.log 
-rw-r--r-- 1 root root 194 may 21 19:09 /tmp/scripts.log
[root@localhost ~]# cat /tmp/scripts.log
Dispositivo USB agregado en fecha Thu May 21 19:09:42 CEST 2020
Dispositivo USB eliminado en fecha: Thu May 21 19:09:45 CEST 2020
Dispositivo USB agregado en fecha Thu May 21 19:09:48 CEST 2020
[root@localhost ~]#

Verifique el registro de secuencias de comandos después de agregar USB

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

$ cat /tmp/scripts.log
[root@localhost ~]# cat /tmp/scripts.log 
Dispositivo USB agregado en fecha Thu May 21 19:09:42 CEST 2020
Dispositivo USB eliminado en fecha: Thu May 21 19:09:45 CEST 2020
Dispositivo USB agregado en fecha Thu May 21 19:09:48 CEST 2020
[root@localhost ~]#

Verifique el registro de secuencias de comandos después de quitar el USB

Para obtener más información sobre cómo escribir reglas udev y administrar udev, consulte las entradas manuales udev y udevadm 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 /devdirectorio. Asegura que los dispositivos se configuran tan pronto como se enchufan y se descubren. Propaga información sobre un dispositivo procesado o cambia a su estado, al espacio del usuario.

Si tiene preguntas o ideas para compartir sobre este tema, use el formulario de comentarios.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política