Ce script a été rendu obsolète par l'amélioration de hal, fam, udev, gnome-volume-manager, etc... ; je ne l'utilise plus mais il peut encore servir.
Gestion automatique des périphériques de stockage USB
(clic here for english version)
1) Contexte et objectif
Ceci s'applique aux périphériques pris en charge par le module usb_storage, c'est-à-dire les clefs USB, les disques durs USB, et de nombreux appareils photo numériques. Votre noyau doit être en version 2.6.x et vos périphériques doivent être gérés par Udev (pas DevFS, ni un /dev statique).
Lors du branchement d'un tel périphérique, le but est de :
- créer un point de montage avec un nom explicite correspondant au périphérique (/media/IntelligentStick). Pour ça les infos sont récupérées dans le label de la partition, ou sinon dans /sys (modèle ou fabricant)
- ajouter la ligne correspondante dans /etc/fstab
Lors du débranchement, on retire simplement la ligne de /etc/fstab et le point de montage.
De cette façon, sous Gnome, en ayant FAM ou GAMIN installé et actif, le périphérique apparaît automatiquement dans la liste des périphériques montables (clic droit sur le bureau -> volumes, ou dans le poste de travail sous gnome >=2.6).
On peut ainsi le monter ou le démonter à la souris très simplement.
2) Le script
La dernière version est updfstab-17
Les autres versions sont ici : http://ccomb.gorfou.fr/static/usbstorage/
Merci à toutes les personnes qui m'ont aidé à améliorer ce script (Stefan Illner, Thomas Jahns, Elia Yehuda, Iain Mac Donald, Jan Schulz, Peter Kolloch, Christian Perrier, Eric Freyens, Yth., Florian Iragne, Gurvan huiban, Benoit-Pierre Demaine, Emmanuel Bouthenot, Christophe Jenaux, gpe92, Yannick Torres, Christophe Thiesset)
Je n'ai pour l'instant par assez de temps pour maintenir ce script, je place ci-dessous les versions ultérieures et contributions :
Voici une préversion 18rc (amélioration de détection de l'utilisateur, gestion de l'icône KDE, correction pour les lecteurs Zip USB)
updfstab-18rc
Voici un port vers perl 5.6, fait par Thomas Jahns, et qui crée une autofs map au lieu de modifier le fstab : hotplug-mount.pl, et son README
Voici une version 17+ modifiée par Christophe Thiesset avec gestion de l'icône KDE, message d'avertissement en cas de débranchement sans démontage, et autres modifications :
updfstab-17.chthiesset.dev (et daemon associé : updfstab-sync.chthiesset.c)
Voici un paquet Debian de la version modifiée (déc 2005), contenant le script et le daemon, et qui a été déployée à l'INSA Toulouse pour les salles de cours et les postes utilisateurs. Les améliorations apportées sont les messages d'avertissement pour l'utilisateurs, l'ouverture de konqueror sur le contenu du péripherique automatisée et le démontage à chaud possible sans (trop) de perte de données. Le point négatif étant une baisse du taux de transfert (le démon synchronise toutes les 10 secondes).
Voici une autre version 17+ par Yannick Torres avec gestion de l'icône KDE :
updfstab-17.yannick
Christian Gatzemeier suggère de modifier les options de montage. Voir en bas de page.
3) Prérequis
Vous devez avoir installé :
- un noyau 2.6
- Udev
- hotplug
- fam ou Gamin
- hal (si vous utilisez un lecteur de cartes flash CF, SD, MS, etc.)
- facultatif pour gnome : gnome-volume-manager et hal permettent de faire de l'automontage et d'ouvrir automatiquement nautilus lors de l'insertion du périphérique. (il faut l'activer dans le gnome-volume-properties).
4) Installation
Le script doit être simplement copié comme /etc/dev.d/default/updfstab.dev, et rendu exécutable :
- Ouvrez un terminal et devenez root en tapant su <Enter>, puis votre mot de passe root.
- Collez la ligne suivante dans votre terminal :
of=/etc/dev.d/default/updfstab.dev; wget ccomb.gorfou.fr/static/usbstorage/updfstab-latest -O $of; chmod 755 $of
5) Désinstallation
- Ouvrez un terminal et devenez root en tapant su <Enter>, puis votre mot de passe root.
- Effacez simplement le script en tapant : rm -f /etc/dev.d/default/updfstab*
6) Historique des modifications
- updfstab-17 (23-Jan-2005)
- gestion des périphériques sans partition (formattés tels quels)
- modification du choix pour le nom du point de montage. (label->model->vendor->"usb-disk")
- utilisation de ext2, ext3 et xfs à la place de auto pour le montage de ces systèmes de fichiers
- updfstab-2.6-16 (14-Jan-2005)
- améliorations et corrections mineures
- prise en charge du noyau 2.6.10
- suppression de la dépendance avec procmail (/usr/bin/lockfile)
- meilleur comportement avec plusieurs périphériques
- utilisation de "vfat" au lieu de "auto" pour les périphériques FAT
- automontage à l'insertion (désactivé par défaut. Voir la fin du script)
- updfstab-2.6-15 (13-Déc-2004)
- correction d'un bogue pour le cas du débranchement d'un périphérique monté.
- autres modification mineure
- updfstab-2.6-14 (24-Nov-2004)
- prise en charge d'udev 0.46 qui ne semble plus fournir DEVNAME au débranchement
- updfstab-2.6-13 (02-Nov-2004)
- retrait de l'option "sync", qui divisait par 10 les taux de transfert. Il faudrait trouver un moyen d'activer "sync" tout en pouvant spécifier le blocksize au montage (l'option -o blocksize n'a aucun effet).
- updfstab-2.6-12 (11-Oct-2004)
- gestion du label des partitions EXT2/3 (via e2label)
- ajout de l'option de montage "noatime" pour éviter d'écrire lors d'une simple lecture
- updfstab-2.6-11 (27-Aug-2004)
- gestion du label des partitions XFS (via xfs_admin)
- protection du script entier par lockfile (pour éviter les accès conrurrents au périphérique)
- les partitions étendues ne sont plus prises en compte (car non montables)
- le numéro de partition n'est plus ajouté au nom du point de montage
- updfstab-2.6-10 (08-Jul-2004)
- arrêt immédiat si /usr/bin n'est pas disponible (sinon erreurs pendant le démarrage si /usr est une partition séparée.)
- utilisation d'un lockfile pour protéger les accès à /etc/fstab
- utilisation du syslog
- updfstab-2.6-9 (03-Jul-2004)
- utilisation de iocharset=utf-8 seulement pour FAT et NTFS
- si on débranche un périphérique monté, les processus y accédant sont tués et le périphérique est démonté.
(accessoirement on redémarre famd s'il était lancé et s'il a été tué, parce qu'il bloque souvent le démontage à cause de nautilus)
- updfstab-2.6-8 (03-Jul-2004)
- ajout d'une option de debug (décommenter DEBUG=1)
- correction d'un bug qui empêchait le retrait de la ligne fstab et du point de montage
- suppression des erreurs non fatale (option -q à modprobe et ajout de >/dev/null à ls)
- effacement de la ligne fstab et du point de montage avant ajout s'ils existent au branchement (pour purger)
- autres corrections de bug
- updfstab-2.6-7 (06-Jun-2004)
- Réécriture complète du script
- Le script utilise maintenant les variables passées par udevd (ACTION, DEVNAME, DEVPATH)
- Le point de montage est aussi retiré au débranchement
- Ca devrait fonctionner quelles que soient les règles de udev (avec /dev/scsi ou /dev/sda)
- le /dev n'est pas écrit en dur, donc ça doit marcher aussi avec /udev
- remplacement de modprobe par /sbin/modprobe au cas où /sbin n'est pas dans le PATH.
- protection contre l'execution pour des périphériques non usb (erreurs au boot)
- updfstab-2.6-6 (05-Jun-2004)
- Le point de montage est maintenant /media au lieu de /mnt (recommandation du standard FHS)
- updfstab-2.6-5 (05-Jun-2004)
- si le point de montage choisi est déjà utilisé dans fstab, un nombre est collé à la fin. (ex: usb-disk => usb-disk-2)
- l'utilisation du serial number est retirée. (aucune utilité)
- updfstab-2.6-4 (05-Jun-2004)
- modification du choix pour le nom du point de montage. (label->product->manufacturer->"usb-disk")
- updfstab-2.6-3 (05-Jun-2004)
- modification du choix pour le nom du point de montage. (product->manufacturer->"usb-disk")
- updfstab-2.6-2 (19-Apr-2004)
- modification du choix pour le nom du point de montage. (manufacturer->product->"usb-disk")
- updfstab-2.6 (18-Mar-2004)
- réécriture de la version pour noyau 2.4
Bugs :
- ne fonctionne pas bien avec les lecteurs usb de cartes flash : il faut débrancher et rebrancher le lecteur pour que le périphérique apparaisse.
- le parametre iocharset=utf8 empeche mes disques d'etre montés (testé avec un Archos et un apn)
--> je n'ai pas compilé le support de l'utf8 comme chartset dans le kernel :
Nov 21 16:02:01 [kernel] Unable to load NLS charset utf8
--> De plus j'ai cette erreur la, et donc ca me fait dire que peut etre on ne devrait pas mettre cette option :
Nov 21 16:02:01 [kernel] FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
- Si le device du peripherique est different de la fois precedente ou il a ete monté (car le nom device depend de l'ordre des branchement lorsqu'il y a plusieurs peripheriques) alors la ligne n'est pas retiré du fstab.
À faire :
- interface graphique de configuration pour :
- choisir d'activer ou non le montage automatique
- modifier les points de montage (soit un mapping sur le nom déduit, ou modification directe du label)
- étudier la possibilité de gestion des partitions de disques durs (autres que celles déjà connues du fstab)