Aqui está uma regra simples que criei em /etc/udev/rules.d/21-persistent-local.rules
para minha unidade de expansão Seagate 500 GB que usa uma interface USB em uma máquina Debian em execução dentro de uma VM.
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTRS{ID_SERIAL_SHORT}=="NA453QQS", SUBSYSTEM=="usb", HOTPLUG == 1, \
RUN+="/usr/local/bin/run.sh"
Depois de salvar isso, eu corro eu corro udevadm trigger
. Por fim, conecto minha unidade e execute udevadm monitor --env
para verificar se a unidade de expansão está carregada corretamente, o que é realmente o caso.
Agora defino a regra de que, na ação add
, run.sh
deve ser executado. run.sh
não tem nada, exceto dois sudo insmod foo.ko
e sudo rmmod foo.ko
. Mas o script não funciona. Concretamente, nada é impresso em dmesg
no script run.sh
. O módulo que eu carrego no kernel imprime mensagens que devem estar visíveis ao sair e entrar no kernel.
Qual pode ser a possível razão para este problema?
P.S .: No arquivo de regras acima, usei ambos contra o ATTRS{...}
ID_SERIAL=Seagate_Expansion_NA453QQS
ID_SERIAL_SHORT=NA453QQS