Regra do Udev para criar o nó para o dispositivo de caracteres ao carregar o módulo

1

Eu segui os tutoriais para fazer isso acontecer, mas falhei. Meu sistema é o Ubuntu 14.04 com o kernel 3.18.0-031800-generic . Eu procurei por chaves de regra do udev usando udevadm monitor --env . Sua saída gerada por rmmod module_name foi

KERNEL[202.017039] remove /module/module_name (module)
ACTION=remove
DEVPATH=/module/module_name
SEQNUM=2052
SUBSYSTEM=module

UDEV [202.018837] remove /module/module_name (module)
ACTION=remove
DEVPATH=/module/module_name
SEQNUM=2052
SUBSYSTEM=module
USEC_INITIALIZED=17116

Então criei scripts (e marquei-os como executáveis para todos) para criar e remover o nó:

$ cat /usr/share/another_folder/make_node.sh
#!/bin/sh
mknod /dev/device_name c 89 1

$ cat /usr/share/another_folder/rm_node.sh
#!/bin/sh
rm /dev/device_name

E a regra do udev que os usa:

$ cat /etc/udev/rules.d/89-the-name.rules
SUBSYSTEM=="module", DEVPATH=="/module/module_name", ACTION=="add", RUN+="/usr/share/another_folder/make_node.sh"

SUBSYSTEM=="module", DEVPATH=="/module/module_name", ACTION=="remove", RUN+="/usr/share/another_folder/rm_node.sh"

... mas não funciona quando eu o vejo (mesmo depois de reiniciar o sistema udev ou de reinicialização). dmesg não mostra nada sobre o caso:

$ dmesg |grep udev
[    0.928948] systemd-udevd[121]: starting version 204    
[    5.155707] systemd-udevd[316]: starting version 204

O que estou perdendo?

    
por tubus 23.07.2015 / 09:23

1 resposta

0

Para ver o que acontece, você pode executar

sudo udevadm monitor

em um terminal e, em seguida, acionar o evento desejado com

sudo udevadm trigger --action=add --subsystem-match=module

O monitor mostrará os eventos vistos pelo udev.

Seu problema é provavelmente que em seus scripts mknod e rm não foram encontrados, pois nenhum PATH foi definido pelo udev. Use nomes de caminhos absolutos ou defina um PATH no início dos scripts.

    
por meuh 26.07.2015 / 16:50