A regra do Udev para montar o disco não funciona


9

Eu tenho o seguinte conteúdo em /etc/udev/rules.d/81-external-disk.rules:

ENV{ID_FS_UUID}=="6826692e-79f4-4423-8467-cef4d5e840c5", RUN{program}+="/bin/mount -o nofail,x-systemd.device-timeout=1 -t ext4 -U 6826692e-79f4-4423-8467-cef4d5e840c5 /backup/external"

Depois de correr:

udevadm control --reload ; udevadm trigger /dev/sdb1

Não faz nada. No entanto, se eu alterar o comando mount para algo como / bin / touch / tmp / xyz, ele funcionará.

Versões:

[root@helsinki rules.d]# rpm -qa | grep udev
libgudev1-219-19.el7_2.12.x86_64
python-pyudev-0.15-7.el7_2.1.noarch
[root@helsinki rules.d]# rpm -qa | grep systemd
systemd-libs-219-19.el7_2.12.x86_64
systemd-219-19.el7_2.12.x86_64
systemd-sysv-219-19.el7_2.12.x86_64
[root@helsinki rules.d]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

Respostas:


18

Este é um recurso do systemd. O udevcomando original foi substituído por systemd-udevd(consulte sua página de manual). Uma das diferenças é que ele cria seu próprio espaço para nome do sistema de arquivos, para que sua montagem seja concluída, mas não é visível no espaço para nome principal. (Você pode verificar isso fazendo systemctl status systemd-udevdo PID principal do serviço e procurando o conteúdo do /proc/<pid>/mountinfoseu sistema de arquivos).

Se você deseja voltar a ter um espaço para nome de sistema de arquivos compartilhado em vez de privado, crie um arquivo /etc/systemd/system/systemd-udevd.servicecom o conteúdo

.include /usr/lib/systemd/system/systemd-udevd.service
[Service]
MountFlags=shared 

ou um novo diretório e arquivo /etc/systemd/system/systemd-udevd.service.d/myoverride.confcom apenas as duas últimas linhas, ou seja,

[Service]
MountFlags=shared

e reinicie o serviço systemd-udevd. Eu não encontrei as implicações de fazer isso.


Sim, eu apliquei uma solução alternativa, gostaria de saber se também tem implicações de segurança.
sebelk

1
Tenho certeza de que isso não funcionou até eu adicionar [Service]entre essas duas linhas.
Goldilocks

1
@goldilocks Você provavelmente está certo. Eu adicionei isso à resposta, obrigado. Pode depender do que a última seção estava no arquivo incluído, mas parece que o systemd agora prefere que você use a *.d/*.confmaneira de fazer alterações, pois .includenão parece estar documentado.
Meu16 /

12

Esse mesmo problema ocorre no Ubuntu 18.04 com a mesma causa subjacente. Para corrigi-lo, criamos um arquivo de substituição para systemd-udevd:

sudo systemctl edit systemd-udevd

E insira nele:

[Service]
MountFlags=shared

Salve o arquivo e execute:

sudo systemctl daemon-reload
sudo service systemd-udevd --full-restart

Funcionou como um encanto em Raspberry (Raspbian 9 "stretch"). Obrigado!
Maxwel Leite 24/10

2
Não funcionou no meu Ubuntu 18.04 para resolver o problema da falta de montagem automática na unidade USB.
Yu Shen

Trabalhou no Ubuntu 18.04. @YuShen, convém verificar suas regras do udev.
Greg Bell
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.