Montar automáticamente dispositivos USB en un Raspberry PI

Este artículo ha sido publicado por oyrad en nuestro foro

En el Raspberry si no usas interfaz gráfica, llega a ser molesto estar montando una y otra ves nuestra memoria USB. Además, en el proceso de automatizar esta acción (que es lo que muestro a continuación) se puede aprender un poco sobre como Linux maneja los dispositivos.

Instalar autofs y udev

Lo primero que vamos a hacer es instalar autofs y udev

sudo apt-get install autofs udev

udev es una herramienta del kernel linux encargado de manejar el directorio /dev que es donde se encuentran todos los dispositivos. Y autofs nos permite, una ves configurado, todo monte y desmonte automáticamente apenas se conecta o se desconecta la usb.

Lo primero que haremos sera conectar nuestra memoria usb (usaré una de marca Kingston) en nuestro computador/Raspberry Pi. Luego ejecutamos:

sudo fdisk -l

tendrán una salida parecida a esta:

Disk /dev/mmcblk0: 15.7 GB...

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048     1607421      802687    e  W95 FAT16 (LBA)
/dev/mmcblk0p2         1613824    30613503    14499840   85  Linux extended
/dev/mmcblk0p3        30613504    30679039       32768   83  Linux
…..

Disk /dev/sda: 30.9 GB...

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    60436479    30217216    c  W95 FAT32 (LBA)

Mi memoria usb externa tiene 30.9 GB (es decir es /dev/sda1) mientras que la memoria SD que es donde tengo instalado Linux tiene 15.7 GB.

Reglas personalizadas en udev

Ya sabiendo que sda1 es nuestro dispositivo, usaremos udev para extraer información de la memoria, por lo que ejecutamos el siguiente comando:

udevadm info -a -p $(udevadm info -q path -n /dev/sda1)

habrá bloques separados por la frase “looking at parent device ‘/devices/…..”

para facilitar un poco la búsqueda podemos usar grep, así que hago lo siguiente:

udevadm info -a -p $(udevadm info -q path -n /dev/sda1)| grep  manufacturer

en mi caso como mi memoria es una Kingston la salida es:

    ATTRS{manufacturer}=="Kingston"  #1
    ATTRS{manufacturer}=="Linux 3.12.28+ dwc_otg_hcd"

o también podemos buscar:

udevadm info -a -p $(udevadm info -q path -n /dev/sda1) | grep model
udevadm info -a -p $(udevadm info -q path -n /dev/sdd1) | grep vendor

me interesa:

ATTRS{manufacturer}=="Kingston"

Como fue la primera coincidencia. En la salida del comando udevadm busco el bloque donde sale por primera ves “ATTRS{manufacturer}”

tomo algunos datos que considere únicos del dispositivo de un bloque, en mi caso:

   ATTRS{product}=="xxx"
    ATTRS{serial}=="xxxx"
    DRIVERS=="usb"

solo falta crear las reglas. Hacemos un archivo terminado en .rules en udev:

sudo nano /etc/udev/rules.d/personal.rules

dentro del archivo ponemos

ATTRS{product}=="xxx",ATTRS{serial}=="xxx",DRIVERS=="usb",SYMLINK+="miusb"

Ahora cuando conecte mi usb quedara un fichero /dev/miusb. Esta fue la parte mas dificil .

Configurando autofs

Ejecutamos:

sudo nano /etc/default/autofs

donde dice “TIMEOUT=” le ponen “TIMEOUT= 1”

Vamos a /etc/auto.master

nano /etc/auto.master

y dentro del fichero ponemos en la ultima línea:

/media  /etc/auto.misc

ahora vamos a /etc/auto.misc

nano /etc/auto.master

y en la ultima línea escribimos:

mimemoria             -fstype=vfat,users,rw,umask=000          :/dev/miusb

por ultimo hacemos que cargue el modulo de autofs al inicio:

sudo nano /etc/modules

y en la ultima línea escribimos:

autofs4

y listo, reiniciamos el Raspberry. Hay que tener en cuenta que la carpeta no existe en /media pero cuando hacemos un

cd /media/mimemoria

ya estamos dentro. Y si la dejamos de usar desaparece la carpeta pudiendo quitar el dispositivo sin desmontarlo manualmente.


5 comentarios

  1.   oyrad dijo

    gracias por publicarlo 🙂

  2.   Pablo dijo

    Creo que hay un error, en el paso de editar auto.misc, en el código está escrito auto.master, por si algún incauto lo hace y no se da cuenta 🙂

  3.   Fernando Díaz dijo

    Gracias, justo estaba buscando hacerlo en Raspbian, antes usaba Arch y era más fácil.

  4.   Azureus dijo

    Muy bueno, eso lo llegué a ocupar cuando puse mi Pi como cliente de torrent con directorios compartidos por samba.
    El manual del fstab dice que algo un poco más robusto es revisar la etiqueta de la unidad con # blkid, en mi caso yo tengo una partición de windows automontada en cada inicio de la siguiente manera:

    /dev/sda2
    UUID=24A0729FA07276E0 /home/azureus/Windows ntfs auto,defaults 0 2

    en la raspberry tengo un LVM montado, no recuerdo bien la configuración.
    Según el manual, se puede usar # fdisk -l para obtener el número y letra de unidad y # blkid para saber que etiqueta corresponde a que unidad.

    Saludos.

    1.    Azureus dijo

      [Actualizo]
      Esto de la etiqueta surge a partir de que hay personas (como yo) que sienten pereza de desconectar un volumen cada vez que se apaga la computadora, el problema es cuando tienes varios volúmenes ya que no se monta siempre en el mismo orden tras varios reinicios. Por cierto, esto tiene un inconveniente, cuando se retira el dispositivo que corresponde a la etiqueta asignada para automontaje lanza un error y no permite que se cargue la /home en caso de que la particion sea montada en home. Esto se soluciona comentando el dispositivo que causa conflictos en fstab o bien conectando de nuevo el dispositivo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.