Page 1 sur 1
[systemd,mount] Montages (bind) sans fstab (résolu)
Publié : ven. 14 déc. 2012, 13:37
par MbdM
Bonjour, je souhaite monter certains dossiers (bind) directement via un service systemd afin d'éviter qu'ils soient détectés par nautilus via le fichier fstab (voir par exemple
ce sujet.
J'ai commencé par regarder les fichiers générés automatiquement par systemd-fstab-generator qui se trouvent dans /run/systemd/generator/. J'ai trouvé par exemple ceci :
Code : Tout sélectionner
# Automatically generated by systemd-fstab-generator
[Unit]
SourcePath=/etc/fstab
DefaultDependencies=no
After=local-fs-pre.target
Wants=local-fs-pre.target
Conflicts=umount.target
Before=umount.target
Before=local-fs.target
[Mount]
What=/media/datas/user/Documents
Where=/home/user/Documents
Type=none
FsckPassNo=0
Options=bind
J'ai ensuite créé un fichier /etc/systemd/system/home-user-documents.mount contenant ces données (et commenté la ligne correspondant à ce montage dans le fichier fstab). La question que je me pose est maintenant de savoir comment activer ce montage au démarrage ?
PS : systemctl enable home-user-documents.mount ne fonctionne pas bien sûr.
Merci.

Re: [systemd,mount] Montages (bind) sans fstab
Publié : ven. 14 déc. 2012, 13:43
par benjarobin
Il te manque la partie
[Install]
Par contre tu peux tester ton 'script' en lançant
Non testé, mais je dirait quelque chose comme ceci
Code : Tout sélectionner
[Unit]
DefaultDependencies=no
After=local-fs-pre.target
Wants=local-fs-pre.target
Conflicts=umount.target
Before=umount.target
Before=local-fs.target
[Mount]
What=/media/datas/user/Documents
Where=/home/user/Documents
Type=none
FsckPassNo=0
Options=bind
[Install]
WantedBy=local-fs.target
Re: [systemd,mount] Montages (bind) sans fstab
Publié : ven. 14 déc. 2012, 14:14
par tuxce
Juste pour info, un dossier de montage commencant par "." (point) est ignoré par nautilus. Après tu peux avoir un dossier sans le "." pointant dessus.
Re: [systemd,mount] Montages (bind) sans fstab
Publié : ven. 14 déc. 2012, 14:20
par oktoberfest
@benjarobin : je confirme, avec la section [Install] que tu as indiqué cela fonctionne très bien.
Re: [systemd,mount] Montages (bind) sans fstab
Publié : ven. 14 déc. 2012, 19:17
par MbdM
Merci pour vos réponses.
J'ai testé la solution proposée par benjarobin mais j'obtiens une erreur. En consulant journalctl j'ai :
Code : Tout sélectionner
home-user-documents.mount's Where setting doesn't match unit name. Refusing.
Un systemctl status home-user-documents.mount m'indique :
Il semble donc que l'argument Where ne soit pas correct, mais je ne sais pas trop pourquoi.
Re: [systemd,mount] Montages (bind) sans fstab
Publié : ven. 14 déc. 2012, 21:52
par MbdM
Solution trouvée, il faut nommer le fichier home-user-Documents.mount (et non pas home-user-documents.mount).
Re: [systemd,mount] Montages (bind) sans fstab (résolu)
Publié : sam. 15 déc. 2012, 11:59
par MbdM
En complément, plutot que de réaliser une unité .mount par dossier à monter, j'ai préféré passer par une unité .service et un script shell. Je crois que ça fonctionne correctement mais si quelqu'un peut me confirmer que ma façon de faire est bonne ça me conforterait (et au pire ça peut servir à d'autres). Voici les détails :
Dans /home/user j'ai un fichier exécutable home-user-mounts.sh qui contient :
Code : Tout sélectionner
#!/bin/sh
if [ "$1" = "start" ]; then
mount --bind /media/datas/user/Documents /home/user/Documents
mount --bind /media/datas/user/Téléchargements /home/user/Téléchargements
mount --bind /media/datas/user/Vidéos /home/user/Vidéos
mount --bind /media/datas/user/Musique /home/user/Musique
mount --bind /media/datas/user/Images /home/user/Images
fi
if [ "$1" = "stop" ]; then
umount /home/user/Documents /home/user/Téléchargements /home/user/Vidéos /home/user/Musique /home/user/Images
fi
Dans /etc/systemd/system/ j'ai un fichier home-user-mounts.service qui contient :
Code : Tout sélectionner
[Unit]
Description=Montage bind des sous-dossiers dans /home/user
DefaultDependencies=no
ConditionFileIsExecutable=/home/user/home-user-mounts.sh
After=media-datas.mount
Conflicts=umount.target
[Service]
Type=oneshot
ExecStart=/home/user/home-user-mounts.sh start
ExecStop=/home/user/home-user-mounts.sh stop
TimeoutSec=2
RemainAfterExit=yes
[Install]
WantedBy=local-fs.target
Je pense que cette méthode est plus souple que la précédente.