OBSD4* : wiki

hotplug-diskmount : utiliser un périphérique USB facilement

Le projet 'hotplug-diskmount' est un plugin au démon de montage de périphérique à chaud sur port USB, dans OpenBSD, nommé hotplugd(8). Ce plugin n'est pas strictement dépendant d'une version ou l'autre d'OpenBSD.

La page du projet : http://www.bsdua.org/hotplug-diskmount.html

Le dépôt des sources : https://bitbucket.org/alex_vatchenko/hotplug-diskmount

Informations

hotplug-diskmount semble se baser sur la détection des informations qui sont retournées par disklabel, aussi !

hotplug-diskmount gère les partitions de type :

  • Fat, FAT32 (msdos) (lecture/écriture),
  • NTFS (lecture/écriture) - L'écriture est possible grâce à Fuse - veillez à l'avoir installer auparavant ! - support ajouté avec la version 1.0.2

    ATTENTION, il semble exister un bogue de détection ; en effet, si la table de partition de votre périphérique USB est de type “(ms)dos”, le périphérique sera détecté et monté correctement ; si la table de partition est de type “GPT”, cela ne sera pas le cas. Pour l'instant, avec la version 1.0.2, veillez à ce que votre table de partition soit “(ms)dos” !

  • iso 9660 - non testé
  • ext2/3 (lecture/écriture) - monte effectivement :
    • thunar plante ;
    • fonctionne sans soucis avec 'mc' en mode console'.
  • ext4 (lecture) - cherche à le monter, mais se vautre. Il semble nécessaire de faire le point de montage à la main, avec les droits admins.

OpenBSD >= 6.1

Depuis la version 6.1, OpenBSD utilise la version 1.0.2 du projet !

OpenBSD <= 6.0

Cette version d'OpenBSD n'est plus maintenue. Veillez à mettre-à-niveau !

OpenBSD 6.0 utilise la version 0.9 - elle est clairement dépassée, et peut ne pas fonctionner sur certains périphériques ; la raison est que depuis février 2015, date de sortie de la v0.9, la structure du fonctionnement de l'outil 'disklabel(8)' a été modifiée. Dans ce contexte, il serait plus intéressant d'utiliser la version de l'arbre des ports, à ce jour la v1.0.

Néanmoins, il vaut mieux utiliser la version 1.0.2, car celle-ci ajoute le support ntfs grâce à l'ajout de la gestion du projet fuse(4).

Autre source intéressante : https://www.tumfatig.net/20110903/automount-usb-stick-on-openbsd/

Pré-requis

Installer le paquet Fuse :

# pkg_add fuse

Installation

OpenBSD >= 6.1

Il suffit d'installer normalement le binaire hotplug-diskmount :

# pkg_add hotplug-diskmount

OpenBSD <= 6.0

Cette version d'OpenBSD n'est plus maintenue. Veillez à mettre-à-jour !

Téléchargement

On télécharge l'archive actuelle :

$ curl -O https://bitbucket.org/alex_vatchenko/hotplug-diskmount/get/HOTPLUG_DISKMOUNT_1_0_2_RELEASE.tar.gz

Compilation

On décompresse l'archive précédemment téléchargée, puis on va dans le répertoire nouvellement créé :

$ tar -xzvf HOTPLUG_DISKMOUNT_1_0_2_RELEASE.tar.gz
$ cd alex_vatchenko-hotplug-diskmount-c67dec2a53a6/

Maintenant, on s'occupe de la phase d'installation, proprement dite :

  $ make 
cc -O2 -pipe    -c hotplug-diskmount.c
hotplug-diskmount.c: In function 'do_mount':
hotplug-diskmount.c:355: warning: passing argument 2 of 'execv' from incompatible pointer type
hotplug-diskmount.c: In function 'do_fsck':
hotplug-diskmount.c:388: warning: passing argument 2 of 'execv' from incompatible pointer type
hotplug-diskmount.c: In function 'do_ntfs3g':
hotplug-diskmount.c:434: warning: passing argument 2 of 'execv' from incompatible pointer type
hotplug-diskmount.c: In function 'get_ntfs3g_label':
hotplug-diskmount.c:469: warning: passing argument 2 of 'execv' from incompatible pointer type
cc   -o hotplug-diskmount hotplug-diskmount.o 
  # make install
install -c -S -s  -o root -g bin  -m 555 hotplug-diskmount /usr/local/libexec/hotplug-diskmount
install -c -o root -g bin -m 444  hotplug-diskmount.8 /usr/share/man/man8/hotplug-diskmount.8

Initialisation

Il est IMPORTANT d'initialiser le projet pour créer son répertoire de montage par défaut - normalement /vol :

# /usr/local/libexec/hotplug-diskmount init

Il est intéressant à noter que l'on peut spécifier un répertoire cible en utilisant l'option -d, tel que :

 /usr/local/libexec/hotplug-diskmount -d /mnt/$USER init 

Il est ensuite nécessaire de l'activer pour qu'il soit pris en compte lors du redémarrage système :

# rcctl enable hotplugd

Configuration

Le fichier /usr/local/share/doc/pkg-readmes/hotplug-diskmount-1.0.2 nous informe qu'il faut créer/modifier le fichier /etc/hotplug/attach, puis veillez à ce qu'il soit exécutable :

# nano /etc/hotplug/attach
#!/bin/sh

DEVCLASS=${1}
DEVNAME=${2}
LOGIN="votre_id_user"

case "${DEVCLASS}" in
        2)
        /usr/local/libexec/hotplug-diskmount attach -u "${LOGIN}" -m 0700 "${DEVNAME}"
        ;;
esac

Puis :

# chmod +x /etc/hotplug/attach

Note : Modifier la valeur de la variable LOGIN, en ligne 5, avec votre identifiant de session utilisateur. De même, il est spécifié le mode '0700' afin que nul autre n'est accès au contenu !

ATTENTION : Toute modification dans ce fichier nécessitera le redémarrage du démon hotplugd ! Autrement, celles-ci ne seront pas prises en compte …

Démarrage

Démarrons le démon hotplugd afin que les modifications soient gérées :

# rcctl start hotplugd

Vérification

Après avoir inséré votre périphérique USB, ou CD-Rom …

En mode console :

  $ mount 
  (...)
  /dev/sd1i on /vol/DataTraveler 3. type msdos (local, nodev, nosuid, uid=1000, gid=0, mask=0700)

  $ ls -al /vol/                                                                                                                             
total 44
drwxr-xr-x   4 root  wheel    512 Sep 15 22:50 .
drwxr-xr-x  15 root  wheel    512 Sep 12 23:04 ..
drwx------   2 root  wheel    512 Sep 15 22:50 .db
drwx------   1 votre_id_user   wheel  16384 Jan  1  1980 DataTraveler 3.

En mode graphique, utilisez donc votre navigateur de fichiers, dirigez-vous vers le volume /vol - ou le répertoire cible que vous auriez précisé - où vous trouverez un répertoire créé automatiquement selon le label correspondant à votre périphérique.