fstab y los discos USB

Escrito por Elrohir, el 03/02/2010 20:35.7 comentarios.

fstab es un fichero de configuración bastante conocido para muchos de los que usamos linux. Allá en tiempos de ubuntu 6.04 me fué necesario configurar manualmente algunos tipos de archivo para que funcionaran ciertas particiones.
Por ejemplo, en su día linux no manejaba bien ntfs así que el driver por defecto sólo podía leer las particiones. Para poder escribir en ellas había que instalar el driver ntfs-3g y cambiar consecuentemente este fichero.

A día de hoy, todo esto está más o menos superado y el proceso de instalación configura automáticamente este fichero. Hablo de instalaciones automáticas AKA instalaciones siguiente->siguiente…. Por supuesto en linux podemos configurar manualmente el sistema desde cero si queremos optimizar hasta la última filigrana.

Lo mismo viene sucediendo con las unidades USB. Uno las conecta y hechan a andar tranquilamente gracias a la magia de udev.

El caso es que si uno usa un sistema más consolidado o se compra un disco duro que cumple con los estándares por los pelos… bueno, pues habrá que configurarlo al modo tradicional. Escribiríamos en fstab una línea como:

/dev/sdxi   /media/MiDisco   defaults    0    0

Donde /dev/sdxi identifica a la partición i (números de 1 en adelante) del disco x (letras de a en adelante). /media/MiDisco es el directorio de montaje y el resto es configuración que con man 8 mount puede ser deducida.
Esto no sería un problema en unidades fijas, pero en unidades USB se vuelve un poco más pesado: Cada vez que conectamos el disco USB su identificador puede cambiar.
Normalmente las letras se asignan en orden en que los discos son conectados o detectados al arrancar, aunque también puede depender del número de puerto USB que ocupen etc…

Los que tenéis algo de idea de esto ya os habréis dado cuenta del problema: esta configuración solo vale para un identificador concreto, si conectamos varios discos en órdenes distintos los datos se cruzarán.

La solución pasa por usar ciertos identificadores virtuales que están disponibles dentro de subdirectorios de la carpeta /dev. Así por ejemplo en /dev/disk/ podemos encontrar

/dev/disk/by-id/
/dev/disk/by-uuid/
/dev/disk/by-label/
/dev/disk/by-path/

Dentro de estos directorios podemos encontrar enlaces simbólicos a los dispositivos disponibles según su número de serie (by-id) el código alfanumérico que les corresponde (by-uuid) su posición hardware (by-path) o la etiqueta de la unidad (by-label).

Una vez sabido esto, es evidente que para que una partición de un disco USB sea montada siempre igual es necesario referenciar ésta bien por su etiqueta (más elegante) o bien por su número de serie (más engorroso, pero con una pequeña ventaja que veremos al final). Así la línea de fstab quedaría como una de las dos siguientes:

/dev/disk/by-label/EtiquetaDeMiDisco   /media/MiDisco   defaults    0    0
/dev/disk/by-lid/NumSerieMiDiscoASDFJKLWERTXCV·EWF6   /media/MiDisco   defaults    0    0


¿Que por qué es ventajoso referenciar a los discos por su serial a pesar de poder hacerlo por etiquetas?
Porque nada impide que alguien nos llegue a casa con un disco etiquetado igual que el nuestro y se nos monte un conflicto de nombres (especialmente si somos poco originales y lo etiquetamos DATOS o USBDISC).

¿Que por qué es elegante referenciar por etiqueta? pues hombre, ya deberías haberte dado cuenta: porque es mucho más sencillo de leer, entender y manipular

PostData: La primera vez que dí con los subdirectorios /dev/disk/by-_____ pensé “vaya puta bazofia” porque no les vi sentido ninguno. Ahora que he visto una utilidad para ellos me doy cuenta de mi error.




