it is not clear which is the current 'officially' supported approach.
Oficialmente apoiado por quem? Se, e. O GNOME inclui funcionalidade de automontagem baseada em udisks, você pode ter certeza que é oficialmente suportado pelo GNOME.
I am more interested in the second (i.e. whatever USB storage device), since for the first I can just add the entries to /etc/fstab
.
Não há "maneira padrão" para fazer isso. Na melhor das hipóteses, a maioria dos sistemas existentes decidiu adicionar automação em cima de udisks2
. Por si próprio, o udisks não monta de forma alguma nada - mas é o "backend" usado por muitos ambientes de desktop gráficos (pelo menos o GNOME e o Xfce o usam; tenho apenas 80% de certeza sobre KDE e Enlightenment).
(Então sua opção 3 seria "udisks2 + automount by udiskie", e a opção 4 seria "udisks2 + automount pelo ambiente de desktop".)
Em relação às regras do udev: seja sobre montar sistemas de arquivos ou iniciar serviços, a resposta curta é "não faça" (por várias razões); mas a resposta longa é: "não faça isso diretamente, mas você pode pedir ao init para fazê-lo". Portanto, não seria horrível executar systemd-mount
a partir de uma regra do udev, que passaria o pedido de montagem para o init da mesma forma que uma unidade .mount ...
No entanto, espere que isso acione um bug / wart / má-funcionalidade do systemd: como o udev relata que o dispositivo está pronto somente após processar as regras, você pode acabar com o init automaticamente desmontando o disco porque acha que o dispositivo ainda não está lá.
Em vez disso, o udevil funcionaria melhor, já que ele não executa nada por meio de regras, mas reage apenas a eventos "dispositivo pronto" emitidos pelo udev.
As entradas do fstab são orientadas para dispositivos estáticos. No entanto, eles podem ser maltratados por varas USB variadas usando /dev/disk/by-path/...
, que corresponde ao caminho físico de um dispositivo (por exemplo, slot PCI 3, porta USB 1, partição 1 ...). Dessa forma, você pode escrever entrada fstab que corresponde a qualquer disco conectado à mesma porta USB.
O automounter autofs kernel é, da mesma forma que os udisks, apenas o backend no qual várias automontes podem ser implementadas pelo userspace. Uma vez montada uma autofs, todas as tentativas para acessá-lo são relatados para o daemon correspondente. As implementações mais comuns são o autofs
tradicional (baseado em mapas) e, recentemente, systemd
com as unidades .automount.
Assim, a lógica do dispositivo USB "dinâmico" ainda teria que ser implementada no espaço do usuário, e de qualquer maneira é mais trabalho do que apenas usar os udisks.
-
Com o systemd simples, sua única opção é construir sobre o hack "by-path" fstab acima. Depois de escrever uma entrada fstab para a porta USB desejada, você pode marcá-la com x-systemd.automount,x-systemd.idle-timeout=300
para usar o montador automático autofs. (Ou, claro, crie unidades independentes .mount + .automount para o mesmo resultado.)
Se você quiser gerar dinamicamente montagens automáticas para todos os discos USB em todas as portas, o systemd não poderá fazer isso sem scripts de terceiros.
-
Eu não sei se autofsd
pode fazer o que você quer, mas lembro que ele suporta alguns tipos de mapas dinâmicos (para diretórios de usuário). Talvez o uso do program
map-type (e de um script que enumera todos os discos conectados) funcione.