Quais variáveis ENV podem ser definidas nas regras do udev?

3

Recentemente, descobri a variável ENV{REMOVE_CMD} , o que elimina a necessidade de usar a correspondência ACTION=="remove" no caso de você precisar de add e remove . Eu estava tentando encontrar algumas informações sobre outras variáveis úteis que podem ser definidas nas regras do udev, mas infelizmente não consegui encontrar nada de valor.

Alguém conhece uma lista onde todas as variáveis ENV podem ser encontradas?

    
por Mikhail Morfikov 10.06.2015 / 11:13

1 resposta

3

Parece que as variáveis ENV são bastante livres e vinculadas para dispositivos . As únicas restrições impostas são que nenhuma dessas chaves pode ser usada : ACTION, SUBSYSTEM, DEVTYPE, MAJOR, MINOR, DRIVER, IFINDEX, DEVNAME, DEVLINKS, DEVPATH, TAGS.

Além disso, a interpretação das variáveis de ambiente é deixada para outras regras e programas. Use grep -rni 'ENV{' /{lib,etc}/udev/rules.d para encontrar os consumidores e fornecedores de variáveis de ambiente. Em seu caso específico REMOVE_CMD , o arquivo /lib/udev/rules.d/50-udev-default.rules é responsável por manipular esta ação:

# run a command on remove events
ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
ACTION=="remove", GOTO="default_end"

Com este comando, você pode encontrar mais variáveis de ambiente:

grep -hrPo 'ENV{\K[^}]*(?=}=[^=])' /{etc,lib}/udev/rules.d | sort -u

Como exemplo, considere o arquivo 95-upower-hid.rules . Este arquivo define a variável UPOWER_BATTERY_TYPE . Nenhuma outra regra usa esse arquivo, mas o daemon UPower se registra no udevd para adicionar / alterar / remover eventos. Então, quando ocorre um evento, o UPower consulta especificamente o dispositivo para essa variável, a fim de determinar se deve tratar como mouses comuns, UPS ou dispositivos receptores Unifying.

Outro exemplo (mais útil) é a variável de ambiente UDISKS_IGNORE , que pode ser usada para sugerir navegadores de arquivos gráficos para ocultar o dispositivo na lista de unidades. Especificamente para udisks2, você pode encontrar as variáveis em udisks (8) página de manual (localizada usando man -K UDISKS_IGNORE ).

    
por 11.06.2015 / 09:59

Tags