regra UDEV quando a unidade flash USB está desconectada

4

Eu escrevi uma regra para montar automaticamente meu stick USB em determinada pasta mas quando eu desconectar a pasta ainda montada e quando eu ls lá Eu vejo muitos erros como: Directory bread (block: NNNN) failed

Eu tentei usar

SUBSYSTEM=="block", ACTION=="remove", RUN+="/bin/umount /media/disk"

não está funcionando.

Minha regra de montagem parece

SUBSYSTEM=="block", ACTION=="add", RUN+="/bin/mount -t vfat <options> /dev/%k /media/disk"
    
por bakytn 19.01.2012 / 18:46

4 respostas

3

Eu vi esse método defeituoso em torno das webs e é muito genérico em escopo, como mencionado anteriormente. Também não é dinâmico o suficiente, e se vários dispositivos USB estivessem conectados? Esse problema é comum e as soluções estão por aí. Você não mencionou sua distro, então não posso dizer quais scripts estão disponíveis em pacote. Eu vou mencioná-los de qualquer maneira, como eles vão mostrar um método melhor, você pode sempre emprestar as seções aplicáveis.

Primeiramente, você deve considerar olhar para udisks , se você usa um DE completo, você pode precisar apenas dele. Apenas para um WM ... Um grande projeto que substitui o HAL obsoleto e usa udisks é chamado de udisks-glue .

Se você ainda decidir ir sem udisks , dê uma olhada em udev scripts chamados uam . O Gentoo tem um ebuild, caso contrário, verifique o código-fonte em GitHub Bitbucket .

Vale a pena mencionar que o Arch também possui vários exemplos de udev automount USB em seus Wiki

Qualquer uma dessas opções seria uma maneira leve de fazer isso e está concluída na implementação, específica no escopo e testada para efeitos colaterais.

    
por 20.01.2012 / 02:40
3

Existem dois problemas aqui.

A primeira é que ambas as regras do udev não são precisas o suficiente. Sim, eles podem iniciar ações ao conectar / desconectar uma unidade flash USB, mas também podem ser acionados quando seus discos rígidos são reconhecidos na inicialização.

O segundo problema pode ser mais grave em conseqüências: você deve sempre desmontar suas unidades antes de desconectá-las . Caso contrário, tanto a unidade como o seu sistema podem sofrer. Eu pessoalmente vi pessoas destruindo seus pen drives dessa maneira.

    
por 19.01.2012 / 20:59
1

Você está procurando a ação "precog" .

Como o rozcietrzewiacz disse, é uma má ideia retirar o drive enquanto ele ainda está montado. Por definição, o sistema não sabe que a unidade foi removida até que já tenha sido removida. Portanto, não é possível desmontar automaticamente as pastas antes de desconectá-las. Ergo, você precisa dizer ao sistema que você está planejando retirar a unidade desmontando-a de alguma maneira (manualmente ou alguma opção de remoção segura).

    
por 19.01.2012 / 21:43
0

Esta é uma área na qual o kernel do Linux ainda está quebrado. Ele não tem a capacidade de desmontar um sistema de arquivos se estiver em uso. Se algum processo em algum lugar ainda tiver um arquivo aberto nesse disco, ele não poderá ser desmontado.

    
por 19.01.2012 / 21:52

Tags