Udev

Udev

udev

udev es el gestor de dispositivos que usa el kernel Linux en su versión 2.6. Su función es controlar los ficheros de dispositivo en /dev. Es el sucesor de devfs.

Contenido

Motivación

En un sistema Linux tradicional (sin udev ni devfs), en el directorio /dev hay nodos de dispositivo creados para cada dispositivo conocido, esté o no en el sistema. Se dice que es un conjunto de ficheros estático, ya que los nodos no cambian.

Además, la forma de acceder a un periférico concreto no es siempre la misma, ya que depende de qué otros aparatos hay conectados: si se conectan los discos A y B, se llamarán disco1 y disco2 respectivamente. Pero si está sólo un disco (el B, por ejemplo), se llamará disco1, porque sólo hay uno. El B ha cambiado de nombre.

Este modelo de gestión de dispositivos da algunos problemas:

  • el directorio /dev es enorme y difícil de manejar, ya que incluye todos los dispositivos posibles
  • los números mayor y menor que se asocian a cada dispositivo se estaban acabando
  • los usuarios necesitan que cada dispositivo sea accesible de la misma manera; no aceptarán que por conectar un disco USB al sistema tengan que reconfigurar la cámara de vídeo.
  • los programas necesitan poder detectar cuándo se ha conectado o desconectado un dispositivo, y cuál es la entrada que se le ha asociado en /dev

udev soluciona estos problemas, sobre todo el de poder acceder a un dispositivo con un nombre siempre fijo. Ésta fue la razón por la que se hizo udev, ya que antes estaba devfs, que solucionaba alguno de estos problemas, pero no todos (véase sección Diferencias con devfs).

Características

udev resuelve los problemas anteriores de la siguiente forma:

Sólo dispositivos conectados

udev mantiene en /dev sólo las entradas correspondientes a los dispositivos que hay conectados al sistema. Así se soluciona el problema del /dev superpoblado.

No se usa mayor y menor

No se usa el número mayor y menor para reconocer a cada dispositivo. Puede funcionar incluso aunque estén elegidos al azar. Por tanto, no le afecta el que se acaben las combinaciones mayor/menor asignables.

Permite dar nombre fijo

Permite dar un nombre fijo para cada dispositivo, por ejemplo cámara, sin que éste dependa de qué otros dispositivos hay conectados ni del orden en que se han conectado.

Un disco duro, por ejemplo, se reconoce por el identificador de su sistema de ficheros, el nombre del disco, y el conector físico en el que está.

Avisa a los programas

Avisa mediante mensajes D-BUS para que cualquier programa del espacio de usuario pueda enterarse cuando un dispositivo se conecta o desconecta (esto es útil para HAL). También permite a los programas consultar la lista de dispositivos conectados y la forma de acceder a cada uno.

Todo en espacio de usuario

udev hace que toda la política de nombres de dispositivo esté en espacio de usuario, y no en el kernel. Esto hace posible que un programa cualquiera pueda decidir el nombre de un dispositivo, por ejemplo basándose en sus características. No es necesario modificar el kernel si no se está conforme el nombre que se le da a un dispositivo.

Otra ventaja de tener el demonio de udev (udevd) en espacio de usuario es que esta memoria se puede llevar a disco (al espacio de intercambio), a diferencia de la memoria de kernel. Esto lo hace apropiado para sistemas embebidos con poca memoria física.

Otras características

udev respeta la forma de nombrar dispositivos definida en el LSB, aunque permite que los usuarios usen otros nombres.

El proceso (udevd) ocupa poca memoria y no necesita ejecutarse siempre. Esto también favorece a los sistemas embebidos y equipos poco potentes.

Diferencias con devfs

devfs también se hizo para solucionar algunos de los problemas originales, pero no todos. Los autores de udev explican en [1] (en inglés) las razones por las que udev es mejor que devfs.

Resumiendo:

  • devfs sólo muestra en /dev los dispositivos conectados, al igual que udev
  • devfs no soluciona el problema de los números mayor/menor que se acaban, ya que no permite que sean dinámicos
  • devfs no permite dar un nombre fijo a cada dispositivo (ésta es la razón por la que se hizo udev)
  • devfs, al igual que udev, permite que los programas sepan cuándo se conecta o desconecta un dispositivo, mediante consultas a un proceso demonio
  • en devfs la política de nombres de dispositivo sigue dentro del kernel, no en los programas
  • devfs no sigue el estándar de nombres definido en LSB
  • devfs es pequeño, pero se encuentra en espacio de kernel, que es memoria que no se puede llevar a disco

