Eudev

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

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

Warning: Display title "eudev/es" overrides earlier display title "Eudev".

Resources

Not to be confused with udev/es.

eudev es una bifurcación del proyecto udev de Gentoo, el gestor de ficheros de dispositivo para el núcleo Linux.[1] Gestiona los nodos de dispositivo en /dev y maneja todas las acciones en espacio de usuario cuando se añaden o eliminan dispositivos.

La meta de eudev es conseguir una mejor compatibilidad con el software ya instalado como los sistemas de inicio OpenRC, Upstart, antiguos núcleos Linux, algunas cadenas de herramientas y cualquier otra cosa que se necesite [2] por (todavía no está bien soportado) udev.

Al igual que los términos ebuild, eclass, emerge, etc. El nombre asignado al proyecto eudev conserva la convención de utilizar el prefijo 'E' que inició el fundador de Gentoo Daniel Robbins.

Las configuraciones de sistema que corren systemd no tienen sentido para eudev.

El directorio /dev

La mayoría de los usuarios de Linux comprenden que /dev/sda1 es una forma rápida de referirse a la primera partición del primer disco que ha detectado el núcleo. Esto es muy fácil ¿no?

Pero tenga en cuenta los dispositivos que se enchufan en caliente como los USB, IEEE 1394, tarjetas PCI que se conectan en caliente, etc. ¿Cuál es el primer dispositivo de cada uno de estos tipo? ¿Y por cuánto tiempo? ¿Cómo se llamarán los demás dispositivos cuando el primero desaparezca? ¿Cómo afectará ésto a las transacciones en curso? ¿No sería divertido si un trabajo de impresión se cambiase de repente desde una impresora láser de última generación a una moribunda impresora de matriz solo porque alguien decidió desenchufar la impresora láser (que casualmente era la primera impresora)?

Abra el gestor de dispositivos. Un gestor de dispositivos actual (incluyendo udev y eudev) debe:

  • Corre en espacio de usuario
  • Crea y borra archivos de dispositivo dinámicamente
  • Ofrece un nombrado consistente
  • Ofrece un interfaz de aplicación (API) en el espacio de usuario

Cada vez que se produce un cambio en la estructura de los dispositivos, el núcleo emite un uevent el cual es recogido por el gestor de dispositivos. Este gestor de dispositivos sigue las reglas declaradas en los directorios /etc/udev/rules.d, /run/udev/rules.d y /lib/udev/rules.d. Basándose en la información contenida en el evento, busca la regla o reglas que necesita ejecutar y realiza las acciones requeridas. Estas acciones pueden involucrar la creación o eliminación de ficheros de dispositivo y pueden también disparar la carga de ficheros de firmware particulares en la memoria del núcleo.

Instalación

Ajustes USE

Algunos paquetes soportan el ajuste USE udev para habilitar la integración de virtual/udev.

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

hwdb read vendor/device string database and add it to udev database
introspection Add support for GObject based introspection
kmod enable module loading through libkmod
rule-generator install legacy rule generator rules and support scriptsnote that the functionality within was dropped from sys-fs/udev as it is not stable in all cases; use at your own risk
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
static-libs Build static versions of dynamic libraries as well
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)

Emerge

Para evitar el registro en el conjunto world, se debe utilizar la opción oneshot.

root #emerge --ask --oneshot sys-fs/eudev

Configuración

Servicio RC

El nombre RC es udev no eudev. Se necesita registrar en el nivel de ejecución sysinit.

root #rc-update add udev sysinit
 * rc-update: udev already installed in runlevel `sysinit'; skipping

A partir de la versión 29 del paquete sys-fs/udev-init-scripts se debe añadir udev-trigger al nivel de ejecución sysinit.

Migrar desde udev a eudev

La migración desde udev 216 a eudev 1.10-r2 (Marzo de 2015) es simple y directo:

root #emerge --ask --oneshot sys-fs/eudev

En caso de que el sistema utilice multilib y, por ejemplo, tenga el ajuste USE abi_x86_32 activo en el anterior paquete udev, no olvide cambiarlo también:

ARCHIVO /etc/portage/package.useCambiar de udev a eudev en package.use
# sys-fs/udev abi_x86_32
sys-fs/eudev abi_x86_32

Mantener el nombrado clásico 'eth0'

Los nombres de dispositivos de red eth0, eth1, etc. tal y como los suministra el núcleo podrían cambiar en el arranque (ver dmesg) por la regla udev /lib/udev/rules.d/80-net-name-slot.rules.

Para mantener el nombrado clásico, se puede sobrescribir esta regla con un fichero vacío con el mismo nombre en el directorio /etc/udev/rules.d:

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

De forma alternativa, añadir net.ifnames=0 a la línea de órdenes cambia la directriz por defecto o crea una personalizada.

Un recurso interesante ligado al nombrado de la red es No me gusta esto, cómo lo deshabilito en el wiki de Freedesktop.

Utilizar el nuevo nombrado 'predecible'

La nueva convención en el nombrado de interfaces ha cambiado, por lo que se deben reenlazar las interfaces. Utilice /etc/init.d/net.lo como objetivo del enlace para cualquier nombre de interfaz que necesite añadir. Asegúrese de reemplazar <nombre_de_interfaz> en las órdenes de abajo por los nombre de la interfaz Ethernet presentes en el sistema. Es posible descubrir las interfaces existentes lanzando la orden ifconfig:

user $ifconfig -a

Crear enlaces simbólicos para las interfaces existentes en los directorios /etc/init.d/ y /etc/conf.d/:

root #ln -s /etc/init.d/net.lo /etc/init.d/net.<nombre_de_interfaz>
root #ln -s /etc/conf.d/net.lo /etc/conf.d/net.<nombre_de_interfaz>

Añadir el guión o guiones al nivel de ejecución por defecto para arrancar el o los interfaces de forma automática:

root #rc-update add net.<nombre_de_interfaz> default

Resolución de problemas

Usar udevadm

Lanzar udevadm monitor y comprobar que sucede:

user $udevadm monitor

Obtener información del dispositivo medianteudevadm info seguido de la ruta al dispositivo:

user $udevadm info -p /devices/pci0000:00/0000:00:1d.7

Obtener la ruta al dispositivo utilizando su nombre:

user $udevadm info -q path -n input/mouse1
/devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3.4/1-3.4:1.0/0003:046D:C404.0006/input/input24/mouse1

Comprobar que un evento se ejecuta utilizando udevadm test seguido de la ruta al dispositivo del que se quiere probar el evento:

user $udevadm test /devices/pci0000:00/0000:00:1d.7

Para obtener una lista de todas las órdenes udevadm:

user $udevadm -h

Migrar desde versiones anteriores

Desde udev 171-r10 hasta eudev 1.2-r1

Leer este hilo en los foros de Gentoo.

Sistema roto cuando se cambia de udev a eudev

Leer este hilo en los foros de Gentoo.

Véase también

Recursos externos

Referencias

  1. Bug 575718 - Request for council decision RE virtual/udev default provider, Gentoo's Bugzilla Main Page, (Última modificación) 27 de febrero de 2016. Recuperado el 1 de marzo de 2016.
  2. Project:Eudev, Gentoo Wiki, (Última modificación) 12 de noviembre de 2015. Recuperado el 11 de marzo de 2016.