Quero montar a unidade USB com /media
base no UUID do disco. Como posso usar o UUID de uma unidade USB em um arquivo de regras do udev e o que é uma regra do udev para montar a unidade USB com o número UUID como o nome da pasta.
O blkid
comando gera o UUID de um disco, mas apenas na montagem.
Respostas:
Mesmo que os UUIDs não sejam acessíveis diretamente pelo udev, pelo menos no Fedora e Ubuntu eles são definidos como variáveis de ambiente (
ENV
). Você pode ler todas as variáveis de ambiente de um dispositivo chamandoudevadm info /dev/sdc
. Por exemplo, para um NTFS em uma unidade externa, recebo:Tudo com um
E:
na frente é definido como uma variável de ambiente.Correspondência contra UUIDs
Você pode combinar com ele
ENV{ID_FS_UUID}=="4A6F2ABC1232FA37"
. Como primeiro filtro, comparo-meKERNEL=="sd?2"
para garantir que apenas manipule dispositivos de bloco com o número de partição correto. A regra completa ficaria assim:O comando logger é útil para afirmar que a regra é realmente executada. Em seguida, verifique se a regra não contém nenhum erro de sintaxe
udevadm test /dev/sdc2
. Seu arquivo de regras deve estar listado na saída e nenhuma mensagem de erro deve aparecer ao lado. Agora você pode acionar todas as regras para o seu dispositivo para verificar se a sua regra funciona como o planejado:sudo udevadm trigger /dev/sdc2
. Se sua regra corresponder, você encontrará a mensagem de log personalizada no log do sistema (/var/log/syslog
ou viajournalctl -b
).Edit: ali_m indicou que as variáveis de ambiente são definidas pelas regras anteriores e, portanto, apenas acessíveis se o seu
.rules
arquivo tiver uma ordem lexicográfica suficientemente alta . Começar com "60" deve ser suficiente. Pessoalmente, inicio minhas regras com "zz" (se possível) para distingui-las das regras predefinidas rapidamente.Usando UUIDs no
RUN
comando e em outros lugaresO Udev tem uma sintaxe de substituição de variável e atributo bastante poderosa . Especificamente, toda ocorrência de
$env{ID_FS_UUID}
será substituída pelo UUID da unidade. Portanto, para montar um dispositivo,/media/
UUID
você pode usar esta regra:Você provavelmente deseja configurar udisks, no entanto, ele é especializado no espaço do problema que você deseja resolver. Veja https://wiki.archlinux.org/index.php/udisks#udisks2:_mount_to_.2Fmedia como ponto de partida.
Meu caso de uso real para montar dispositivos com udev em vez de
/etc/fstab
ou com udisks é montar sistemas de arquivos zfs que possuem algumas idiossincrasias, tornando-os inadequados para as ferramentas usuais.fonte
.rules
nome do arquivo precisa começar com um número> 60 .Há uma solução difícil que vem à minha mente. Defina a entrada fstab com resposta correspondente identificada por UUID. E nas regras do udev, execute
mount -a
sempre que houver um novo dispositivo sd * adicionado.fonte