Implementación

udev se ejecuta mediante un demonio: el proceso udevd, que detecta cuándo se ha conectado o desconectado un dispositivo del sistema.

Cuando pasa uno de estos eventos, udev obtiene información de contexto (subsistema del kernel, conector físico usado, nombre dado por el kernel, ...) y también del propio dispositivo (número de serie, fabricante, ...).

Esta información la puede encontrar mediante los datos que hay en /sys, en donde está montado el sistema de ficheros sysfs, del que se encarga el kernel (versión 2.6 y posteriores).

Un conjunto de reglas (en /etc/udev/rules.d/) deciden qué acción hay que hacer a partir de los datos obtenidos. Lo que la regla hará será -probablemente- dar un nombre al dispositivo, crear el fichero de dispositivo apropiado, y ejecutar el programa que se haya configurado para que acabe de hacer funcionar el dispositivo.

Las reglas pueden asociar un nombre fijo a un dispositivo, pero también pueden llamar a un programa externo que dé más información sobre el dispositivo; así se puede conseguir un nombre más específico.

Ejemplo de reglas

Dos posibles reglas que dan un nombre fijo a dos impresoras distintas; las dos conectadas por USB pero con un número de serie distinto (obtenido por sysfs):

BUS=="usb", SYSFS_serial=="W09090207101241330", \
NAME="lp_color"
BUS=="usb", SYSFS_serial=="HXOLL0012202323480", \
NAME="lp_plain"

Autores

udev fue desarrollado por Greg Kroah-Hartman, con ayuda de Dan Stekloff, Kay Sievers, y muchos otros.

Enlaces externos

Obtenido de "Udev"

Wikimedia foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Mira otros diccionarios:

  • Udev — Entwickler: Greg Kroah Hartman, Kay Sievers, Dan Stekloff u. v. a Aktuelle Version: 141 (8. April 2009) …   Deutsch Wikipedia

  • udev — Entwickler Greg Kroah Hartman, Kay Sievers, Dan Stekloff u. v. a Aktuelle Version 175 (07. November 2011) …   Deutsch Wikipedia

  • udev — es el gestor de dispositivos que usa el kernel Linux en su versión 2.6. Su función es controlar los ficheros de dispositivo en /dev. Es el sucesor de devfs y de hotplug, lo que significa que maneja el directorio /dev y todas las acciones del… …   Wikipedia Español

  • udev — Тип Device node Разработчик Greg Kroah Hartman и Kay Sievers Написана на С Операционная система Linux (ядро) Первый выпуск ноябрь 2003 года Последняя версия 184 (30 мая …   Википедия

  • Udev — est un gestionnaire de périphériques remplaçant Devfs sur les noyaux Linux de la série 2.6. Sa fonction principale est de gérer les périphériques dans le répertoire /dev. udev s exécute en mode utilisateur et dialogue avec hotplug qui lui s… …   Wikipédia en Français

  • udev — Développeur Greg Kroah Hartman et Kay Sievers Première version …   Wikipédia en Français

  • Udev — Infobox Software name = udev caption = developer = Greg Kroah Hartman and Kay Sievers latest release version = 128 latest release date = September 11, 2008 operating system = Linux kernel genre = device node license = website = [http://www.kernel …   Wikipedia

  • HAL (software) — HAL Stable release 0.5.14 / November 30, 2009; 23 months ago (2009 11 30) Development status Deprecated; functionality merged with udev Operating system …   Wikipedia

  • HAL (freedesktop.org) — У этого термина существуют и другие значения, см. HAL. HAL Тип Системное ПО Операционная система Linux, FreeBSD, NetBSD, OpenSolaris, Solaris Аппаратная платформа UNIX Последняя версия …   Википедия

  • /dev — Gerätedatei (von engl. device file) sind spezielle Dateien, die unter fast allen Unix Derivaten und vielen anderen Betriebssystemen genutzt werden. Sie ermöglichen eine einfache Kommunikation zwischen Userspace, zum Beispiel gewöhnlichen… …   Deutsch Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”