Capítulo 7. Nombres de dispositivos definidos por el usuario

El directorio /dev/ contiene archivos virtuales que representan dispositivos. Cada archivo virtual representa un dispositivo para el sistema, tal como un dispositivo de almacenamiento, USB o una impresora. Estos archivos virtuales son llamados nombres de dispositivos.

Los nombres de dispositivos para los dispositivos IDE comienzan con hd y los nombres de dispositivos SCSI comienzan con sd. El prefijo es seguido de una letra, comenzando por la a, que representa el orden de los dispositivos. Por ejemplo, /dev/hda es el primer disco duro IDE, /dev/hdb es el segundo disco IDE, /dev/hdc es el tercero, y así sucesivamente.

Si el nombre del dispositivo es seguido de un número, el número representa el número de la partición. Por ejemplo, /dev/hda1 representa la primera partición en el primer disco IDE.

Si un disco duro es movido físicamente a una ubicación diferente en la máquina, es eliminado o falla al inicializarse, algunos de los nombres de los dispositivos cambiarán de nombre, dejando potencialmente referencias a nombres de dispositivos inválidas. Por ejemplo, como se muestra en la Figura 7-1, si un sistema tiene tres discos duros SCSI, y el segundo disco SCSI es eliminado, /dev/sdc se convierte en /dev/sdb, causando que cualquier referencia a /dev/sdc sea inválida y cualquier referencia a /dev/sdb igualmente inválida puesto que se trata de una unidad diferente.

Figura 7-1. Eliminar un disco duro

Cada disco duro tiene un identificador único asociado a él, llamado un UUID. Para resolver el problema del cambio de nombres de dispositivos, devlabel se hace cargo de los nombres de dispositivos definidos por el usuario que son asociados con estos UUIDs. Se crea un enlace simbólico del nombre de dispositivo definido por el usuario al nombre del dispositivo real. Si el nombre de dispositivo real cambia, el enlace simbólico es actualizado para apuntar a la misma unidad de acuerdo a su UUID. Así, ambos dispositivos de almacenamiento IDE y SCSI pueden ser referenciados por sus nombres definidos por el usuario.

Devlabel también se hace cargo del montaje automático de dispositivos en caliente (hotplug) tales como unidades de disco removibles y dispositivos USB tales como tarjetas de memoria para cámaras digitales. Si se configura para montarse automáticamente, después de que el dispositivo es conectado, se monta con el nombre de dispositivo definido por el usuario.

7.1. Configuración de Devlabel

Los nombres de dispositivos definidos por el usuario se pueden añadir basándose en el nombre del dispositivo, en el nombre de la partición o en el UUID de la unidad.

Utilice la siguiente sintáxis para añadir un nombre de dispositivo definido por el usuario para un periférico de almacenamiento. El dispositivo especificado puede ser el dispositivo completo o una única partición en un dispositivo.

devlabel add -d <device> -s <symlink>

Por ejemplo, para añadir el enlace simbólico /dev/work para que represente a la partición /dev/hdb1, use el comando siguiente:

devlabel add -d /dev/hdb1 -s /dev/work

Si el comando es exitoso, se mostrará lo siguiente:

Created symlink /dev/work -> /dev/hdb1
Added /dev/work to /etc/sysconfig/devlabel

Para añadir un nombre de dispositivo para un dispositivo basado en un UUID, utilice la sintaxis siguiente:

devlabel add -u <uuid> -s <symlink>

Para usar devlabel para retornar el UUID de un dispositivo (o para asegurarse de que tiene uno), utilice el comando siguiente:

devlabel printid -d <device>

Los nombres de los enlaces simbólicos deben ser únicos. Si un enlace ya existe cuando se está intentando añadirlo, el archivo de configuración no se modifica, y se muestra lo siguiente:

The file /dev/work already exists.
Failure. Could not create a symlink.

Para eliminar un enlace simbólico desde la lista devlabel, utilice el comando siguiente:

