[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

¡Esta es una revisión vieja del documento!


En proceso de traducción. Victor

Las unidades USB de montaje automático son udev

Tengo una GoFlexNet que ejecuta Slackware Arm que me gusta usar como NAS (es bueno poder hacer una incursión de software con las 2 unidades sata). Junto con tener una matriz, también quería poder compartir cualquier disco USB de manera muy rápida sin tener que interactuar de ninguna manera con el dispositivo: esto es lo que se me ocurrió:

La idea es usar las etiquetas de volumen para tener la unidad USB montada y exportada a través de NFS. Cualquier partición que no tenga etiqueta o que sea un intercambio de linux será ignorada. Bueno, el desmontaje al desenchufar la unidad no tiene sentido, pero también limpia los sistemas de archivos exportados evitando escrituras en el directorio principal.

Escribí un par de reglas de udev realmente simples para llamar al programa de administración:

root@nas:~# cat /etc/udev/rules.d/99-parsistent-personal.rules 
ACTION=="add",KERNEL=="sd[a-z][1-9]", PROGRAM="automount"
ACTION=="remove",KERNEL=="sd[a-z][1-9]", PROGRAM="automount"
root@nas:~#

Y este es el script de gestión.

root@nas:~# cat /lib/udev/automount 
#!/bin/bash
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
#echo "$(date) " >> /tmp/env.txt
#/usr/bin/env >> /tmp/env.txt
#id >> /tmp/env.txt
DEV=$(basename $DEVNAME)
LABEL=$(ls -l /dev/disk/by-label/ |grep $DEV |awk '{print $(NF-2)}')
[ "$LABEL" = "" ] && LABEL=$ID_FS_LABEL
[ "$LABEL" = "" ] && exit
[ "$ID_PART_ENTRY_TYPE" = "0x82" ] && exit

echo "$DEV $LABEL $ACTION" >> /tmp/env.txt

case $ACTION in
add) mkdir -p /mnt/exports/$LABEL
     logger "automount: add $LABEL"
     exportfs -u *:/mnt/exports/$LABEL
     mount LABEL=$LABEL /mnt/exports/$LABEL
     [ $(grep -c "^/mnt/exports/$LABEL" /etc/exports) -eq 0 ] && \
       echo "/mnt/exports/$LABEL *(rw,no_root_squash,no_subtree_check,nohide)" >> /etc/exports
     exportfs -r -a 
  ;;
remove) 
     logger "automount: remove $LABEL"
     exportfs -u *:/mnt/exports/$LABEL
     mount -o remount,ro /mnt/exports/$LABEL
     umount /mnt/exports/$LABEL
     rmdir /mnt/exports/$LABEL
;;
esac

root@nas:~#

Así es como se ve inicialmente mi /etc/exports:

root@nas:~# cat /etc/exports 
# See exports(5) for a description.
# This file contains a list of all directories exported to other computers.
# It is used by rpc.nfsd and rpc.mountd.
/mnt/exports *(rw,no_root_squash,no_subtree_check,crossmnt)
root@nas:~#

se llena con nuevas líneas a medida que las unidades USB van y vienen. Lo único que puede hacer antes de desenchufar cualquier unidad USB es volver a montar el sistema de archivos ReadOnly en el nas manualmente. No hay ningún botón en GoFlexNet que pueda usarse para desencadenar esto desafortunadamente.

Sources

 es:howtos:general_admin:automount_via_udev ()
Esta traducción es más antigua que la página original y podría estar obsoleta. Ver lo que ha cambiado.