¡¡ 7 comentarios, que no decaiga la fiesta !!


  •  
  • gravatar Himliano
    03/02/2010 | 20:48

    La primera vez que dí con los subdirectorios /dev/disk/by-_____ pensé “vaya puta bazofia” porque no les vi sentido ninguno. Ahora que he visto una utilidad para ellos me doy cuenta de mi error.

    Pues ya somos dos xD

    ResponderResponder

  • gravatar Angel
    13/05/2010 | 1:22

    Hola, felicidades buen tutorial.

    Tengo una pregunta, lo estoy intentando hacer con el identificador del directorio by-path, es decir, algo como
    /dev/disk/by-path/pci-0000:00:04.1-usb-0:9:1.0-scsi-0:0:0:0-part1 /media/MiDisco auto rw,user,noauto 0 1
    para que sea cual sea el pendrive que se inserte en ese puerto USB específico, se monte en /media/MiDisco.
    y me salta el error “Error mounting: mount exited with exit code 1: helper failed with:
    Unprivileged user can not mount NTFS block devices using the external FUSE
    library.” incluso especificando la opción “user”.

    He dado permisos rw a todos en /media/MiDisco

    Soy novato en esto GNU/Linux y me da miedo joder algo, podrías decirme qué estoy haciendo mal?

    Gracias.

    ResponderResponder

  • gravatar Elrohir
    13/05/2010 | 9:26

    Yo tambien tuve un problema parecido (del estilo del mensaje “usuario sin privilegios no puede montar blablabla” ).
    Creo que la parte del sistema encargada de montar automaticamente los discos lo hace con tu usuario (no como root). Asi que no podra montar ciertas cosas que tu, como usuario, tampoco podrías.
    Una posible solución es leerte esto. No se cual es exactamente tu problema, pero de la lista que dan apostaría a que es el siguiente:

    1. ntfs-3g is compiled with integrated FUSE support
    2. the ntfs-3g binary is at least version 1.2506
    3. 3. the ntfs-3g binary is set to setuid-root
    4. the user has access right to the volume
    5. the user has access right to the mount point

    Tampoco es que yo sea un experto, lo mejor que puedo hacer es apuntarte a la información con que yo arreglé mi problema y que tu mismo vayas investigando. Creo que si has sido capaz de pensar una aplicación tan chula como esa para el folder by-path, no vas a tener ningun problema en seguir el hilo del enlace que puse ;)

    ResponderResponder

  • gravatar Angel
    13/05/2010 | 15:16

    Gracias Elrohir.
    he probado con chown y no lo soluciona, La versión de ntfs-3g que tengo instalada es la 2010.3.6, que es la última. fuse también está instalado. Los permisos del punto de montaje son 777 (qué miedo), a la unidad USB le he dado en windows CONTROL TOTAL a todos los usuarios….en fin, que al parecer está todo. Pues no lo monta.
    Quizá me he perdido en algo, no lo sé.
    espera, voy a probar a borrar la línea de fstab, a ver si así lo monta con FUSE él solito y le doy permisos también desde linux, si puedo, vaya.
    Ahora vuelvo.

    ResponderResponder

  • gravatar Angel
    13/05/2010 | 15:28

    Lo monta bien, pero no se le puede cambiar los permisos ni con sudo chmod¿¿??

    Como owner, aparece mi usuario normal.

    En fin, desisto.

    Gracias Elrohir.

    ResponderResponder

  • gravatar Elrohir
    13/05/2010 | 17:13

    Si no consigues hacerlo funcionar, prueba a instalar disk-manager
    Es posible que funcione, y aunque no va a usar las lineas de fstab que a ti te gustaría, podrás comparar lo que hace disk-manager con lo que hiciste tu y ver si hay diferencias.

    ResponderResponder

  • gravatar Angel
    13/05/2010 | 17:24

    @Elrohir:
    no me deja por la versión de python que tengo instalada, pero algo haré para solucionarlo. volveré!!

    ResponderResponder

Cada vez que comentas, mato a
76 HOYGANs y 75 EMOs

¡Comenta, insensato!

Y tú, ¿que opinas?

Datos de usuario

Texto del comentario



Enviando tu comentario aceptas la responsabilidad sobre tus palabras.
Los campos marcados con un asterisco (*) son obligatorios.
Puedes seguir los comentarios a través del feed RSS 2.0.