LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


expert:auto_mounting

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

expert:auto_mounting [2018/11/17 13:53] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Montage des disques externes ======
 +  * Dans un environnement de bureau classique, le montage des disques externes est assuré par l'​environnement lui-même (Gnome/​KDE/​XFCE...) par le biais d'​outils intégrés.\\
 +  * Dans un environnement minimal, le montage des disques externes se fait à la ligne de commande. pour une clé usb partitionnée en fat32: <​code>#​ mkdir /mnt/usb
 +# mount -t vfat /dev/sda2 /​mnt/​usb</​code>​ la manipulation est simple mais utilise les droits '​root'​. pour automatiser le montage et passer par le compte utilisateur,​ nous pouvons utiliser plusieurs outils: fstab, udisks-glue ou devmon.
  
 +===== Montage semi-automatique avec fstab =====
 +**/​etc/​fstab** est le fichier qui regroupe les points de montage du système.
 +==== Montage de clé "​lambda"​ ====
 +le principe : créer des points de montage "​universel"​ pour les clés usb en vfat:
 +  * création des points de montage: autant que de ports usb disponibles...<​code>#​ mkdir /​media/​usbdisk-1
 +# mkdir /​media/​usbdisk-2
 +# ....</​code>​
 +  * déclaration des points de montages dans fstab: ouvrir fstab<​code>#​ vim /​etc/​fstab</​code>​et ajouter les lignes correspondantes aux usbdisk (une par point de montage)<​code>/​dev/​sdb1 ​   /​media/​usbdisk-1 ​   vfat    rw,​users,​noauto ​   0    0
 +/​dev/​sdc1 ​   /​media/​usbdisk-2 ​   vfat    rw,​users,​noauto ​   0    0
 +....</​code>​de cette façon, toute clé usb formatée en vfat (la majorité) sera accessible par le dossier /​media/​usbdisk-1. si vous insérez une seconde clé , elle sera accessible depuis /​media/​usbdisk-2 ... et ainsi de suite pour tous vos ports usb disponibles.\\
 +notez que cette méthode ne prend pas en compte les clé avec 2 partitions ou plus, ni celle formatées en ext3/4.
 +
 +==== Montage de clé identifiée ====
 +Si vous utilisez toujours les mêmes clés , vous pouvez définir des points de montage spécifiques:​
 +  * création du point de montage spécifique:<​code>#​ mkdir /​media/​le_nom_qui_claque</​code>​
 +  * récupérer l'uuid du disque usb à monter: brancher votre clé usb puis lister les disques disponibles:<​code>​ 23:56 arp > ls -l /​dev/​disks/​by-uuid
 +total 0
 +lrwxrwxrwx 1 root root 10 Mar  3 23:29 7a2980d8-593c-4fcf-a145-b448f4dee02c -> ../../sda2
 +lrwxrwxrwx 1 root root 10 Mar  3 23:56 8A43-6E99 -> ../../sdb1
 +lrwxrwxrwx 1 root root 10 Mar  3 23:29 e171837c-895c-444d-8699-0f4760cca2ca -> ../../sda1
 + 23:56 arp ></​code>​
 +vous remarquez l'uuid associée à /dev/sdb1 , c'est celui de votre clé usb.
 +  * déclarer votre clé dans fstab<​code>#​ vim /​etc/​fstab</​code>​et ajouter la ligne suivante (à adapter selon votre uuid) :<​code>​UUID=8A43-6E99 ​   /​media/​le_nom_qui_claque ​   vfat    rw,​users,​noauto ​   0    0</​code>​et voilà , votre clé préférée se montera dans votre dossier spécifique , quel que soit le port utilisé.
 +
 +===== Montage automatique avec udisks-glue =====
 +==== Installation ====
 +**udisks-glue** est un démon qui reçoit et envoi des instructions depuis/vers **udisks**.\\
 +le paquet est disponible sur Debian Wheezy, il suffit de l'​installer:<​code>#​ apt-get install udisks-glue</​code>​
 +==== Configuration ====
 +udisks-glue se configure depuis un simple fichier texte: on le récupère depuis /etc
 +<​code>​$ cp /​etc/​udisks-glue.conf ~/​.udisks-glue.conf</​code>​
 +mon fichier pour l'​exemple avec notifications (dépend de [[personaliser:​dzen2|dzen2]])
 +<file - udisks-glue.conf>​
 +default {
 +        post_insertion_command = "echo -e '​%device_file insert'​ | dzen2 -x 0 -y 0 -ta l -p 4"
 +}
 +filter disks {
 +        optical = false
 +        partition_table = false
 +        usage = filesystem
 +}
 +match disks {
 +        automount = true
 +        post_mount_command = "echo -e '​^fg(cyan)usb mounted: ^fg(white)%device_file on %mount_point'​ | dzen2 -x 0 -y 0 -ta l -p 5 && rox %mount_point"​
 +        post_unmount_command = "echo -e '​^fg(red)usb unmounted: ^fg(white)%device_file on %mount_point'​ | dzen2 -x 0 -y 0 -ta l -p 5"
 +}
 +filter optical {
 +        optical = true
 +}
 +match optical {
 +        automount = true
 +        automount_options = ro
 +        post_mount_command = "echo -e '​^fg(yellow)cd-rom mounted: ^fg(white)%device_file on %mount_point'​ | dzen2 -x 0 -y 0 -ta l -p 7 && rox %mount_point"​
 +        post_unmount_command = "echo -e '​^fg(red)cd-rom unmounted: ^fg(white)%device_file on %mount_point'​ | dzen2 -x 0 -y 0 -ta l -p 7"
 +}</​file>​
 +ce fichier affiche une notification avec dzen2 lors de l'​insertion d'un média externe, annonce le montage du périphérique,​ puis ouvre le point de montage avec rox-filer (à adapter à vos préférences).
 +
 +==== Lancement ====
 +**udisks-glue** se lance simplement depuis votre script de démarrage, ~/.xinitrc ou autre (dbus doit être lancé et actif)
 +<​code>​sleep 5s && udisks-glue --session &</​code>​
 +
 +===== Montage automatique avec devmon =====
 +**devmon** est un script bash communiquant avec **udisks** et permettant le montage automatique des disques externes en tant que simple utilisateur. il dépend de udisks/udev et recommande **zenity** pour les notifications (optionnel) et **eject**.
 +
 +==== Installation ====
 +devmon fait partie de [[http://​ignorantguru.github.com/​udevil/​|udevil]] mais peut être installé indépendamment.
 +<​code>​$ wget https://​raw.github.com/​IgnorantGuru/​udevil/​master/​src/​devmon
 +# apt-get install eject zenity
 +# install devmon /​usr/​local/​bin/​devmon</​code>​
 +la configuration de devmon se fait depuis la ligne de commande, au lancement de l'​application.
 +
 +==== Lancement ====
 +  * **mode démon** : devmon se lance depuis votre script de démarrage, ~/.xinitrc ou autre (dbus doit être lancé et actif):<​code>​$ devmon [AUTOMOUNT-OPTIONS] ​ # lancement en mode démon pour un (dé)montage automatique</​code>​
 +  * **mode client** : devmon peut aussi être lancé en cours de session afin d'​obtenir des informations sur les disques présents et un (dé)montage manuel:<​code>​$ devmon [MOUNT-OPTIONS] ​     # lancement en mode client pour un (dé)montage manuel</​code>​
 +  *  les **logs devmon** : si vous désirez garder une trace des actions de devmon, il suffit de le lancer comme ceci:<​code>​$ devmon &>/​tmp/​devmon.log</​code>​
 +
 +==== Options ====
 +devmon accepte les options suivantes selon le mode de lancement démon-auto/​manuel (extrait de devmon --help):
 +^options (démon)^arguments^description^
 +|%%--exec-on-device%% |DEVICE "​COMMAND"​|exécute COMMAND après avoir monté DEVICE |
 +|%%--exec-on-label%% |"​LABEL"​ "​COMMAND"​|exécute COMMAND après avoir monté LABEL |
 +|%%--exec-on-video%% |"​COMMAND"​ |exécute COMMAND après le montage d'un DVD |
 +|%%--exec-on-audio%% |"​COMMAND"​ |exécute COMMAND après le montage d'un CD audio |
 +|%%--exec-on-disc%% |"​COMMAND"​ |exécute COMMAND après avoir monté un CD/DVD de données |
 +|%%--exec-on-drive%% |"​COMMAND"​ |exécute COMMAND après avoir monté un disque dur externe (hdd/usb) |
 +|%%--exec-on-unmount%% |"​COMMAND"​ |exécute COMMAND après avoir démonté un volume |
 +|%%--exec-on-remove%% |"​COMMAND"​ |exécute COMMAND après avoir retiré un média. macros: %d: point de montage (ex:/​media/​cd),​ %f: nom du périphérique (ex:/​dev/​sdd1) et %l: label du volume monté. |
 +|:::​|:::​|vous pouvez utiliser plusieurs "​%%--exec-on-XXX%%"​ afin d'​exécuter plusieurs commandes. les autres "​exec-on-XXX"​ sont ignorées si vous utilisez "​exec-on-device"​ ou "​-label"​. |
 +|%%--mount-options%% |"​OPTIONS"​ |défaut: $defaultmountoptions |
 +|%%--info-on-mount%% ||affiche les informations sur le volume monté dans une fenêtre pop-up. |
 +|%%--no-mount%% ||ne fait rien, désactive %%--exec-on-video%%. |
 +|%%--no-unmount%% ||ne démonte pas les médias amovibles à la fermeture du démon. |
 +^options (client)^arguments^description^
 +|%%--unmount-removable,​ -r%% ||synchronise et démonte tous les médias amovibles et affiche une fenêtre de dialogue. |
 +|%%--unmount-recent,​ -c%% ||démonte le média monté en dernier. |
 +|%%--unmount-optical,​ -o%% ||démonte les cd/dvd et affiche une fenêtre pop-up en cas d'​erreur. |
 +|%%--unmount-all,​ -u%% ||idem '​--unmount-removable --unmount-optical'​. |
 +|%%--unmount%% |DIR, DEVICE |démonte DEVICE ou le point de montage DIR. |
 +|%%--eject%% |DIR, DEVICE |démonte et éjecte DEVICE ou le point de montage DIR. |
 +|%%--mount-all,​ -a%% ||monte tous les médias amovibles et cd/dvd. |
 +|%%--mount%% |DEVICE | monte DEVICE. |
 +|%%--mount-options%% |OPTIONS|les OPTIONS seront passées au montage et à l'​éjection d'un média. |
 +|%%--mount-fstype%% |:::|:::|
 +|%%--eject-options%% |:::|:::|
 +^options (communes)^arguments^description^
 +|%%--ignore-device%% |DEVICE |ignorer DEVICE (ex:/​dev/​sdd1). |
 +|%%--ignore-label%% |"​LABEL"​ |ignorer le volume "​LABEL"​. |
 +|%%--sync, -s%% ||ajoute la synchronisation lors du montage pour ext2-4 ntfs ufs, ou '​flush'​ pour fat & vfat (écriture ralentie mais sécurisée). |
 +|%%--internal%% ||tente de gérer les périphériques internes (pour fixer le bug des Esata). |
 +|%%--no-gui,​ -g%% ||pas de fenêtres pop-up. |
 +
 +===== dbus actif =====
 +udisks (utilisé par udisks-glue et devmon) communique grâce à dbus. votre session doit donc être active. pour cela, dans un environnement minimal, on utilise la commande "​ck-launch-session"​.ex dans mon ~/.xinitrc:
 +<code bash>
 +#!/bin/bash
 +# ~/.xinitrc by arpinux 2013
 +############################​
 +## D-Bus ##​-------------------------------------------------------------
 +if which dbus-launch >/​dev/​null && test -z "​$DBUS_SESSION_BUS_ADDRESS";​ then
 +        eval "​$(dbus-launch --sh-syntax --exit-with-session)"​
 +fi
 +(...)vos application(...)
 +## launch dwm-session script ###########################################​
 +exec ck-launch-session bash -c "​devmon [OPTIONS] & $HOME/​bin/​dwm-session</​code>​
 +pour tester l'​activité de votre session:
 +<​code>​$ ck-list-sessions</​code>​
 +vous devez avoir une sortie de ce style (notez le '​active = TRUE'​):​
 +<​code>​
 + unix-user = '​1000'​
 + realname = '​arpinux'​
 + seat = '​Seat1'​
 + session-type = ''​
 + active = TRUE
 + x11-display = ':​0'​
 + x11-display-device = '/​dev/​tty7'​
 + display-device = '/​dev/​tty1'​
 + remote-host-name = ''​
 + is-local = TRUE
 + on-since = '​2013-03-03T22:​30:​00.423066Z'​
 + login-session-id = '​1'​
 +</​code>​
 +cas particulier:​ l'​autorisation ne vous est pas accordé malgré la session active: éditez le fichier /​etc/​pam.d/​common-session et assurez-vous d'​avoir ceci (éditez en conséquences):​
 +<​code>​
 +#
 +# /​etc/​pam.d/​common-session - session-related modules common to all services
 +#
 +# This file is included from other service-specific PAM config files,
 +# and should contain a list of modules that define tasks to be performed
 +# at the start and end of sessions of *any* kind (both interactive and
 +# non-interactive).
 +#
 +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
 +# To take advantage of this, it is recommended that you configure any
 +# local modules either before or after the default block, and use
 +# pam-auth-update to manage selection of other modules. ​ See
 +# pam-auth-update(8) for details.
 +
 +# here are the per-package modules (the "​Primary"​ block)
 +session [default=1] pam_permit.so
 +# here's the fallback if no module succeeds
 +session requisite pam_deny.so
 +# prime the stack with a positive return value if there isn't one already;
 +# this avoids us returning an error just because nothing sets a success code
 +# since the modules above will each just jump around
 +session required pam_permit.so
 +# and here are more per-package modules (the "​Additional"​ block)
 +session required ​           pam_unix.so ​
 +session optional pam_loginuid.so
 +session optional pam_ck_connector.so nox11
 +# end of pam-auth-update config
 +</​code>​
expert/auto_mounting.txt · Dernière modification: 2018/11/17 13:53 (modification externe)