devlabel remove -s <symlink>

Se elimina la entrada del archivo de configuración y el enlace simbólico es borrado.

Para determinar el estado de los enlaces simbólicos de devlabel, use el comando:

devlabel status

Muestra una salida como la siguiente:

lrwxrwxrwx    1 root            9 Apr 29 13:20 /dev/work -> /dev/hdb1
lrwxrwxrwx    1 root            9 Apr 29 13:41 /dev/tcf -> /dev/hda1

7.1.1. Dispositivos de conexión en caliente

Un programa llamado hotplug realiza acciones cuando ocurre un evento del sistema mientras este está en ejecución, tal como añadir o eliminar hardware. Por ejemplo, si se conecta al sistema un disco duro o una tarjeta de media USB, hotplug notifica a los usuarios mediante el registro de un mensaje en el registro del sistema (/var/log/messages) y carga los módulos del kernel apropiados para que el dispositivo funcione.

Cuando un dispositivo PCI, USB, o IEEE 1394 (también conocido como FireWire) es enchufado, los script hotplug también reinician devlabel para que la media de almacenamiento removible reciba un nombre definido por el usuario (tal como /dev/usbcard), y opcionalmente pueda montar automáticamente el dispositivo de almacenamiento.

Después de insertar un lector de tarjeta USB en un puerto USB del computador, escriba el comando siguiente como root (donde /dev/sda1 es el nombre del dispositivo para la tarjeta de media y/dev/usbcard es el nombre de dispositivo definido por el usuario a utilizar):

devlabel add -d /dev/sda1 -s /dev/usbcard --automount

Este comando añade una entrada para el punto de montaje a /etc/sysconfig/devlabel y crea un enlace simbólico desde /dev/usbcard a /dev/sda1. La opción --automount para devlabel especifica que el dispositivo debería ser montado automáticamente cuando devlabel se reinicie si se encuentra una entrada para el en /etc/fstab y si el dispositivo existe (se encuentra un dispositivo con el mismo UUID).

updfstab es un programa que escanea los buses IDE y SCSI para detectar nuevos dispositivos y añade entradas a /etc/fstab para ellos, si estas aún no existen. También agrega entradas para dispositivos USB que aparecen como dispositivos SCSI. Consulte la página del manual updfstab para más información.

Cuando se inserta un dispositivo USB, hotplug ejecuta el programa updfstab, el cual añade una entrada a /etc/fstab para el dispositivo de almacenamiento (tal como una tarjeta de media) si existe. (Si un lector de tarjeta sin una tarjeta adentro es insertado, no se añade la entrada.) La línea agregada contiene el nombre real del dispositivo (tal como /dev/sda1) y la opción kudzu. La opción kudzu le dice a Kudzu [1] que puede eliminar la línea si el dispositivo no existe. Puesto que la línea es requerida por devlabel, la opción kudzu debe ser eliminada para que la línea se quede en el archivo. También cambie el nombre del dispositivo al nombre devlabel (tal como /dev/usbcard) y cree el punto de montaje (tal como /mnt/usbcard)).

Después de modificar la línea, debería de verse similar a:

/dev/usbcard   /mnt/usbcard   auto    noauto,owner 0 0

Gracias a la opción --automount, cuando se reinicia devlabel, la media de almacenamiento en el lector de tarjeta USB es montada en /mnt/usbcard cuando el dispositivo USB es enchufado en el computador. El truco aquí es que cuando el lector de tarjeta USB es enchufado en el computador, la tarjeta ya debe estar dentro del lector. Si no, devlabel no puede encontrar el dispositivo y, por lo tanto, no lo puede montar automáticamente.

Si el lector de la tarjeta USB ya está enchufado sin una tarjeta, cuando se inserte la tarjeta,ejecute el comando devlabel restart como root para así montarla.

Notas

[1]

Kudzu es un programa para probar hardware en el momento de arranque, para determinar qué hardware ha sido añadido o eliminado desde el sistema.