====== 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 ====== * Traduit de l'anglais par --- //[[wiki:user:cedric|Cedric M.]] 2015/09/08 17:45// {{tag>fr:howtos author_ louigi600 translator_cedric}}