udev/es

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Udev and the translation is 96% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

Warning: Display title "udev/es" overrides earlier display title "Udev".

Not to be confused with eudev.

udev es el gestor de dispositivos para el núcleo Linux. Gestiona los nodos de dispositivo en /dev y también todos las acciones en espacio de usuario cuando se añaden o eliminan dispositivos. El lector debería también echar un vistazo a [Project:Eudev|eudev] una bifurcación de udev.

¿Qué es udev?

El directorio /dev

Most Linux users understand that /dev/sda1 is just a fast way of referring to the first partition on the first disk that the kernel found. That's pretty easy, right?

But consider hotpluggable devices like USB, IEEE 1394, hot-swappable PCI, etc. What is the first device for each of these? And for how long? What will the other devices be named when the first one disappears? How will that affect ongoing transactions? Wouldn't it be fun if a printing job were suddenly moved from a high-end laser printer to an almost-dead matrix printer just because someone decided to pull the plug on the laser printer (which just happened to be the first printer)?

Enter the device manager. A modern device manager (including udev and eudev) must:

  • Run in userspace;
  • Dynamically create and remove device files;
  • Provide consistent device naming;
  • Provide a userspace application program interface (API).

Every time a change happens within the device structure, the kernel emits a uevent which gets picked up by the device manager. The device manager then follows the rules declared in the /etc/udev/rules.d, /run/udev/rules.d and /lib/udev/rules.d directories. Based on the information contained within the uevent, it finds the rule or rules it needs to trigger and performs the required actions. These actions may involve the creation or deletion of device files, and may also trigger the loading of particular firmware files into kernel memory.

Instalación

Importante
Cuando actualice udev, eche un vistazo a guía de actualización de udev para obtener información sobre cómo evitar que los sistemas no inicien.

Núcleo

udev necesita las siguientes opciones del núcleo:

KERNEL
General setup --->
  [*] Configure standard kernel features (expert users) --->
     [ ] Enable deprecated sysfs features to support old userspace tools
     [*] Enable signalfd() system call
Enable the block layer --->
  [*] Block layer SG support v4
Networking support --->
  Networking options --->
     <*> Unix domain sockets
Device Drivers --->
  Generic Driver Options --->
     () path to uevent helper
     [*] Maintain a devtmpfs filesystem to mount at /dev
  < > ATA/ATAPI/MFM/RLL support (DEPRECATED) --->
File systems --->
  [*] Inotify support for userspace
  Pseudo filesystems --->
     [*] /proc file system support
     [*] sysfs file system support

Ajustes USE

Portage reconoce el ajuste USE global udev para habilitar el soporte de udev en otros paquetes. Al añadir este ajuste USE a la lista de ajustes (se realiza por defecto en todos los perfiles) se instalará automáticamente el paquete sys-fs/udev:

ARCHIVO /etc/portage/make.conf
USE="udev"

USE flags for sys-fs/udev Linux dynamic and persistent device naming support (aka userspace devfs)

acl Add support for Access Control Lists global
kmod Enable kernel module loading/unloading support using sys-apps/kmod local

Emerge

Después de definir los ajustes USE, seguramente se desee actualizar el sistema para que los cambios tengan efecto:

root #emerge --ask --changed-use --deep @world

Configuración

Servicio

Para arrancar udev en el inicio del sistema, añádalo al nivel de ejecución sysinit. Esto se puede hacer lanzando la siguiente orden con privilegios de root:

root #rc-update add udev sysinit

Keep classic 'eth0' naming

Network device names eth0, wlan0, etc. as provided by the kernel could be changed on boot (see dmesg) by the /lib/udev/rules.d/80-net-name-slot.rules udev rule.

To keep the classic naming this rule can be overwritten with an equally named empty file in the /etc/udev/rules.d directory:

root #touch /etc/udev/rules.d/80-net-name-slot.rules

Configuración avanzada

Reglas

Udev ofrece un conjunto de reglas que concuerdan con los valores exportados de los uevents (eventos enviados por el núcleo) y las propiedades del dispositivo que se ha descubierto. Una regla que concuerda posiblemente creará y nombrará un nodo de dispositivo y lanzará los programas definidos para poner en marcha y configurar el dispositivo.

Las definiciones de las reglas se almacenan en dos localizaciones:

  1. /lib/udev/rules.d/. Las reglas en este directorio son instaladas por determinados paquetes, normalmente los usuarios no deberían cambiarlas.
  2. /etc/udev/rules.d/. Este directorio es para las reglas especificadas por los usuarios finales. Cualquier nueva regla se debe añadir en este directorio.

En estos directorios se recorren en orden alfabético múltiples ficheros de reglas (con el sufijo .rules), udev buscará expresiones que concuerden con un uevent y con el estado definido (es el uevent debido que se ha añadido o retirado un dispositivo) y la orden a ejecutar.

