udev não aplica mudanças recursivamente

0

Estou trabalhando com um quadro negro de beaglebone ( ubuntu release para arquitetura ARM), que possui algumas entradas / saídas de propósito geral ( GPIO ) interface para leitura de sensores / motores de acionamento, etc., que podem ser configurados através da 'exportação' do pino desejado usando o seguinte comando:

bbb@arm:/sys/class/gpio$echo 30 > export

aqui a pasta padrão e seu conteúdo:

bbb@arm:~$ ls -l /sys/class/gpio/
total 0
-rwxrwxrwx 1 bbb users 4096 Jan  6 12:13 export
lrwxrwxrwx 1 bbb users    0 Jan  6 12:13 gpiochip0 -> ../../devices/platform/ocp/44e07000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 bbb users    0 Jan  6 12:13 gpiochip32 -> ../../devices/platform/ocp/4804c000.gpio/gpio/gpiochip32
lrwxrwxrwx 1 bbb users    0 Jan  6 12:13 gpiochip64 -> ../../devices/platform/ocp/481ac000.gpio/gpio/gpiochip64
lrwxrwxrwx 1 bbb users    0 Jan  6 12:13 gpiochip96 -> ../../devices/platform/ocp/481ae000.gpio/gpio/gpiochip96
-rwxrwxrwx 1 bbb users 4096 Jan  6 12:13 unexport

Como quero usar esses pinos como um usuário normal, tentei configurar algumas regras para alterar o grupo proprietário e do usuário por meio da seguinte regra:

bbb@arm:~$ cat /etc/udev/rules.d/99-gpio.rules 
KERNEL=="gpio*", SUBSYSTEM=="gpio", PROGRAM="/bin/sh -c 'chown -R bbb:users /sys/class/gpio; chmod -R 777 /sys/class/gpio'"
KERNEL=="gpio*", SUBSYSTEM=="gpio", PROGRAM="/bin/sh -c 'chown -R bbb:users /sys/class/virtual/gpio; chmod -R 777 /sys/class/virtual/gpio'"

Funciona muito bem e a regra é carregada durante a inicialização. MAS se eu exportar um pin, que eu quero usar:

bbb@arm:/sys/class/gpio$ echo 30 > export
bbb@arm:/sys/class/gpio$ cd gpio30
bbb@arm:/sys/class/gpio/gpio30$ ls -l
total 0
-rw-r--r-- 1 root root 4096 Jan  7 16:16 active_low
lrwxrwxrwx 1 root root    0 Jan  7 16:16 device -> ../../../44e07000.gpio
-rw-r--r-- 1 root root 4096 Jan  7 16:16 direction
-rw-r--r-- 1 root root 4096 Jan  7 16:16 edge
drwxr-xr-x 2 root root    0 Jan  7 16:16 power
lrwxrwxrwx 1 root root    0 Jan  7 16:16 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Jan  7 16:15 uevent
-rw-r--r-- 1 root root 4096 Jan  7 16:16 value

Eu tenho o problema de que todos os subdiretórios e pastas ainda têm raiz como um proprietário e como um grupo. Então não consigo configurar o single pin (gpio) usando minha conta de usuário.

Como devo modificar minhas regras para obter tudo que a nova pasta exportada sob o nome do meu usuário (bbb) e grupo (usuários) ?????

    
por Dave 07.01.2016 / 16:19

1 resposta

1

OK, eu retiro tudo o que eu disse depois de testar no meu Pi. Adicione uma regra adicional ao seu arquivo atual:
KERNEL=="gpio*",SUBSYSTEM=="gpio",ACTION=="add",PROGRAM="/bin/sh -c 'chown -R bbb:users /sys%p;chmod -R 770 /sys%p'"

Agora teste com: echo 30 > export

Se você fizer um ls -l /sys/class/gpio30 , parece que ele ainda é de propriedade do root, mas se você perceber que é um link para / sys / devices / virtual / gpio / gpio30.

ls -la /sys/devices/virtual/gpio/gpio30
e você verá que seu script foi executado com sucesso.

Isso pode ajudar: link

    
por 07.01.2016 / 17:31

Tags