O Udev gerencia os dispositivos por meio de regras que determinam o que fazer quando um dispositivo é inserido (ou removido). O próprio Udev não suporta a montagem, mas você pode fazê-lo invocar um programa externo para fazer a montagem.
Existem regras, armazenadas nos vários arquivos em /etc/udev/rules.d/
, que criam entradas em /dev/disk/by-label/
. Podemos usar as mesmas condições de correspondência para corresponde a um dispositivo USB que possui um rótulo de sistema de arquivos e executa um script personalizado.
ENV{ID_FS_LABEL_ENC}=="?*", ENV{ID_FS_USAGE}=="filesystem|other", \
SUBSYSTEMS=="usb", \
RUN += "/usr/local/sbin/udev-mount-by-label '%E{ID_FS_LABEL_ENC}'"
O script personalizado deve criar o ponto de montagem e realizar a montagem. Deve tomar um pouco de cuidado caso o diretório já exista. O script que escrevi não fará nada se o ponto de montagem já estiver em uso como um ponto de montagem, mas ficará feliz em sombrear um diretório não vazio. Personalize ao seu gosto.
#!/bin/sh
export mount_point="/media/$1"
current_device=$(awk '$2 == ENVIRON["mount_point"] {print $1; exit}' </proc/mounts)
if [ -n "$current_device" ]; then
echo 1>&2 "$current_device already mounted on $mount_point"
exit 1
fi
mount "/dev/disk/by-label/$1" "$mount_point"
Não se esqueça de desmontar o dispositivo antes de desligá-lo, caso contrário, você poderá perder dados.
Ubuntu - Montar automaticamente unidades externas para / media / LABEL na inicialização sem um usuário logado? mostra a mesma técnica com um script diferente.