udev (Español)
zh-CN:Udev
zh-TW:Udev
udev
reemplaza la funcionalidad de hotplug
y hwdetect
.
"Udev es el gestor de dispositivos que usa el kernel Linux. Principalmente, 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 espacio de usuario al agregar o quitar dispositivos, incluyendo la carga de firmware". Fuente: Wikipedia
udev carga los módulos del kernel en paralelo (simultáneamente) para proveer una potencial ventaja de rendimiento, en vez de cargar los módulos secuencialmente (uno después de otro). Los módulos son, por lo tanto, cargados asíncronamente. La desventaja inherente de este método es que udev no siempre carga los módulos en el mismo orden en cada arranque del sistema. Si la máquina posee múltiples dispositivos de bloque, ésto se puede manifestar en que los nodos de los dispositivos cambian su designación aleatoriamente. Por ejemplo, si la máquina tiene dos discos duros, /dev/sda
puede convertirse aleatoriamente en /dev/sdb
. Continue leyendo más abajo para mayor información.
Contents
- 1 Instalación
- 2 Acerca de las reglas udev
- 3 Udisks
- 4 Consejos y Trucos
- 5 Solución de Problemas
- 6 Véase también
Instalación
Udev es ahora parte de systemd en [core]
.
Acerca de las reglas udev
Las reglas de udev escritas por el administrador del sistema se encuentran en el directorio /etc/udev/rules.d/
, y el nombre del archivo terminado con la extensión .rules
. Las reglas proporcionadas por la instalación de diversos paquetes se encuentran en /lib/udev/rules.d/
. En el caso de que existan dos reglas con el mismo nombre en /lib
y en /etc
, la norma que se encuentra en la carpeta /etc
tendrá prioridad.
Para obtener más información sobre cómo escribir las reglas de udev consulte este sitio.
Para obtener una lista de todos los atributos de un dispositivo que puede usar para escribir reglas de udev, escriba:
# udevadm info -a -n [nombre del dispositivo])
Reemplace [nombre del dispositivo]
con el dispositivo presente en el sistema, como /dev/sda
o /dev/ttyUSB0
.
udev detecta automáticamente los cambios en los archivos de reglas, por lo que los cambios surtan efecto inmediatamente sin necesidad de reiniciar udev. Sin embargo, las reglas no se aplican automáticamente a los dispositivos en funcionamiento, por lo que los dispositivos removibles, como las unidades USB, probablemente tendrán que volver a reconectarse para que las nuevas normas se les apliquen.
Udisks
Simplemente tiene que instalar el paquete udisks y todos sus unidades deberían montarse automáticamente en GNOME y KDE SC 4.6. De esta manera, no habrá necesidad de regla adicional alguna. Tenga en cuenta que udisks2 es una reescritura novedosa de udisks manteniendo la compatibilidad con éste último y es la versión actualmente requerida por GNOME, mientras que XFCE y KDE, parece que todavía requerieren udisks.
Como elemento adicional, puede eliminar HAL si sólo se utiliza para fines de auto montaje.
Automounting udisks wrappers
UDisks wrapper tiene la ventaja de ser muy fácil de instalar y sin necesidad de configuración (o mínima). Con wrapper se montarán automáticamente elementos como CDs y memorias flash.
- udevil - udevil "Monta y desmonta dispositivos extraíbles sin necesidad de una contraseña, muestra información del dispositivo, y monitorea los cambios de los dispositivos". Está escrito en C y puede sustituir a udisks e incluye devmon, que se puede instalar por separado desde AUR (devmonAUR). También puede iniciar aplicaciones automáticamente de forma selectiva o ejecutar comandos después del montaje, hacer caso omiso de dispositivos especificados y volúmenes etiquetados, y desmontar las unidades extraíbles.
- ldmAUR - Un demonio ligero que monta automáticamente unidades usb, cd, dvd o floppys. [1]
- udiskie - Escrito en Python. Permite el montaje y desmontaje automático por otros usuarios.
- udisksevtAUR - Escrito en Haskell. Permite el montaje automático por cualquier usuario. Diseñado para ser integrado con traydeviceAUR.
- udisksvmAUR - Una GUI de UDisks wrapper que utiliza la interfaz dbus udisks2. Llama al script 'traydvm' , incluido en el paquete. El utilidad GUI 'traydvm' es un script que muestra un icono de la bandeja del sistema para un dispositivo conectado, proporcionando un menú con el botón derecho del ratón para realizar acciones simples sobre el dispositivo. Así, se puede desactivar la función de montaje automático; esta herramienta debe trabajar con otras herramientas de montaje automático, para mostrar los iconos de la bandeja del sistema. Es independiente de cualquier administrador de archivos.
- Se pueden montar automáticamente y expulsar dispositivos extraíbles con la combinación de pmount, udisks2 y spacefm. Tenga en cuenta que ha de ejecutar spacefm en modo demonio con
spacefm -d &
en los scripts de inicio,~/.xinitrc
o~/.xsession
, para obtener el montaje automático . También puede montar los discos internos agregándolos a/etc/pmount.allow
.
Udisks shell functions
Mientras udisks incluye un método simple de montaje (y desmontaje) de los dispositivos a través de la línea de comandos, puede ser, sin embargo, tedioso tener que escribir los comandos cada vez. Estas funciones de la shell que se enumeran a continuación, generalmente, sirven para acortar y facilitar el uso de la línea de comandos.
- udisks_functions - Escrito por Bash.
- bashmount - bashmountAUR es un script bash estructurado a modo de menú, y es un simple archivo de configuración que hace que sea fácil de redactar e implementar.
Consejos y Trucos
Accediendo programadores de Firmware y dispositivos virtuales de comunicación USB
El siguiente conjunto de reglas permite a los usuarios normales (en el grupo "users") acceder al programador USB USBtinyISP para microcontroladores AVR y al USB genérico (SiLabs CP2102) para el adaptador UART y para el programador Atmel AVR Dragon . Ajuste los permiso de acuerdo al caso. Verificado al 31-10-2012.
/etc/udev/rules.d/50-embedded_devices.rules
# USBtinyISP Programmer rules SUBSYSTEMS=="usb", ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c9f", GROUP="users", MODE="0666" SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0479", GROUP="users", MODE="0666" # USBasp Programmer rules http://www.fischl.de/usbasp/ SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", GROUP="users", MODE="0666" # Mdfly.com Generic (SiLabs CP2102) 3.3v/5v USB VComm adapter SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", GROUP="users", MODE="0666" #Atmel AVR Dragon (dragon_isp) rules SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2107", GROUP="users", MODE="0666" #Atmel AVR JTAGICEMKII rules SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2103", GROUP="users", MODE="0666"
Ejecutar USB al Insertar
Consulte el artículo Execute on USB insert o devmon wrapper script.
Marca como interna tanto SATA-Ports como eSATA-Ports
Si ha conectado un puerto eSATA u otro adaptador eSATA, el sistema todavía reconocerá este puerto como un disco duro SATA interno. GNOME y KDE le preguntará por su contraseña de root todo el tiempo. La siguiente regla marcará el SATA-Port especificado como un eSATA-Port externo. Con ésto, un usuario normal de GNOME pueden conectar sus unidades de disco eSATA al puerto como una unidad USB, sin ningún tipo de contraseña de root y así sucesivamente.
/etc/udev/rules.d/10-esata.rules
DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host4/*", ENV{UDISKS_SYSTEM_INTERNAL}="0"
# find /sys/devices/ -name sdb /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sdb
Configurando nombres estáticos para los dispositivos
Debido a que udev carga todos los módulos de forma asíncrona, se pueden inicializar en un orden diferente en cada arranque. Esto puede dar como resultado dispositivos con nombres cambiados aleatoriamente. Udev permite crear reglas donde se utilicen nombres estáticos para los dispositivos, pero preferiblemente nombres distintos de "ethX" y "wlanX".
Para dispositivos de bloque, consulte Persistent block device naming.
Dispositivo Network
Por ejemplo, con dos tarjetas de red, es posible que note un cambio de nombres entre eth0
y eth1
en cada reinicio.
Un método para evitar el comportamiento anterior y ordenar la tarjeta de red es utilizar el método udev-sanctioned para fijar el nombre de cada interfaz. Cree el siguiente archivo para obligar a la dirección MAC de cada una de sus tarjetas a asociarse a un nombre de la interfaz:
/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net0" SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="wifi0"
Algunas puntualizaciones:
- Para obtener la dirección MAC de cada tarjeta, utilice este comando:
udevadm info -a -p /sys/class/net/<su_dispositivo> | grep address | tr [A-Z] [a-z]
- Asegúrese de utilizar los valores hexadecimales en minúsculas en las reglas udev. No use mayúsculas.
- Al elegir los nombres estáticos se debe evitar usar "ethX" y "wlanX", ya que ésto puede conducir a conflictos de competencia entre el kernel y udev durante el arranque. Intente usar nombres de interfaz que no sean utilizados por el kernel por defecto, por ejemplo "net0, net1, wifi0, wifi1"
¡No olvide actualizar los archivos de configuración que usen la antigua notación ethX!
Consulte también el artículo sobre renombrar interfaz network.
Dispositivo iscsi
Compruebe la salida de scsi_id:
/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb 3600601607db11e0013ab5a8e371ce111
/etc/udev/rules.d/75-iscsi.rules
# reglas para el dispositivo iscsi # ésto creará un dispositivo iscsi para cada targets KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="3600601607db11e0013ab5a8e371ce111", NAME="isda"
Solución de Problemas
Blacklisting de Módulos
En casos extraños, udev puede cometer un error y cargar los módulos incorrectos. Para prevenir este comportamiento, se pueden introducir los módulos afectados en blacklist. Udev nunca cargará módulos que estén blacklisted. Consulte Blacklisting. Ni al momento del arranque del sistema ni después cuando se recibe un evento de conexión sobre la marcha (por ejemplo, conectando una unidad flash USB).
Udevd falla al inicio
Después de migrar a LDAP o actulizar el sistema con LDAP-backed, udevd puede colgarse en el arranque apareciendo el mensaje "Starting UDev Daemon". Ésto es causado, normalmente, porque udevd trata de buscar un nombre de LDAP, pero falla, porque la red no está todavía. La solución es asegurarse de que todos los nombres de grupo del sistema están presentes localmente.
Extraiga los nombres de los grupos mencionados en las reglas de udev y los nombres de grupos realmente presentes en el sistema:
# fgrep -r GROUP /etc/udev/rules.d/ /usr/lib/udev/rules.d | perl -nle '/GROUP\s*=\s*"(.*?)"/ && print $1;' | sort | uniq > udev_groups # cut -f1 -d: /etc/gshadow /etc/group | sort | uniq > present_groups
Para ver las diferencias, hacer una comparación de lado a lado:
# diff -y present_groups udev_groups ... network < nobody < ntp < optical optical power | pcscd rfkill < root root scanner scanner smmsp < storage storage ...
En este caso, el grupo pcscd, por alguna razón, no está presente en el sistema. Agregue, en consecuencia, los grupos que faltan, en este caso:
# groupadd pcscd
Además, asegúrese de que los recursos locales se desbloquearon antes de recurrir a LDAP. El archivo de configuración /etc/nsswitch.conf
debe contener la siguiente línea:
group: files ldap
Problemas conocidos con el Hardware
Dispositivos BusLogic dejan de funcionar y causan bloqueos durante el arranque
Esto es un error en el kernel y todavía no se a provisto ningún arreglo.
Dispositivos extraibles no son reconocidos como tales
Cree una regla udev personalizada, configurando UDISKS_SYSTEM_INTERNAL=0
. Para más detalles, consulte la manpage de udisks.
Problemas conocidos con Auto-Loading
Problemas de sonido o algunos módulos no son cargados automáticamente
Algunos usuarios han reportado este problema de entradas antiguas en /etc/modprobe.d/sound.conf
. Intente limpiar ese archivo y probar de nuevo.
udev>=171
, los módulos de emulación de OSS, (snd_seq_oss, snd_pcm_oss, snd_mixer_oss
), no vienen cargados automáticamente por defecto.Problemas Conocidos para usuarios con Kernel Personalizado
Udev no se ejecuta
Asegúrese que tiene una versión del kernel 2.6.15 o superior. Los kernels anteriores no tienen las capacidades uevent necesarias para que udev realice la auto-carga.
Dispositivos IDE CD/DVD
A partir de la versión 170, udev no es compatible con las unidades de CD-ROM/DVD-ROM, que vendrán cargadas como unidades tradicionales IDE con el módulo ide_cd_mod
y vendrán identificadas como /dev/hd*
. La unidad sigue siendo usable para las herramientas que acceden directamente al hardware, como cdparanoia, pero es invisible para los programas userspace más avanzados, como KDE.
Un motivo por el cual el módulo ide_cd_mod se carga antes que otros, como sr_mod, podría ser debido, quizás, a que, por cualquier razón, el módulo piix viene cargado por initramfs. En ese caso, es posible reemplazarlo con ata_piix en el archivo /etc/mkinitcpio.conf
.
Dispositivos Ópticos con ID de Grupo ajustado a Disk
Si el ID de grupo de la unidad de disco óptico está ajustado a disk y desea que esté configurado para optical tiene que crear una regla udev personalizada:
/etc/udev/rules.d
# permissions for IDE CD devices SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", GROUP="optical" # permissions for SCSI CD devices SUBSYSTEMS=="scsi", KERNEL=="s[rg][0-9]*", ATTRS{type}=="5", GROUP="optical"