Fixer le nom d’un périphérique USB de manière permanante avec « udev »

tux-161379_1280Lorsque l’on branche un périphérique USB, udev se charge de créer une entrée dans « /dev ». Toutefois, cette entrée de la forme « /dev/sdx » varie en fonction des périphériques déjà branchés à la machine.

Pour les besoins d’un script de sauvegarde (ce point fait l’objet d’un article en cours de rédaction), il est nécessaire que cette entrée reste fixe. Pour cela, il est possible d’écrire une règle « udev » particulière qui sera associée à une information permettant d’identifier le disque USB de manière unique (le numéro de série me semble un bon candidat).

Je vous propose de voir tout cela pas à pas dans ce billet

Rechercher le périphérique correspondant au disque dans « /dev »

Dans un premier temps, il faut récupérer l’entrée correspondant au disque dans « /dev« . Pour cela, brancher le disque à la machine.

La commande « fdisk -l » m’apprend que le disque est branché sur « /dev/sdh« .

fdisk -l
...
Disque /dev/sdh : 931,5 GiB, 1000204886016 octets, 1953525168 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x03bda79b
 
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdh1 2048 1953521663 1953519616 931,5G 7 HPFS/NTFS/exFAT

Récupérer un identifiant du disque pour écrire la règle « udev »

Pour récupérer le numéro de série qui pourra être utilisé par « udev« , je lance la commande « udevadm info -a -p $(udevadm info -q path -n /dev/sdh) »

udevadm info -a -p $(udevadm info -q path -n /dev/sdh)
 
...
 
ATTRS{serial}=="0000:00:13.5"
 
...

Toute les lignes retournées peuvent être utilisées comme entrée de la règle « udev« . Ici, on s’intéresse à « ATTRS{serial}« .

Création de la règle« udev »

Le dossier « /etc.udev/rules.d/ » contient l’ensemble des règles qui peuvent être modifiées par l’utilisateur. Je crée un nouveau fichier « 20-perso.rules » contenant la ligne suivante :

# Créationd 'une entrée dans "/dev/sauvegardeUSB" pour le périphérique ayant le numéro de série "0000:00:13.5"
ATTRS{serial}=="0000:00:13.5", SYMLINK+="sauvegardeUSB"

Et effectivement, lorsque l’on branche à nouveau le disque, un périphérique « /dev/sauvegardeUSB » est créé.

ls -l /dev/sauvegardeUSB
lrwxrwxrwx 1 root root 4 20.07.2015 21:56 /dev/sauvegardeUSB -> sdh1

Éjecter le disque

L’idée ici est d’arrêter le disque USB lorsque l’on n’a pas besoin de ce dernier. Pour cela, il faut commencer par démonter le périphérique :

umount /dev/sauvegardeUSB

Il est ensuite possible d’éjecter ce dernier :

sdparm --command=eject /dev/sauvegardeUSB

Après cette commande, le disque n’apparaît plus dans l’interface graphique.  Il fonctionne encore quelques minutes avant de s’arrêter de tourner.

Remonter le disque après éjection

Un simple « mount » permet de récupérer le disque.

sudo mount -t ntfs /dev/sauvegardeUSB /mnt/svg/

Pour éviter de devoir faire l’opération en « root », le plus simple est d’ajouter une entrée dans « /etc/fstab » avec l’option « users« .

Références

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *