Eu não sei de qualquer maneira em torno desta restrição systemd, como o nome do diretório do ponto de montagem é convertido em um nome de arquivo systemd. A resposta mais simples pode ser remover as entradas do fstab e escrever um pequeno script para fazer as montagens sob demanda:
#!/bin/bash
( mount -U xxxx-xxxx /media/strontium -t vfat -o rw,exec ||
mount -U yyyy-yyyy /media/strontium -t vfat -o rw,exec
) && echo ok
Não se esqueça, depois de modificar /etc/fstab
, para fazer um sudo systemctl daemon-reload
para garantir que o systemd perceba suas alterações.
Se você quiser manter as entradas em /etc/fstab
, você pode usar para fazer o segundo ponto de montagem um link simbólico para o primeiro, por exemplo, ln -s /media/strontium /media/strontium2
. Quando a montagem é feita, o link é seguido para que termine no diretório como de costume. Você deve adicionar a opção noauto
a ambas as linhas neste caso, senão o systemd ficará confuso e desmontará imediatamente o que acha ser a primeira entrada.
Em vez de um link simbólico, você pode usar um diretório real e, em seguida, fazer um bind mount manual para montar o diretório no local desejado:
mount --bind /media/strontium2 /media/strontium
Você deve se lembrar de desmontar essa montagem de ligação, assim como a primeira montagem.
No passado, você poderia ter adicionado uma regra do udev para chamar o mount explicitamente quando o UUID aparecer, por exemplo, em /etc/udev/rules.d/92-my.rules
:
ACTION=="add", ENV{ID_FS_UUID}=="xxxx-xxxx", RUN+="/usr/bin/mount /dev/%k /media/strontium"
mas isso não funciona com os systemd's recentes, pois ele executa udevd
em um
espaço de nomes de montagem separado, por isso, embora faça a montagem, não é possível vê-lo.
Eu ainda não sei o motivo deste namespace, mas você pode, em princípio
substituir esse recurso criando um arquivo
/etc/systemd/system/systemd-udevd.service
com as 2 linhas
.include /usr/lib/systemd/system/systemd-udevd.service
MountFlags=shared
Se você quer algo que ainda é automático, uma alternativa é monitorar os eventos de udevd
sobre dispositivos de bloco e fazer uma montagem explícita. Por exemplo, execute permanentemente:
#!/bin/bash
# udevadm monitor outputs a stanza ending with a blank line
# UDEV [5291328.3] add /devices/pci0000:00/.../usb3/..../block/sdd (block)
# ACTION=add
# DEVNAME=/dev/sdd
stdbuf -o L udevadm monitor -u -p -s 'block/disk' |
awk -F= '
$0~/^ACTION=/{ action = $2 }
$0~/^DEVNAME=/{ name = $2 }
$0~/^ID_FS_UUID=/{ uuid = $2 }
$0~/^$/{ if(action=="add" && (uuid=="xxxx-xxxx"||uuid=="yyyy-yyyy")
system("sudo mount mount " name " /media/strontium -t vfat -o rw,exec")
uuid=""
}'