Difference between revisions of "Udev (Español)"

From ArchWiki
Jump to: navigation, search
(Actualización: 2012-10-16)
Line 6: Line 6:
 
[[zh-CN:Udev]]
 
[[zh-CN:Udev]]
 
[[zh-TW:Udev]]
 
[[zh-TW:Udev]]
{{out of date}}
+
udev reemplaza la funcionalidad de {{ic|hotplug}} y {{ic|hwdetect}}.
''"'''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 {{ic|/dev}}. Es el sucesor de devfs y de hotplug, lo que significa que maneja el directorio {{ic|/dev}} y todas las acciones del espacio de usuario al agregar o quitar dispositivos, incluyendo la carga de firmware"''. Fuente: [http://es.wikipedia.org/wiki/Udev Wikipedia]
+
  
udev reemplaza la funcionalidad de {{Ic|hotplug}} y {{Ic|hwdetect}}.
+
''"'''udev''' es el gestor de dispositivos que usa el kernel Linux. Principalmente, su función es controlar los ficheros de dispositivo en {{ic|/dev}}. Es el sucesor de devfs y de hotplug, lo que significa que maneja el directorio {{ic|/dev}} y todas las acciones del espacio de usuario al agregar o quitar dispositivos, incluyendo la carga de firmware"''. Fuente: [http://es.wikipedia.org/wiki/Udev Wikipedia]
  
udev carga módulos del kernel usando paralelismo para proveer una potencial ventaja de rendimiento sobre cargar los módulos secuencialmente. Los módulos son por lo tanto cargados asíncronamente. La desventaja inherente de este método es que udev no siempre carga módulos en el mismo orden en cada arranque del sistema. Si la máquina posee múltiples dispositivos de bloque, esto se puede manifestar en la forma de nodos de dispositivos cambiando su designación aleatoriamente. Por ejemplo, si la máquina tiene dos discos duros, /dev/sda puede convertirse aleatoriamente en /dev/sdb. Vea abajo para mayor información
+
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, {{ic|/dev/sda}} puede convertirse aleatoriamente en {{ic|/dev/sdb}}. Continue leyendo más abajo para mayor información.
  
==Acerca de módulos auto-cargándose==
+
==Instalación==
udev no cargará ''ningún'' módulo automáticamente excepto que {{Ic|MOD_AUTOLOAD}} este activado en {{ic|/etc/rc.conf}}. Si desactiva la auto-carga debe cargar los módulos que quiere/necesita manualmente colocando la lista en el arreglo {{Ic|MODULES}} en {{ic|[[rc.conf (Español)|rc.conf]]}}, puede generar esta lista con la instrucción {{Ic|hwdetect --modules}}.
+
Udev es ahora parte de {{Pkg|systemd}} en {{ic|[core]}}.
  
==Acerca de las reglas de udev==
+
==Acerca de las reglas udev==
Las reglas de udev van en {{ic|/etc/udev/rules.d/}}, su nombre de archivo debe terminar con {{ic|.rules}}.
+
Las reglas de udev escritas por el administrador del sistema se encuentran en el directorio {{ic|/etc/udev/rules.d/}}, y el nombre del archivo terminado con la extensión {{ic|.rules}}. Las reglas proporcionadas por la instalación de diversos paquetes se encuentran en {{ic|/lib/udev/rules.d/}}. En el caso de que existan dos reglas con el mismo nombre en {{ic|/lib}} y en {{ic|/etc}}, la norma que se encuentra en la carpeta {{ic|/etc}} tendrá prioridad.
 +
Para obtener más información sobre cómo escribir las reglas de udev consulte [http://www.reactivated.net/writing_udev_rules.html este sitio].
  
Para obtener una lista de todos los atributos de un dispositivo que puede usar para escribir reglas:
+
Para obtener una lista de todos los atributos de un dispositivo que puede usar para escribir reglas de udev, escriba:
  # udevadm info -a -p $(udevadm info -q path -n [nombre del dispositivo])
+
  # udevadm info -a -n [nombre del dispositivo])
  
Reemplace [nombre del dispositivo] con el dispositivo presente en el sistema, como '/dev/sda' o '/dev/ttyUSB0'.
+
Reemplace {{ic|[nombre del dispositivo]}} con el dispositivo presente en el sistema, como {{ic|/dev/sda}} o {{ic|/dev/ttyUSB0}}.
  
Para reiniciar el sistema udev una vez haya creado o modificado las reglas udev, ejecute la siguiente instrucción. Dispositivos que permiten sustitución en caliente, como dispositivos USB, probablemente tendrán que ser re-conectados para que tengan efecto las nuevas reglas.
+
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.
# udevadm control restart
+
  
== Sugerencias y Trucos ==
+
==Udisks==  
=== Montar dispositivos USB automáticamente ===
+
Simplemente tiene que [[pacman|instalar]] el paquete {{pkg |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 [http://www.archlinux.org/packages/extra/x86_64/udisks2/ requerida] por GNOME, mientras que XFCE y KDE, parece que todavía [http://www.archlinux.org/packages/extra/x86_64/udisks/ requerieren] udisks.
{{Nota|En las reglas siguientes las opciones para mount están definidas como {{Ic|<nowiki>ENV{mount_options}="relatime"</nowiki>}}, vea {{Ic|man mount}} (y posiblemente {{Ic|man ntfs-3g}}) para todas las opciones disponibles y [[Maximizing Performance (Español)| Maximizando rendimiento]] para opciones relacionadas con el rendimiento.}}
+
 +
Como elemento adicional, puede eliminar [[HAL]] si sólo se utiliza para fines de auto montaje.
  
{{Nota|La opción para mount {{Ic|users}} '''no''' permitirá a los usuarios desmontar el sistema de archivos.}}
+
===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.
  
{{Nota|La opción para mount {{Ic|noexec}} evita la ejecución de binarios en el sistema de archivos montado.}}
+
* [http://ignorantguru.github.com/udevil/ udevil] - {{pkg|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 [http://igurublog.wordpress.com/downloads/script-devmon/ devmon], que se puede instalar por separado desde AUR ({{AUR|devmon}}). 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.
 +
* {{AUR|ldm}} - Un demonio ligero que monta automáticamente unidades usb, cd, dvd o floppys. [https://bbs.archlinux.org/viewtopic.php?id=125918]
 +
* [[udiskie]] - Escrito en Python. Permite el montaje y desmontaje automático por otros usuarios.
 +
* {{AUR |udisksevt}} - Escrito en Haskell. Permite el montaje automático por cualquier usuario. Diseñado para ser integrado con {{AUR|traydevice}}.
 +
* {{AUR |udisksvm}} - 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.
  
==== Montar bajo {{ic|/media}}; usar la etiqueta de la partición si está presente ====
+
* Se pueden montar automáticamente y expulsar dispositivos extraíbles con la combinación de {{pkg|pmount}}, {{pkg|udisks2}} y {{pkg|spacefm}}. Tenga en cuenta que ha de ejecutar spacefm en modo demonio con {{ic|spacefm -d &}} en los scripts de inicio, {{ic|~/.xinitrc}} o {{ic|~/.xsession}}, para obtener el montaje automático . También puede montar los discos internos agregándolos a {{ic|/etc/pmount.allow}}.
El siguiente conjunto de reglas de udev monta automáticamente dispositivos/particiones que están representadas por /dev/sd* (Discos USB, discos duros externos y a veces tarjetas SD). Si está disponible una etiqueta de partición, monta el dispositivo en /media/<etiqueta> y si no en /media/usbhd-sd* (ej: /media/usbhd-sdb1):
+
  
{{hc|/etc/udev/rules.d/11-media-by-label-auto-mount.rules|2=<nowiki>
+
===Udisks Shell Functions===
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"
+
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.
  
# Importar información de sistema de archivos
+
* [https://bbs.archlinux.org/viewtopic.php?id=109307 udisks_functions] - Escrito por Bash.
IMPORT{program}="/sbin/blkid -o udev -p %N"
+
* [https://bbs.archlinux.org/viewtopic.php?id=117674 bashmount] - {{AUR|bashmount}} 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.
  
# Obtener una etiqueta si está presente, si no especificar una
+
==Consejos y Trucos==
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
+
==== Accediendo programadores de Firmware y dispositivos virtuales de comunicación USB ====
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
+
El siguiente conjunto de reglas permite a los usuarios normales (en el grupo "users") acceder al programador USB [http://www.ladyada.net/make/usbtinyisp/ USBtinyISP] para microcontroladores AVR y al USB genérico (SiLabs [http://www.silabs.com/products/interface/usbtouart CP2102]) para el adaptador UART y para el programador [http://www.atmel.com/tools/AVRDRAGON.aspx?tab=overview Atmel AVR Dragon] . Ajuste los permiso de acuerdo al caso. Verificado al 22/06/2012.
  
# Opciones globales para mount
+
{{hc|/etc/udev/rules.d/50-embedded_devices.rules|2=<nowiki>
ACTION=="add", ENV{mount_options}="relatime"
+
# USBtinyISP Programmer rules
# Opciones especificas del sistema de archivos para mount
+
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c9f", GROUP="users", MODE="0666"
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
+
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"
  
# Montar el dispositivo
+
# Mdfly.com Generic (SiLabs CP2102) 3.3v/5v USB VComm adapter
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"
+
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", GROUP="users", MODE="0666"
  
# Limpiar despues de remover
+
#Atmel AVR Dragon (dragon_isp) rules
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
+
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2107", GROUP="users", MODE="0666"
  
# Salir
+
#Atmel AVR JTAGICEMKII rules
LABEL="media_by_label_auto_mount_end"
+
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2103", GROUP="users", MODE="0666"
</nowiki>}}
+
 
+
==== Montar bajo {{ic|/media}}; usar la etiqueta de la partición si está presente; soportar cifrado LUKS ====
+
Similar al conjunto de reglas anterior, pero si el dispositivo es una partición cifrada con LUKS abrirá una ventana xterm para pedir la contraseña (provisto que xterm esté instalado).
+
 
+
{{Nota|Quizás necesite modificar la ruta a cryptsetup, dependiendo de la versión instlada (ej., < 1.1.1_rc2-1).}}
+
 
+
{{hc|/etc/udev/rules.d/11-media-by-label-auto-mount.rules|2=<nowiki>
+
KERNEL!="sd[a-z]*", GOTO="media_by_label_auto_mount_end"
+
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"
+
 
+
# No montar los dispositivos durante el arranque del sistema porque sino podría fallar fsck
+
ACTION=="add", PROGRAM!="/bin/grep ' / / rw[, ]' /proc/self/mountinfo", GOTO="media_by_label_auto_mount_end"
+
 
+
# Abrir la particion LUKS de ser necesario
+
PROGRAM=="/sbin/blkid -o value -s TYPE %N",  RESULT=="crypto_LUKS", ENV{crypto}="mapper/", ENV{device}="/dev/mapper/%k"
+
ENV{crypto}=="", ENV{device}="%N"
+
ACTION=="add", ENV{crypto}!="", PROGRAM=="/usr/bin/xterm -display :0.0 -e 'echo Password for /dev/%k; /sbin/cryptsetup luksOpen %N %k'"
+
ACTION=="add", ENV{crypto}!="", TEST!="/dev/mapper/%k", GOTO="media_by_label_auto_mount_end"
+
 
+
# Opciones globales para mount
+
ACTION=="add", ENV{mount_options}="noatime"
+
# Opciones especificas del sistema de archivos para mount
+
ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE %E{device}", RESULT=="vfat|ntfs", ENV{mount_options}="%E{mount_options},utf8,gid=100,umask=002"
+
 
+
# Obtener una etiqueta si esta presente, si no especificar una
+
PROGRAM=="/sbin/blkid -o value -s LABEL %E{device}", ENV{dir_name}="%c"
+
# Usar basename para manejar correctamente etiquetas como ../mnt/foo
+
PROGRAM=="/usr/bin/basename '%E{dir_name}'", ENV{dir_name}="%c"
+
ENV{dir_name}=="", ENV{dir_name}="usbhd-%k"
+
 
+
# Montar el dispositivo
+
ACTION=="add", ENV{dir_name}!="", RUN+="/bin/mkdir -p '/media/%E{dir_name}'", RUN+="/bin/mount -o %E{mount_options} /dev/%E{crypto}%k '/media/%E{dir_name}'"
+
 
+
# Limpiar despues de remover
+
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l '/media/%E{dir_name}'"
+
ACTION=="remove", ENV{crypto}!="", RUN+="/sbin/cryptsetup luksClose %k"
+
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/rmdir '/media/%E{dir_name}'"
+
  
#Salir
 
LABEL="media_by_label_auto_mount_end"
 
 
</nowiki>}}
 
</nowiki>}}
  
==== Montar bajo {{ic|/media}}; usar la etiqueta de la partición si está presente; soportar desmontar por el usuario ====
+
===Ejecutar USB al Insertar===
 +
Consulte el artículo [[Execute on USB insert]] o [http://igurublog.wordpress.com/downloads/script-devmon/ devmon wrapper script].
  
Esta es una variación del conjunto de reglas anterior. Usa pmount (que necesitará ser instalado) en vez de mount, permitiendo a un usuario distinto de root desmontar dispositivos montados por udev. El nombre de usuario requerido debe estar cableado en la instrucción RUN, así que este conjunto de reglas quizás no sea conveniente para sistemas multi-usuario. También se removió el soporte de LUKS del ejemplo, pero puede ser reintegrado como en el ejemplo anterior.
+
=== Montar unidades como un usuario normal ===
 +
Si desea montar una unidad interna en sus entornos de escritorio como un usuario normal (sin la necesidad de escribir la contraseña de superusuario), sólo tiene que crear uno de los siguientes archivos en [[PolicyKit]] Local Authority dependiendo de si utiliza udisks (KDE, XFCE) o udisks2 (GNOME reciente) (en caso de duda realice una consulta con {{ic|pacman -Qi udisks2}}). La configuración extiende el privilegio a todos los miembros del grupo 'users', pero se puede sustituir {{ic|unix-user:USERNAME}} para ajustar la configuración del grupo con las limitaciones individuales. Consulte [[PolicyKit]] para más detalles.
  
{{hc|/etc/udev/rules.d/11-media-by-label-with-pmount.rules|2=<nowiki>
+
Los ejemplos de configuración siguientes permiten a cualquier miembro del grupo {{ic|users}} montar y desmontar discos con udisks o udisk2. Si no existe, cree el archivo {{ic|/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla}} con el siguiente contenido:
KERNEL!="sd[a-z]*", GOTO="media_by_label_auto_mount_end"
+
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"
+
  
# Obtener etiqueta
+
'''udisks'''
PROGRAM=="/sbin/blkid -o value -s LABEL %N", ENV{dir_name}="%c"
+
[Local Users]
# Usar basename para manejar correctamente etiquetas como ../mnt/foo
+
Identity=unix-group:users
PROGRAM=="/usr/bin/basename '%E{dir_name}'", ENV{dir_name}="%c"
+
Action=org.freedesktop.udisks.*
ENV{dir_name}=="", ENV{dir_name}="usbhd-%k"
+
ResultAny=yes
 +
ResultInactive=yes
 +
ResultActive=yes
 +
'''udisk2'''
 +
[Local Users]
 +
Identity=unix-group:users
 +
Action=org.freedesktop.udisks2.*
 +
ResultAny=yes
 +
ResultInactive=yes
 +
ResultActive=yes
  
ACTION=="add", ENV{dir_name}!="", RUN+="/bin/su tomk -c '/usr/bin/pmount %N %E{dir_name}'"
+
====Sólo unidades internas====
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/su tomk -c '/usr/bin/pumount /media/%E{dir_name}'"
+
'''udisks'''
LABEL="media_by_label_auto_mount_end"
+
{{hc|/etc/polkit-1/localauthority/50-local.d/50-filesystem-mount-system-internal.pkla|2=<nowiki>
 +
[Mount a system-internal device]
 +
Identity=unix-group:users
 +
Action=org.freedesktop.udisks.filesystem-mount-system-internal
 +
ResultActive=yes
 +
</nowiki>}}
 +
'''udisks2'''
 +
{{hc|/etc/polkit-1/localauthority/50-local.d/50-filesystem-mount-system-internal.pkla|2=<nowiki>
 +
[Mount a system-internal device]
 +
Identity=unix-group:users
 +
Action=org.freedesktop.udisks2.filesystem-mount-system
 +
ResultActive=yes     
 
</nowiki>}}
 
</nowiki>}}
  
==== Montar bajo {{ic|/mnt}}; crear un enlace simbólico bajo {{ic|/media}} ====
+
===Marca como interna tanto SATA-Ports como eSATA-Ports===
The following rule set does not make use of partition labels; instead it mounts devices as usbhd-sdXY under the /mnt directory (ex: /mnt/usbhd-sdb1) and creates a symbolic link under /media.
+
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.
 
+
El siguiente conjunto de reglas no usa las etiquetas de partición; en su lugar monta los dispositivos como usbhd-sdXY bajo el directorio /mnt (ej: /mnt/usbhd-sdb1) y crea un enlace simbólico bajo /media.
+
 
+
{{hc|/etc/udev/rules.d/11-mnt-auto-mount.rules|2=<nowiki>
+
KERNEL!="sd[a-z][0-9]", GOTO="mnt_auto_mount_end"
+
 
+
# Opciones globales para mount
+
ACTION=="add", ENV{mount_options}="relatime"
+
# Opciones especificas del sistema de archivos para mount
+
ACTION=="add", IMPORT{program}="/sbin/blkid -o udev -p %N"
+
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
+
 
+
# Montar bajo /mnt y crear el enlace simbolico en /media
+
ACTION=="add", RUN+="/bin/mount -o $env{mount_options} /dev/%k /mnt/usbhd-%k", RUN+="/bin/ln -s /mnt/usbhd-%k /media/usbhd-%k"
+
  
# Limpiar despues de remover
 
ACTION=="remove", RUN+="/bin/rm -f /media/usbhd-%k", RUN+="/bin/umount -l /mnt/usbhd-%k", RUN+="/bin/rmdir /mnt/usbhd-%k"
 
  
# Salir
+
{{hc|/etc/udev/rules.d/10-esata.rules|2=<nowiki>
LABEL="mnt_auto_mount_end"
+
DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host4/*", ENV{UDISKS_SYSTEM_INTERNAL}="0"
 
</nowiki>}}
 
</nowiki>}}
  
==== Montar bajo {{ic|/media}} ''sólo'' si la partición tiene una etiqueta ====
+
{{Nota|el DEVPATH (ruta del dispositivo) se puede encontrar después de la conexión de la unidad de disco eSATA con el siguiente comando (sustituya sdb según su caso):
{{hc|/etc/udev/rules.d/11-media-by-label-only-auto-mount.rules|2=<nowiki>
+
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_only_auto_mount_end"
+
  
# Importar información de sistema de archivos
+
# find /sys/devices/ -name sdb
IMPORT{program}="/sbin/blkid -o udev -p %N"
+
/sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sdb
ENV{ID_FS_LABEL}=="", GOTO="media_by_label_only_auto_mount_end"
+
  
# Opciones globales para mount
+
}}
ACTION=="add", ENV{mount_options}="relatime"
+
===Configurando nombres estáticos para los dispositivos===
# Opciones especificas del sistema de archivos para mount
+
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".
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
+
  
# Montar el dispositivo
+
Para dispositivos de bloque, consulte [[Persistent block device naming]].
ACTION=="add", RUN+="/bin/mkdir -p /media/$env{ID_FS_LABEL}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/$env{ID_FS_LABEL}"
+
  
# Limpiar despues de remover
+
====Dispositivo Network====
ACTION=="remove", ENV{ID_FS_LABEL}!="", RUN+="/bin/umount -l /media/$env{ID_FS_LABEL}", RUN+="/bin/rmdir /media/$env{ID_FS_LABEL}"
+
Por ejemplo, con dos tarjetas de red, es posible que note un cambio de nombres entre {{ic|eth0}} y {{ic|eth1}} en cada reinicio.
  
# Salir
+
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:
LABEL="media_by_label_only_auto_mount_end"
+
{{hc|/etc/udev/rules.d/10-network.rules|2=<nowiki>
 +
SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net0"
 +
SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="wifi0"
 
</nowiki>}}
 
</nowiki>}}
  
==== Montar bajo {{ic|/media}}; usar la etiqueta de la partición si está presente; ntfs-3g ====
+
Algunas puntualizaciones:
 +
* Para obtener la dirección MAC de cada tarjeta, utilice este comando: {{Ic|<nowiki>udevadm info -a -p /sys/class/net/<su_dispositivo> | grep address | tr [A-Z] [a-z]</nowiki>}}
 +
* 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"
  
Otro ejemplo, esta vez haciendo uso del controlador ntfs-3g con soporte de lectura/escritura para sistemas de archivos NTFS:
+
¡No olvide actualizar el archivo {{ic|/etc/rc.conf}} y otros archivos de configuración que usen la antigua notación ethX!
  
{{hc|/etc/udev/rules.d/10-my-media-automount.rules|2=<nowiki>
+
Consulte también el artículo sobre [[Rename network interfaces|renombrar interfaz network]].
# vim:enc=utf-8:nu:ai:si:et:ts=4:sw=4:ft=udevrules:
+
#
+
# /etc/udev/rules.d/10-my-media-automount.rules
+
  
# Comenzar en sdb para ignorar el disco duro del sistema
+
====Dispositivo iscsi====
KERNEL!="sd[b-z]*", GOTO="my_media_automount_end"
+
Compruebe la salida de scsi_id:
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="my_media_automount_end"
+
/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
 
+
3600601607db11e0013ab5a8e371ce111
# Importar cierta informacion util del sistema de archivo como variables
+
IMPORT{program}="/sbin/blkid -o udev -p %N"
+
 
+
# Obtener la etiqueta si esta presente, si no asignar una basado en dispositivo/particion
+
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
+
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
+
 
+
# Crear el directorio en /media y enlazarlo simbolicamente a /mnt
+
ACTION=="add", RUN+="/bin/mkdir -p '/media/%E{dir_name}'"
+
 
+
# Opciones globales para mount
+
ACTION=="add", ENV{mount_options}="relatime"
+
# Opciones especificas del sistema de archivos para mount
+
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},gid=100,dmask=000,fmask=111,utf8"
+
 
+
# Montar sistemas de archivo NTFS automaticamente usando el controlador ntfs-3g
+
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", RUN+="/bin/mount -t ntfs-3g -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"
+
# Montar automaticamente los demas sistemas de archivo
+
ACTION=="add", ENV{ID_FS_TYPE}!="ntfs", RUN+="/bin/mount -t auto -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"
+
 
+
# Limpiar despues de remover
+
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l '/media/%E{dir_name}'", RUN+="/bin/rmdir '/media/%E{dir_name}'"
+
 
+
# Salir
+
LABEL="my_media_automount_end"
+
  
 +
{{hc|/etc/udev/rules.d/75-iscsi.rules|<nowiki>
 +
# 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"
 
</nowiki>}}
 
</nowiki>}}
  
==== Montar tarjetas SD ====
+
==Solución de Problemas==
Se pueden usar las mismas reglas anteriores para auto-montar tarjetas SD, sólo necesita reemplazar {{Ic|sd[a-z][0-9]}} por {{Ic|mmcblk[0-9]p[0-9]}}:
+
===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).
  
{{hc|/etc/udev/rules.d/11-sd-cards-auto-mount.rules|2=<nowiki>
+
===Udevd falla al inicio===
KERNEL!="mmcblk[0-9]p[0-9]", GOTO="sd_cards_auto_mount_end"
+
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.
  
# Opciones globales para mount
+
Extraiga los nombres de los grupos mencionados en las reglas de udev y los nombres de grupos realmente presentes en el sistema:
ACTION=="add", ENV{mount_options}="relatime"
+
# Opciones especificas del sistema de archivos para mount
+
ACTION=="add", IMPORT{program}="/sbin/blkid -o udev -p %N"
+
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
+
  
ACTION=="add", RUN+="/bin/mkdir -p /media/sd-%k", RUN+="/bin/ln -s /media/sd-%k /mnt/sd-%k", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/sd-%k"
+
# fgrep -r GROUP /etc/udev/rules.d/ /usr/lib/udev/rules.d | perl -nle '/GROUP\s*=\s*"(.*?)"/ && print $1;' | sort | uniq > udev_groups
ACTION=="remove", RUN+="/bin/umount -l /media/sd-%k", RUN+="/bin/rmdir /media/sd-%k"
+
# cut -f1 -d: /etc/gshadow /etc/group | sort | uniq > present_groups
LABEL="sd_cards_auto_mount_end"
+
</nowiki>}}
+
  
==== Montar CDs ====
+
Para ver las diferencias, hacer una comparación de lado a lado:
{{hc|/etc/udev/rules.d/11-discs-auto-mount.rules|2=<nowiki>
+
KERNEL!="sr[0-9]*", GOTO="disc_by_label_auto_mount_end"
+
  
# Obtener etiqueta
+
# diff -y present_groups udev_groups
ACTION=="add", PROGRAM=="/sbin/blkid -o value -s LABEL %E{device}", ENV{dir_name}="%c"
+
...
 +
network       <
 +
nobody       <
 +
ntp       <
 +
optical optical
 +
power       | pcscd
 +
rfkill       <
 +
root root
 +
scanner scanner
 +
smmsp       <
 +
storage storage
 +
...
  
ACTION=="add", RUN+="/bin/mkdir -p '/media/%E{dir_name}'", RUN+="/bin/mount -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"
+
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:
ACTION=="add", RUN+="/bin/ln -s /media/%E{dir_name} /media/disc"
+
ACTION=="remove", RUN+="/bin/umount -l '/media/%E{dir_name}'", RUN+="/bin/rmdir '/media/%E{dir_name}'"
+
  
LABEL="disc_by_label_auto_mount_end"
+
# groupadd pcscd
  
KERNEL!="sr[0-9]*", GOTO="disc_by_label_auto_mount_end"
+
Además, asegúrese de que los recursos locales se desbloquearon antes de recurrir a LDAP. El archivo de configuración {{ic|/etc/nsswitch.conf}} debe contener la siguiente línea:
  
# Importar informacion de sistema de archivos
+
group: files ldap
IMPORT{program}="/sbin/blkid -o udev -p %N"
+
  
# Obtener una etiqueta si esta presente, si no especificar una
+
===Problemas conocidos con el Hardware===
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
+
====Dispositivos BusLogic dejan de funcionar y causan bloqueos durante el arranque====
ENV{ID_FS_LABEL}=="", ENV{dir_name}="%k"
+
Esto es un error en el kernel y todavía no se a provisto ningún arreglo.
  
# Montar el dispositivo
+
====Dispositivos extraibles no son reconocidos como tales====
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount /dev/%k /media/%E{dir_name}"
+
Cree una regla udev personalizada, configurando {{ic|UDISKS_SYSTEM_INTERNAL<nowiki>=</nowiki>0}}. Para más detalles, consulte la manpage de udisks.  
ACTION=="add", RUN+="/bin/ln -s /media/%E{dir_name} /media/disc"
+
 
+
# Limpiar despues de remover
+
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
+
 
+
# Salir
+
LABEL="disc_by_label_auto_mount_end"
+
</nowiki>}}
+
 
+
==== 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 [http://www.ladyada.net/make/usbtinyisp/ USBtinyISP] para microcontorladores AVR y a un adaptador genérico de USB a UART (SiLabs [http://www.silabs.com/products/interface/usbtouart CP2102]). Ajuste los permiso de acuerdo al caso. Verificado al 11/02/2010.
+
 
+
{{hc|/etc/udev/rules.d/50-embedded_devices.rules|2=<nowiki>
+
# Reglas del programador USBtinyISP
+
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c9f", GROUP="users", MODE="0666"
+
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0479", GROUP="users", MODE="0666"
+
 
+
# Adaptador Vcomm USB Mdfly.com Generic (SiLabs CP2102) 3.3v/5v
+
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", GROUP="users", MODE="0666"
+
</nowiki>}}
+
 
+
==Solución de Problemas==
+
=== Desactivar auto-carga de módulos con el parámetro de arranque de sistema load_modules ===
+
Si pasa {{Ic|<nowiki>load_modules=off</nowiki>}} a su linea de arranquedel kernel, entonces udev no realiazrá carga automática de módulos. Esto es para proveer una alternativa en caso de que algo falle. Si udev carga un módulo problemático que cuelga su sistema o algo igual de malo, entonces puede saltar la auto-carga con este parámetro, yluego hacer ''blacklist'' del modulo(s) en cuestión.
+
 
+
=== ''Blacklisting'' de Módulos ===
+
In rare cases, Udev can make mistakes and load the wrong modules. To prevent it from doing this, you can blacklist modules.  Once blacklisted, udev will never load that module.  Not at boot-time ''or'' later on when a hotplug event is received (eg, you plug in your USB flash drive).
+
 
+
En casos extraños, udev puede cometer un error y cargar los módulos incorrectos. Para prevenir esto, se puede hacer ''blacklist'' de los módulos. udev nunca cargará módulos que estén ''blacklisted'': Ni al momento del arranque del sistema ni después en cuando se recibe un evento de sustitución en caliente (ej, usted conecta su disco USB).
+
 
+
Para hacer ''blacklist'' de un módulo, prefíjelo con un signo de exclamación (!) en su arreglo {{Ic|MODULES}} en {{ic|[[rc.conf (Español)|rc.conf]]}}:
+
MODULES=(!moduloA !moduloB)
+
 
+
=== Problemas conocidos con Hardware ===
+
====Los dispositivos BusLogic pueden estar defectuosos y causar que se cuelgue el sistema durante el arranque====
+
Esto es un error en el kernel y todavía no se a provisto ningún arreglo.
+
====Los lectores de tarjetas PCMCIA no son tratados como dispositivos removibles====
+
To get access to them with hal's pmount backend add them to {{ic|/etc/pmount.allow}}
+
Para obtener acceso a ellos con pmount del ''backend'' hal agreguelos a {{ic|/etc/pmount.allow}}
+
  
=== Problemas conocidos con la Auto-Carga ===
+
===Problemas conocidos con Auto-Loading===
==== Módulos de frecuencia del CPU ====
+
==== Módulos de Frecuencia del CPU ====
El método actual de detección para los variados controladores de frecuencia del CPU es inadecuado, así que se ha omitido del proceso de auto-carga por el momento. Para usar el escalado de frecuencia del CPU, cargue el módulo apropiado explícitamente en su arreglo {{Ic|MODULES}} en {{ic|[[rc.conf (Español)|rc.conf]]}}.
+
El método actual de detección para los variados controladores de frecuencia del CPU es inadecuado, así que se ha omitido del proceso de auto-carga por el momento. Para usar [[CPU_Frequency_Scaling|el escalado de frecuencia de la CPU]], cargue el módulo apropiado explícitamente en la matriz {{Ic|MODULES}} del archivo {{ic|rc.conf}}. Para más información: [[rc.conf]].
  
 
==== Problemas de Sonido o Algunos Módulos no son Cargados Automáticamente ====
 
==== Problemas de Sonido o Algunos Módulos no son Cargados Automáticamente ====
Algunos usuarios han rastreado este problema a entradas antiguas en {{Ic|/etc/modprobe.d/modprobe.conf}}. Intente limpiar ese archivo y probar de nuevo.
+
Algunos usuarios han reportado este problema de entradas antiguas en {{ic|/etc/modprobe.d/sound.conf}}. Intente limpiar ese archivo y probar de nuevo.
 +
{{Nota|A partir de {{ic|udev>&#61;171}}, los módulos de emulación de OSS, ({{ic|snd_seq_oss, snd_pcm_oss, snd_mixer_oss}}), no vienen cargados automáticamente por defecto.}}
  
==== Dispositivos Entremezclados, Tarjetas de Sonido/Video Cambiando de Orden en Cada Arranque del Sistema ====
+
=== Problemas Conocidos para usuarios con Kernel Personalizado ===
Debido a que udev carga todos los módulos asíncronamente, éstos son inicializados en orden diferente. Esto puede resultar en dispositivos cambiando de nombre aleatoriamente. Por ejemplo, con dos tarjetas de red, usted puede notar un cambio de designaciones entre {{Ic|eth0}} y {{Ic|eth1}}.
+
==== 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.
  
Arch Linux provee la ventaja de especificar el orden de carga de los módulos listando los módulos en el arrelgo {{Ic|MODULES}} en {{ic|[[rc.conf (Español)|rc.conf]]}}. Los módulos en este arreglo son cargados antes de que udev empiece la auto-carga, así que tiene un control total sobre el orden de 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 {{ic|ide_cd_mod}} y vendrán identificadas como {{ic|/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.
  
# Cargar siempre 8139too antes de e100
+
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 {{ic|/etc/mkinitcpio.conf}}.
MODULES=(8139too e100)
+
  
Otro método para ordenar las tarjetas de red es utilizar el método sancionado por udev de nombrar estáticamente cada interfaz. Cree el siguiente archivo para ligar la dirección MAC de cada una de sus tarjetas aun cierto nombre de interfaz:
+
===Dispositivos Ópticos con ID de Grupo ajustado a Disk ===
{{hc|/etc/udev/rules.d/10-network.rules|2=<nowiki>
+
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:
SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="lan0"
+
{{hc|/etc/udev/rules.d|2=# permissions for IDE CD devices
SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="wlan0"
+
SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", GROUP="optical"
</nowiki>}}
+
  
Es importante notar ciertas cosas:
+
# permissions for SCSI CD devices
*Para obtener la dirección MAC de cada tarjeta, use esta instrucción: {{Ic|<nowiki>udevadm info -a -p /sys/class/net/<su_dispositivo> | grep address | tr [A-Z] [a-z]</nowiki>}}
+
SUBSYSTEMS=="scsi", KERNEL=="s[rg][0-9]*", ATTRS{type}=="5", GROUP="optical"}}
*Asegúrese de usar valores hexadecimales en minúscula en sus reglas udev.
+
*Algunas personas han reportado problemas nombrando sus interfaces en el viejo estilo: eth0, eth1, etc. Pruebe nombres como "lan" or "wlan" si experiencia este problema.
+
 
+
¡No olvide actualizar su {{ic|/etc/rc.conf}} y otros archivos de configuración que usan la antigua notación ethX!
+
 
+
Another method for setting network interface names is described in the Configuring Network wiki entry.
+
 
+
Otro método para configurar nombres de interfaces de red está descrito en [[Configuring_Network (Español)|Configurando la Red]].
+
 
+
=== 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.
+
  
==== Los enlaces simbólicos de CD/DVD están dañados ====
+
==Consulte también==
Si está usando un kernel 2.6.15, necesitarña el parche uevent del ABS (que hace ''backport'' de cierta funcionalidad uevent de 2.6.16). Sincronice su árbol ABS con la instrucción {{Ic|abs}}, luego encontrará el parche en {{Ic|/var/abs/kernels/kernel26/}}.
+
* [https://www.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html Udev Homepage]
 +
* [http://www.linux.com/news/hardware/peripherals/180950-udev An Introduction to Udev]
 +
* [http://vger.kernel.org/vger-lists.html#linux-hotplug Udev mailing list information]

Revision as of 10:13, 16 October 2012

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.

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.

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 22/06/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.

Montar unidades como un usuario normal

Si desea montar una unidad interna en sus entornos de escritorio como un usuario normal (sin la necesidad de escribir la contraseña de superusuario), sólo tiene que crear uno de los siguientes archivos en PolicyKit Local Authority dependiendo de si utiliza udisks (KDE, XFCE) o udisks2 (GNOME reciente) (en caso de duda realice una consulta con pacman -Qi udisks2). La configuración extiende el privilegio a todos los miembros del grupo 'users', pero se puede sustituir unix-user:USERNAME para ajustar la configuración del grupo con las limitaciones individuales. Consulte PolicyKit para más detalles.

Los ejemplos de configuración siguientes permiten a cualquier miembro del grupo users montar y desmontar discos con udisks o udisk2. Si no existe, cree el archivo /etc/polkit-1/localauthority/50-local.d/10-udisks.pkla con el siguiente contenido:

udisks

[Local Users]
Identity=unix-group:users
Action=org.freedesktop.udisks.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

udisk2

[Local Users]
Identity=unix-group:users
Action=org.freedesktop.udisks2.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Sólo unidades internas

udisks

/etc/polkit-1/localauthority/50-local.d/50-filesystem-mount-system-internal.pkla
[Mount a system-internal device]
Identity=unix-group:users
Action=org.freedesktop.udisks.filesystem-mount-system-internal
ResultActive=yes

udisks2

/etc/polkit-1/localauthority/50-local.d/50-filesystem-mount-system-internal.pkla
[Mount a system-internal device]
Identity=unix-group:users
Action=org.freedesktop.udisks2.filesystem-mount-system
ResultActive=yes       

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"
Nota: el DEVPATH (ruta del dispositivo) se puede encontrar después de la conexión de la unidad de disco eSATA con el siguiente comando (sustituya sdb según su caso):
# 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 el archivo /etc/rc.conf y otros 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

Módulos de Frecuencia del CPU

El método actual de detección para los variados controladores de frecuencia del CPU es inadecuado, así que se ha omitido del proceso de auto-carga por el momento. Para usar el escalado de frecuencia de la CPU, cargue el módulo apropiado explícitamente en la matriz MODULES del archivo rc.conf. Para más información: rc.conf.

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.

Nota: A partir de 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"

Consulte también