Montar automáticamente varios sistemas de archivos de memoria USB en Jessie Lite

18

Quiero poder montar automáticamente memorias USB fat32 y ntfs formateadas sobre la marcha, como la conexión en caliente sin reiniciar mi Raspberry Pi 2. Tengo instalado ntfs-3g en jessie-lite .

Poner el UUID fstabno es una opción porque tendría que encontrar el UUID de cada dispositivo. Quiero poder conectar diferentes dispositivos USB con diferentes formatos de archivo y montarlos automáticamente. es posible?

También una vez casi lo conseguí trabajando con el usbmountprograma. Pude acceder a mi unidad por un segundo antes de recibir el error transport endpoint is not connected. Reinstalé el programa pero nunca volví a ese punto, ni siquiera con el error.

F. Untermoser
fuente

Respuestas:

15

Después de mucha investigación, pude solucionar mi problema con usbmount:

Agregar ntfs a usbmount

  1. Instalar usbmount con sudo apt-get install usbmount.
  2. Instale el paquete de controlador NTFS ntfs-3g con sudo apt-get install ntfs-3g.

  3. Configure usbmount para montar sistemas de archivos específicos abriendo el archivo usbmount con sudo nano /etc/usbmount/usbmount.conf.

Aquí hay una línea llamada FILESYSTEMS="". Solo los sistemas de archivos especificados en esta línea se montan a través de usbmount, por lo que lo cambiamos a:FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"

Si desea que usbmount monte los sistemas de archivos NTFS, asegúrese de agregar ntfs y fuseblk a la línea. Los dispositivos NTFS a veces se enumeran como fusblk por el paquete ntfs-3g, por lo que esos dos son iguales. Aunque realmente no sé por qué.

Además, si no agrega fuseblk en la configuración, los dispositivos NTFS desconectados no se desmontarán automáticamente. Permanecerán montados y mantendrán la carpeta en la que están montados hasta que el dispositivo se desmonte manualmente con unmount /dev/sda1 -> donde sda1 podría ser otra variable .

La siguiente línea importante es FS_MOUNTOPTIONS="". Aquí especifica qué sistemas de archivos deben montarse y cómo deben montarse.

Lo cambiamos a: FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=007,gid=46 -fstype=fuseblk,nls=utf8,umask=007,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=007"

Con esto se montan los sistemas de archivos vfat (fat32) ntfs-3g (NTFS) y fuseblk (NTFS nuevamente). Creo que la mayoría de los parámetros pueden permanecer igual. Una vez más, simplemente agregue ntfs-3g ( agregue ntfs-3g no ntfs ) y fuseblk para poder montar todos los archivos NTFS. Para más sistemas de archivos, agregue más líneas comenzando con -fstype=.

Mantenga NTFS montado hasta que el dispositivo esté desconectado

Aquí hay una solución para el problema, cuando la unidad NTFS montada solo es accesible durante unos segundos. Esta solución proviene de Christian Weinberger .

  1. Cree el archivo usbmount.rules en /etc/udev/rules.d/ con sudo nano /etc/udev/rules.d/usbmount.rules.

Este es el contenido:

KERNEL=="sd*", DRIVERS=="sbp2",         ACTION=="add",  PROGRAM="/bin/systemd-escape -p [email protected] $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p [email protected] $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p [email protected] $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
  1. Cree el archivo usbmount @ .service en / etc / systemd / system / with sudo nano /etc/systemd/system/[email protected].

Este es el contenido:

[Unit]
BindTo=%i.device
After=%i.device

[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes

Ahora reinicie y verifique cat /etc/mtaben qué carpeta están montados los dispositivos usb. De forma predeterminada, se montan a / media / usbstick0 .

Fuente:

Cristianos Fix

¿Por qué fusblk?

F. Untermoser
fuente
Esta solución necesita un par de pasos más, vea mi respuesta.
AbiusX
2

La respuesta de Untermoser es correcta, pero romperá parte de la funcionalidad usbmount.

Debido a que está utilizando unidades de Systemd para generar procesos para montar (para habilitar NTFS), la variable de entorno $DEVPATHya no se envía al usbmount addcomando, lo que da como resultado un error en la creación del enlace simbólico.

Para solucionarlo, ejecute lo siguiente:

sed -i '/# Determine vendor/,/if/ s/\(.*vendor=\)/if [ -z "$DEVPATH" ]; then DEVPATH="$(udevadm info --query=path --name=\/$DEVNAME)"; fi\n\1/g' /usr/share/usbmount/usbmount

El comando anterior se recrea $DEVPATHsi no está disponible.

También hay otro error en usbmount, con respecto a usbmount remove. Se repite sobre los puntos de montaje, y el que está definido en usmount config está desmontado. Sin embargo, si se encuentra una coincidencia pero no está en esa lista, elimina los descansos y no hace nada. Esto es particularmente crucial si crea múltiples puntos de montaje para un USB, porque usbmount ve el primero y no hace nada.

Para solucionarlo, se necesita el siguiente cambio:

sed -i '/umount.d ||/,/break/ s/break.*//; /umount.d ||/,/done/ s/:/:\n\t\tbreak 2/' /usr/share/usbmount/usbmount

Esto moverá la ruptura dentro del bucle interno (donde el éxito está garantizado y la ruptura de 2 pasos).

AbiusX
fuente
1

Para aquellos que intentan obtener lo mismo para trabajar en el nuevo Stretch (Lite) y encuentran que las respuestas de Untermoser y AlbiusX no desmontan las unidades vfat, deberán seguir estos pasos adicionales además de las respuestas proporcionadas. :

Ejecute el siguiente comando en la terminal:

sudo mkdir -p /etc/systemd/system/systemd-udevd.service.d/

Esto creará las carpetas necesarias necesarias. A continuación, cree un archivo conf aquí, por ejemplo:

sudo nano /etc/systemd/system/systemd-udevd.service.d/shared-mount-ns.conf

Dentro de este archivo agregue las siguientes líneas:

[Service] MountFlags=shared

Esto cambiará el comportamiento predeterminado de systemd-udevd de los espacios de nombres privados del sistema de archivos para usar los compartidos, lo que es equivalente al comportamiento de udev en jessie.

(Obtenido de /unix/330094/udev-rule-to-mount-disk-does-not-work/330156#330156 )

Nacsiar
fuente
Así que este fue el problema todo el tiempo: estaba buscando documentos obsoletos. Estoy corriendo Linux raspberrypi 4.14.79-v7+en el Pi, para referencia
ctietze