Monter automatiquement un disque depuis OpenBSD 6.0

Rédigé par prx 6 commentaires
Classé dans : Trucs & Astuces Mots clés : mount, hotplugd, hotplug-diskmount, usb

La version 6.0 a supprimé l'option kern.usermount qui permettait à un simple utilisateur de monter un disque. Cela a entrainé l'inefficacité du démon toad qui se chargeait de monter les disques de façon transparente.

Heureusement, tout n'est pas perdu. Il est possible d'utiliser le démon hotplug qui se charge de lancer un script /etc/hotplug/attach lorsqu'un appareil est branché en USB.

Après un peu de recherche, on s'aperçoit qu'il est très simple de vérifier qu'il s'agit bien d'un disque qui est branché. Le man hotplug aide beaucoup ☺. Puis on bricole un peu, et on s'aperçoit que quelqu'un l'a déjà fait.

En gros, on commence par activer hotplugd :

# pkg_add hotplug-diskmount
# rcctl enable hotplugd
# rcctl start hotplugd

On remplit ensuite le script /etc/hotplug/attach avec :

#!/bin/sh

DEVCLASS="$1"
DEVNAME="$2"
MOUNTROOT="/mnt"

case "${DEVCLASS}" in
2)
        # disk devices
        # thanks to
        # https://www.tumfatig.net/20110903/automount-usb-stick-on-openbsd/
        disklabel="$(/sbin/disklabel ${DEVNAME} 2>&1 | sed -n '/^disk: /s/^disk: //p')"
        case "${disklabel}" in
                "SCSI disk")
                        slices="$(/sbin/disklabel ${DEVNAME} 2>&1 | sed -n '/^ *[abd-z]: /s/^ *\([abd-z]\):.*/
\1/p')"
                        echo "${slices}" > /tmp/test
                        for slice in ${slices}; do
                                mkdir -p -m 1777 "${MOUNTROOT}/${DEVNAME}${slice}"
                                mount "/dev/${DEVNAME}${slice}" "${MOUNTROOT}/${DEVNAME}${slice}"
                        done
                ;;
        esac
;;
esac

exit

Maintenant, à chaque fois qu'un disque est branché, des dossiers sont créés dans /mnt pour monter les disques. Et un simple utilisateur peut écrire dedans. Youhou! ☺

Tout ceci a été repris dans le wiki.


Ajout au 16/09/16 : Il est possible/probable que certains périphériques USB bien que détectés par dmesg(8) comme umass0 ne puissent pas être montés par le script ci-dessus. Dans ce cas, préférez cette méthode d'installation, de configuration et de reconnaissance matérielle : Projet hotplug-diskmount

Fil RSS des articles de ce mot clé