La concordancia del evento se basa en información como:

  • El SUBSYSTEM del uevent (para qué tipo de dispositivo se dispara el uevent).
  • La ACTION que se realiza (añadir, cambiar o eliminar).
  • Uno o más atributos (a través de ATTR o ATTRS), tales como la clase del dispositivo, el fabricante u otra información del dispositivo.
  • El nombre que ofrece el núcleo (a través de KERNEL), como sd* (para los discos SCSI/SATA) o input* (para dispositivos de entrada como ratones y teclados)
  • Uno o más ajustes de entorno (a través de ENV), utilizados para enviar información entre múltiples reglas.

Basándose en esta información, la regla puede entonces comprobar sí:

  1. Se necesita compartir alguna información con eventos posteriores (a través de variables de entorno)
  2. Se necesita crear enlaces en /dev
  3. Se necesita lanzar alguna orden

Udev realiza esto para cada regla que concuerda (por lo que no se detiene en la primera concordancia) para permitir un enfoque flexible de gestión de los dispositivos.

Nombres persistentes de dispositivos

El núcleo detecta los dispositivos de forma asíncrona. Udev crea un reflejo del sistema de ficheros del núcleo sysfs y por lo tanto los dispositivos se nombran y numeran en el orden de su detección. Así, por defecto udev no ofrece nombres persistentes de los dispositivos. Sin embargo, existen mecanismos de algunas clases de dispositivo para ofrecerlos:

  • Udev crea enlaces simbólicos adicionales para los dispositivos de almacenamiento basándose en el identificador (ID), la etiqeta, el UUID y la ruta del dispositivo. Eche un vistazo al directorio /dev/disk/by-*. Por lo que, por ejemplo, en lugar de utilizar el archivo de dispositivo /dev/sda utiliza el fichero /dev/disk/by-label/ALGUNA_ETIQUETA.
  • Lo mismo aplica para los dispositivos de entrada en el directorio /dev/input.
  • Usando reglas propias los usuarios pueden crear sus propios ficheros de dispositivo.

Utilización

Algunas órdenes útiles son las siguientes:

  • Mostrar todos los mensajes sobre un determinado archivo de dispositivo: :
    root #udevadm info --query=all --name=/dev/FICHERO_DE_DISPOSITIVO
  • Monitorizar las actividades de udev:
    root #udevadm monitor
  • Asignar un nombre persistente a un dispositivo ethernet:
ARCHIVO /etc/udev/rules.d/ethernet.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="01:23:45:67:89:ab", NAME="eth6789ab"

Lea la página del manual de udevadm para más información.

Resolución de problemas

Registrar mensajes del monitor

Para registrar todos los mensajes cuando se lanza udevadm monitor, se debe modificar el siguiente fichero de configuración:

ARCHIVO /etc/conf.d/udev
udev_monitor="YES"

Se creará un el nuevo fichero de registro localizado en /run/udev/udevmonitor.log.

Modo depuración

Habilitar el modo depuración permitirá mostrar más mensajes de registro:

ARCHIVO /etc/conf.d/udev
udev_debug="YES"

Defina la prioridad del registro:

ARCHIVO /etc/udev/udev.conf
udev_log="debug"

Se creará el fichero de registro /run/udevdebug.log pero no se mostrarán mensajes en él. Las versiones más recientes de udev mostrarán todos los mensajes en dmesg.

Faltan los ficheros de dispositivo /dev/null y /dev/console

Algunas versiones de udev necesitan los ficheros /dev/null y /dev/console para funcionar correctamente pero no pueden crearlos ellos mismos. Para crear manualmente estos ficheros por udev, lance las siguientes ordenes con privilegios de root:

root #mkdir test
root #mount --bind / test
root #cd test/dev
root #mknod -m 660 console c 5 1
root #mknod -m 660 null c 1 3
root #cd ../..
root #umount test
root #rmdir test

NIC asignada a eth0 pero se mueve a eth1

En las placas base con dos tarjetas de red puede suceder que ifconfig no muestre ni eth0 ni eth1. La orden dmesg puede mostrar las NIC detectadas como eth0 y luego cambiar a eth1. Al realizar un ifconfig -a también se mostrar la NIC como eth1. Esto es debido a que el núcleo asigna estos nombres en primer lugar. Los usuarios deben escribir sus propias reglas personalizadas como /etc/udev/rules.d/70-my-network.rules para usar los nombres que elija como lan0 o wireless0 o utilizar los nombres predecibles para las interfaces (que se han habilitado por defecto a partir de la versión 197 de udev).

Recuerde también eliminar los ficheros antiguos de las versiones anteriores de udev:

root #rm /etc/udev/rules.d/70-persistent-net.rules /etc/systemd/network/99-default.link

Asegúrese también de no pasar net.ifnames=0 en la línea de órdenes del núcleo. Este ajuste desactivaría la característica de nombres predecibles de dispositivo para todo el sistema udev.

== Ver también ==.

Recursos externos

Recursos externos

Bug 575718 - Petición para que el consejo decida en relación al proveedor por defecto de virtual/udev - Proveedor por defecto de virtual/udev ha cambiado a sys-fs/eudev