Como montar o drive USB na regra do udev?

1

Eu configurei uma regra no udev para executar um script em segundo plano para montar automaticamente a unidade USB. Ele conseguiu executar o script bem, mas a montagem está falhando por algum motivo.

REGRA:

ACTION=="add", KERNEL=="sd[a-z]*", RUN+="/etc/mntUsbChk.sh &"

Neste script:

#!/bin/sh

sleep 2

mkdir /mnt/usb

foundUsb=false

if [ -e /dev/sda1 ]; then
 mount /dev/sda1 /mnt/usb
 $foundUsb=true
fi

if [ -e /dev/sdb1 ]; then
  mount /dev/sdb1 /mnt/usb
  $foundUsb=true
fi

if [ -e /dev/sdc1 ]; then
  mount /dev/sdc1 /mnt/usb
  $foundUsb=true
fi

if [ $foundUsb -eq false ]; then
 exit
fi

echo "USB MOUNTED"

[ 1610.868626] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

EDIT: Mais detalhes: O script estava sendo executado com certeza porque a pasta /mnt/usb foi criada depois que eu conectei o USB.

E também, se eu digitar manualmente mount /dev/sda1 /mnt/usb depois de conectar o USB antes de ativar a regra, ele poderá montá-lo bem. Eu simplesmente não entendi porque não pode montar nas regras udev.

    
por GeneCode 10.08.2018 / 02:59

2 respostas

2

Este script falhará se /mnt/usb já existir. Não tenho certeza se essa é a origem do problema, mas é com certeza um erro do script.

mount /mnt/usb

Use em vez disso:

mount -p /mnt/usb

Em man mount :

-p, --parents

no error if existing, make parent directories as needed

    
por 14.08.2018 / 12:35
1

Você não tem garantia de que a unidade USB será sda1, sdb1, sdc1 em add. Eu acho que alguma lógica melhor pode ser necessária lá, mas completamente não relacionada à questão.

Para a pergunta, veja o link existente abaixo: Por que o Linux marca o FAT como 'sujo' simplesmente por montá-lo?

Meu entendimento é apenas puxar um usb de uma máquina Windows sem ejetar não limpar o bit sujo na unidade. O Linux assume o pior quando o bit sujo é definido. Estou supondo que aqui você pode executar automaticamente fsck para limpar o bit sujo nesta mensagem de erro, se presente, em seguida, continue a montar novamente. Embora eu não tenha certeza se uma chamada para desmontar ou fsck limparia a parte suja.

Espero que isso siga na direção certa.

    
por 13.08.2018 / 07:34