Welcome to the Slackware Documentation Project

Ceci est une ancienne révision du document !


Traduction en cours! — Cedric M. 2015/09/08 16:23

Montage automatique des disques usb avec udev

J'ai un GoFlexNet qui fonctionne sous Slackware Arm que je tiens à utiliser comme un NAS (c'est agréable d'être en mesure de faire du RAID logiciel avec les 2 disques durs SATA). En plus d'avoir un ensemble, je voulais aussi être en mesure de partager un disque usb très rapidement sans avoir à interagir en aucune façon avec l'applicatif: voilà où j'en suis arrivé:

L'idée est d'utiliser les labels de volume pour monter le disque USB et l'exporter via NFS. Toute partition qui n'a pas de label ou qui est dédié au swap linux sera ignoré. Well the umounting upon drive unplug is pointless but it also cleans up the exported filesystems avoiding writes in the parent directory.

J'ai écrit quelques règles udev très simples pour appeler le programme de gestion:

  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:~#

Ainsi que ce script de gestion:

  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:~#

Voici à quoi ressemble mon /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:~#

Il se remplit avec de nouvelles lignes lorsque des lecteurs USB vont et viennent. La seule chose que vous pouvez faire avant de débrancher tout lecteur USB est de remonter manuellement le système de fichiers en lecture seule sur le NAS. Il n'y a malheureusement pas de boutons sur le GoFlexNet qui puissent être utilisés pour déclencher cette action.

Sources


Autres langues
Traductions de cette page?:
QR Code
QR Code fr:howtos:general_admin:automount_via_udev (generated for current page)