Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Udev
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Título en minúscula}} {{Ficha de software |nombre = Udev |logo = |captura = |pie = |desarrollador = [[Greg Kroah-Hartman]] y Kay Sievers |autor = |modelo_desarrollo = |lanzamiento = Noviembre de 2003 |última_versión = |género = [[Device Filesystem]] |sistema_operativo = [[Linux|Kernel de linux]] |licencia = [[GPL]]v2 |sitio_web = http://git.kernel.org/?p=linux/hotplug/udev.git |soporte = |versiones = }} '''udev''' es el gestor de dispositivos que usa el [[Núcleo (informática)|núcleo]] [[Linux]] en su versión 2.6. Su función es controlar los [[fichero de dispositivo|ficheros de dispositivo]] en <tt>[[Filesystem Hierarchy Standard|/dev]]</tt>. Es el sucesor de [[devfs]] y de hotplug, lo que significa que maneja el directorio <tt>/dev</tt> y todas las acciones del [[espacio de usuario]] al agregar o quitar dispositivos, incluyendo la carga de [[firmware]]s. == Motivación == En un sistema Linux tradicional (sin ''udev'' ni ''devfs''), en el directorio <tt>/dev</tt> hay [[fichero de dispositivo|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 <tt>disco1</tt> y <tt>disco2</tt> respectivamente. Pero si está solo un disco (el B, por ejemplo), se llamará <tt>disco1</tt>, porque solo hay uno. El B ha cambiado de nombre. Este modelo de gestión de dispositivos da algunos problemas: * el directorio <tt>/dev</tt> 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 <tt>/dev</tt> '''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|Diferencias con devfs]]). == Características == '''udev''' resuelve los problemas anteriores de la siguiente forma: === Solo dispositivos conectados === '''udev''' mantiene en <tt>/dev</tt> solo las entradas correspondientes a los dispositivos que hay conectados al sistema. Así se soluciona el problema del <tt>/dev</tt> 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 (software)|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 [[espacio de kernel|núcleo]]. 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 [[Núcleo (informática)|núcleo]] si no se está conforme con el nombre que se le da a un dispositivo. Otra ventaja de tener el [[demonio (informática)|demonio]] de '''udev''' (<tt>udevd</tt>) en [[espacio de usuario]] es que esta memoria se puede llevar a disco (al [[espacio de intercambio]]), a diferencia de la memoria de [[Núcleo (informática)|núcleo]]. Esto lo hace apropiado para [[sistema embebido|sistemas embebidos]] con poca [[memoria RAM|memoria]] física. === Otras características === '''udev''' respeta la forma de nombrar dispositivos definida en el [[Linux Standard Base|LSB]], aunque permite que los usuarios usen otros nombres. El proceso (<tt>udevd</tt>) ocupa poca memoria y no necesita ejecutarse siempre. Esto también favorece a los [[sistema embebido|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 [https://web.archive.org/web/20080130061728/http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs] (en inglés) las razones por las que '''udev''' es mejor que '''devfs'''. Resumiendo: * [[devfs]] solo muestra en <tt>/dev</tt> 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 (informática)|demonio]] * en '''devfs''' la política de nombres de dispositivo sigue dentro del [[Núcleo (informática)|núcleo]], no en los programas * '''devfs''' no sigue el estándar de nombres definido en [[Linux Standard Base|LSB]] * '''devfs''' es pequeño, pero se encuentra en [[espacio de núcleo]], que es memoria que no se puede llevar a disco == Implementación == '''udev''' se ejecuta mediante un [[demonio (informática)|demonio]]: el proceso <tt>udevd</tt>, 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 núcleo, conector físico usado, nombre dado por el núcleo, ...) y también del propio dispositivo (número de serie, fabricante, ...). Esta información la puede encontrar mediante los datos que hay en <tt>/sys</tt>, en donde está montado el sistema de ficheros '''[[sysfs]]''', del que se encarga el [[Núcleo (informática)|núcleo]] (versión 2.6 y posteriores). Un conjunto de reglas (en <tt>/etc/udev/rules.d/</tt>) 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 [[impresora]]s 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 == *[http://www.reactivated.net/writing_udev_rules.html Escribir reglas de udev] (en inglés) *[https://web.archive.org/web/20071127023731/http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ Preguntas y respuestas sobre udev] (en inglés) *[http://www.gentoo.org/doc/es/udev-guide.xml Guía de udev de Gentoo] *[https://web.archive.org/web/20071127023736/http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs udev vs. devfs] (en inglés) {{Control de autoridades}} [[Categoría:Sistemas de archivos]] [[Categoría:Núcleo Linux]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Udev
»
Añadir idiomas
Añadir tema