29 Gerenciamento dinâmico de dispositivos do kernel com udev
#
O kernel pode adicionar ou remover praticamente qualquer dispositivo em um sistema em execução. Mudanças no estado do dispositivo (se um dispositivo foi conectado ou removido) precisam ser propagadas ao espaço do usuário. Os dispositivos precisam ser configurados no momento em que são conectados e reconhecidos. Os usuários de um determinado dispositivo precisam ser informados sobre qualquer mudança no estado reconhecido desse dispositivo. O udev
fornece a infraestrutura necessária para manter dinamicamente os arquivos dos nós de dispositivo e os links simbólicos no diretório /dev
. As regras do udev
fornecem uma maneira de conectar ferramentas externas ao processamento de evento do dispositivo de kernel. Dessa forma, você pode personalizar o gerenciamento de dispositivos do udev
, adicionando determinados scripts para execução como parte do gerenciamento de dispositivos do kernel, ou solicitar e importar dados adicionais para avaliar durante o gerenciamento de dispositivos.
29.1 O diretório /dev
#
Os nós de dispositivos no diretório /dev
concedem acesso aos dispositivos de kernel correspondentes. Com udev
, o diretório /dev
reflete o estado atual do kernel. Cada dispositivo de kernel tem um arquivo de dispositivo correspondente. Se um dispositivo for desconectado do sistema, o nó de dispositivo será removido.
O conteúdo do diretório /dev
será mantido em um sistema de arquivos temporário, e todos os arquivos serão renderizados a cada inicialização do sistema. Arquivos criados ou modificados manualmente por definição não resistem a uma reinicialização. Os diretórios e arquivos estáticos que sempre devem estar no diretório /dev
, independentemente do estado do dispositivo de kernel correspondente, podem ser criados com systemd-tmpfiles. Os arquivos de configuração estão em /usr/lib/tmpfiles.d/
e em /etc/tmpfiles.d/
. Para obter mais informações, consulte a página de manual do systemd-tmpfiles(8)
.
29.2 Kernel uevents
e udev
#
As informações de dispositivo necessárias são exportadas pelo sistema de arquivos sysfs
Para cada dispositivo detectado e inicializado pelo kernel, um diretório com o nome do dispositivo é criado. Ele contém arquivos de atributos com propriedades específicas do dispositivo.
Sempre que um dispositivo é adicionado ou removido, o kernel envia um uevent para notificar o udev
sobre a mudança. O daemon udev
lê e analisa todas as regras dos arquivos /usr/lib/udev/rules.d/*.rules
e /etc/udev/rules.d/*.rules
na inicialização e as mantém na memória. Se os arquivos de regras forem mudados, adicionados ou removidos, o daemon poderá recarregar sua representação na memória com o comando udevadm control --reload
. Para obter mais detalhes sobre as regras do udev
e sua sintaxe, consulte a Seção 29.6, “Influenciando o gerenciamento de eventos de dispositivo do kernel com as regras do udev
”.
Cada evento recebido é comparado com o conjunto de regras fornecido. As regras podem adicionar ou modificar chaves de ambiente de eventos, solicitar um nome específico a ser criado pelo nó do dispositivo, adicionar links simbólicos apontando para o nó ou adicionar programas a serem executados após a criação do nó do dispositivo. Os uevents
de núcleo do driver são recebidos de um soquete netlink do kernel.
29.3 Drivers, módulos do kernel e dispositivos #
Os drivers de barramento de kernel pesquisam dispositivos. Para cada dispositivo detectado, o kernel cria uma estrutura de dispositivo interna enquanto o núcleo do driver envia um uevent ao daemon udev
. Dispositivos de barramento se identificam por meio de um ID formatado especialmente, que especifica o tipo de dispositivo. Esses IDs consistem nos identificadores de produto e de fornecedor, além de outros valores específicos do subsistema. Cada barramento tem seu próprio esquema para esses IDs, chamados MODALIAS
. O kernel toma as informações do dispositivo, compõe uma string de ID MODALIAS
a partir dele e envia essa string junto com o evento. Para um mouse USB, a string tem a seguinte aparência:
MODALIAS=usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02
Cada driver de dispositivo carrega uma lista de álias conhecidos para os dispositivos que pode tratar. A lista está contida no próprio arquivo de módulo de kernel. O programa depmod lê as listas de IDs e cria o arquivo modules.alias
no diretório /lib/modules
do kernel para todos os módulos disponíveis atualmente. Com essa infraestrutura, carregar o módulo é fácil como chamar modprobe
para cada evento com uma chave MODALIAS
. Se modprobe $MODALIAS
for chamado, ele corresponderá o álias do dispositivo composto para o dispositivo com os álias fornecidos pelos módulos. Se uma entrada correspondente for encontrada, o módulo será carregado. Tudo isso é acionado automaticamente pelo udev
.
29.4 Inicialização e configuração do dispositivo inicial #
Todos os eventos de dispositivo que ocorrem durante o processo de boot antes da execução do daemon udev
são perdidos, pois a infraestrutura para gerenciar esses eventos reside no sistema de arquivos raiz e não está disponível naquele momento. Para cobrir essa perda, o kernel fornece um arquivo uevent
localizado no diretório de dispositivo de cada dispositivo no sistema de arquivos sysfs
. Ao gravar add
para esse arquivo, o kernel envia novamente o mesmo evento como o evento perdido durante a inicialização. Um loop simples em todos os arquivos uevent
em /sys
aciona todos os eventos novamente para criar os nós e executar a configuração do dispositivo.
Por exemplo, durante o boot, um mouse USB talvez não seja inicializado pela lógica de boot anterior, pois o driver não está disponível nesse momento. O evento para a descoberta do dispositivo foi perdido e não encontrou um módulo de kernel para o dispositivo. Em vez de pesquisar manualmente os dispositivos conectados, o udev
solicita todos os eventos de dispositivo do kernel após a disponibilização do sistema de arquivos raiz. Dessa forma, o evento para o dispositivo de mouse USB é executado novamente. Então ele encontra o módulo de kernel no sistema de arquivos raiz montado e o mouse USB pode ser inicializado.
No espaço do usuário, não há diferença visível entre a sequência coldplug do dispositivo e a descoberta de dispositivo durante o tempo de execução. Em ambos os casos, as mesmas regras são usadas para correspondência e os mesmos programas configurados são executados.
29.5 Monitorando o daemon udev
em execução #
O programa udevadm monitor
pode ser usado para visualizar os eventos centrais do driver e a temporização dos processos de eventos do udev
.
UEVENT[1185238505.276660] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1 (usb) UDEV [1185238505.279198] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1 (usb) UEVENT[1185238505.279527] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0 (usb) UDEV [1185238505.285573] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0 (usb) UEVENT[1185238505.298878] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input10 (input) UDEV [1185238505.305026] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input10 (input) UEVENT[1185238505.305442] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input10/mouse2 (input) UEVENT[1185238505.306440] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input10/event4 (input) UDEV [1185238505.325384] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input10/event4 (input) UDEV [1185238505.342257] add /devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input10/mouse2 (input)
As linhas UEVENT
mostram os eventos que o kernel enviou através de netlink. As linhas UDEV
mostram os handlers de evento do udev
concluídos. A temporização é impressa em microssegundos. O tempo entre UEVENT
e UDEV
é o tempo que o udev
levou para processar esse evento ou que o daemon udev
atrasou sua execução para sincronizar esse evento com eventos relacionados e já em execução. Por exemplo, eventos para partições de disco rígido sempre esperam pela conclusão do evento do dispositivo de disco principal, pois os eventos de partição podem se basear nos dados que o evento de disco principal consultou do hardware.
udevadm monitor --env
mostra o ambiente de evento completo:
ACTION=add DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb3/3-1/3-1:1.0/input/input10 SUBSYSTEM=input SEQNUM=1181 NAME="Logitech USB-PS/2 Optical Mouse" PHYS="usb-0000:00:1d.2-1/input0" UNIQ="" EV=7 KEY=70000 0 0 0 0 REL=103 MODALIAS=input:b0003v046DpC03Ee0110-e0,1,2,k110,111,112,r0,1,8,amlsfw
O udev
também envia mensagens para o syslog. A prioridade do syslog padrão que controla as mensagens que são enviadas ao syslog está especificada no arquivo de configuração /etc/udev/udev.conf
do udev
. A prioridade de registro do daemon em execução pode ser modificada com udevadm control
--log_priority=
LEVEL/NUMBER.
29.6 Influenciando o gerenciamento de eventos de dispositivo do kernel com as regras do udev
#
Uma regra do udev
pode corresponder a qualquer propriedade que o kernel adiciona ao evento propriamente dito ou a qualquer informação que o kernel exporta para sysfs
. A regra também pode solicitar informações adicionais de programas externos. Os eventos são comparados com todas as regras incluídas nos diretórios /usr/lib/udev/rules.d/
(para regras padrão) e /etc/udev/rules.d
(configuração específica do sistema).
Cada linha no arquivo de regras contém pelo menos um par de valores de chave. Há dois tipos de chaves, de atribuição e correspondência. Se todas as chaves de correspondência corresponderem aos valores, a regra será aplicada e as chaves de atribuição serão atribuídas ao valor especificado. Uma regra correspondente pode especificar o nome do nó do dispositivo, adicionar links simbólicos apontando para o nó ou executar um programa especificado como parte do gerenciamento de eventos. Se nenhuma regra de correspondência for encontrada, o nome do nó de dispositivo padrão será usado para criar o nó de dispositivo. As informações detalhadas sobre a sintaxe da regra e as chaves fornecidas para corresponder ou importar os dados estão descritas na página de manual do udev
. As regras de exemplo a seguir apresentam uma introdução básica à sintaxe da regra do udev
. As regras de exemplo são todas extraídas do conjunto de regras padrão /usr/lib/udev/rules.d/50-udev-default.rules
do udev
.
udev
de exemplo ## console KERNEL=="console", MODE="0600", OPTIONS="last_rule" # serial devices KERNEL=="ttyUSB*", ATTRS{product}=="[Pp]alm*Handheld*", SYMLINK+="pilot" # printer SUBSYSTEM=="usb", KERNEL=="lp*", NAME="usb/%k", SYMLINK+="usb%k", GROUP="lp" # kernel firmware loader SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware.sh"
A regra do console
consiste em três chaves: uma chave de correspondência (KERNEL
) e duas chaves de atribuição (MODE
, OPTIONS
). A regra de correspondência KERNEL
pesquisa qualquer item do tipo console
na lista de dispositivos. Apenas correspondências exatas são válidas e acionam essa regra para que seja executada. A chave MODE
atribui permissões especiais ao nó de dispositivo, neste caso, permissões de leitura e gravação apenas ao proprietário desse dispositivo. A chave OPTIONS
torna esta a última regra a ser aplicada a qualquer dispositivo desse tipo. Qualquer regra posterior que corresponda a esse tipo de dispositivo em particular não terá nenhum efeito.
A regra dos serial devices
não está mais disponível em 50-udev-default.rules
, mas ainda vale a pena ser considerada. Consiste em duas chaves de correspondência (KERNEL
e ATTRS
) e uma de atribuição (SYMLINK
). A chave KERNEL
procura todos os dispositivos do tipo ttyUSB
. Usando o curinga *
, essa chave corresponde a diversos desses dispositivos. A segunda chave de correspondência, ATTRS
, verifica se o arquivo de atributo do product
em sysfs
para qualquer dispositivo ttyUSB
contém uma determinada string. A chave de atribuição (SYMLINK
) aciona a adição de um link simbólico para esse dispositivo em /dev/pilot
. O operador usado nessa chave (+=
) instrui o udev
a executar essa ação adicionalmente, mesmo se regras anteriores ou posteriores adicionarem outros links simbólicos. Como essa regra contém duas chaves de correspondência, ela é aplicada apenas se ambas as condições são cumpridas.
A regra da printer
lida com impressoras USB e contém duas chaves de correspondência que devem ser aplicadas para que a regra inteira seja aplicada (SUBSYSTEM
e KERNEL
). Três chaves de atribuição lidam com a nomeação desse tipo de dispositivo (NAME
), a criação dos links de dispositivo simbólicos (SYMLINK
) e a participação no grupo desse tipo de dispositivo (GROUP
). O uso do curinga *
na chave KERNEL
faz com que ela corresponda a diversos dispositivos de impressora lp
. Substituições são usadas pelo nome do dispositivo interno tanto na chave NAME
quanto na SYMLINK
para estender essas strings. Por exemplo, o link simbólico para a primeira impressora USB lp
seria /dev/usblp0
.
A regra do kernel firmware loader
faz com que o udev
carregue um firmware adicional por um script de assistente externo durante o tempo de execução. A chave de correspondência SUBSYSTEM
procura o subsistema de firmware
A chave ACTION
verifica se algum dispositivo pertencente ao subsistema de firmware
foi adicionado. A chave RUN+=
aciona a execução do script firmware.sh
para localizar o firmware a ser carregado.
Algumas características são comuns a todas as regras:
Cada regra é composta por um ou mais pares de valores de chaves separados por vírgula.
A operação de uma chave é determinada pelo operador. As regras do
udev
suportam diversos operadores.Cada valor dado deve estar entre aspas.
Cada linha do arquivo de regras representa uma regra. Se a regra for maior do que uma linha, use
\
para unir as linhas diferentes como se faz na sintaxe do shell.As regras do
udev
suportam um padrão no estilo do shell que corresponde aos padrões*
,?
e[]
.As regras do
udev
suportam substituições.
29.6.1 Usando operadores nas regras do udev
#
Ao criar chaves, você pode escolher dentre vários operadores, dependendo do tipo de chave que deseja criar. Normalmente, as chaves de correspondência são usadas para localizar um valor que corresponda ou explicitamente não corresponda ao valor da pesquisa. As chaves de correspondência contêm um dos seguintes operadores:
==
Comparar para igualdade. Se a chave contém um padrão de pesquisa, todos os resultados correspondentes a esse padrão são válidos.
!=
Comparar para não igualdade. Se a chave contém um padrão de pesquisa, todos os resultados correspondentes a esse padrão são válidos.
Qualquer um dos operadores a seguir também pode ser usado com chaves de atribuição:
=
Atribuir um valor a uma chave. Se a chave consistia anteriormente em uma lista de valores, ela é redefinida e apenas o valor único é atribuído.
+=
Adicionar um valor a uma chave que contenha uma lista de entradas.
:=
Atribuir um valor final. Não permitir nenhuma mudança posterior por regras posteriores.
29.6.2 Usando substituições nas regras do udev
#
As regras do udev
suportam o uso de marcadores e substituições. Use-as como faria em qualquer outro script. É possível usar as seguintes substituições com as regras do udev
:
%r
,$root
O diretório do dispositivo,
/dev
por padrão.%p
,$devpath
O valor de
DEVPATH
.%k
,$kernel
O valor de
KERNEL
ou o nome do dispositivo interno.%n
,$number
O nome do dispositivo.
%N
,$tempnode
O nome temporário do arquivo de dispositivo.
%M
,$major
O número maior do dispositivo.
%m
,$minor
O número menor do dispositivo.
%s{ATTRIBUTE}
,$attr{ATTRIBUTE}
O valor de um atributo
sysfs
(especificado por ATTRIBUTE).%E{VARIABLE}
,$env{VARIABLE}
O valor de uma variável do ambiente (especificado por VARIABLE).
%c
,$result
A saída de
PROGRAM
.%%
O caractere
%
.$$
O caractere
$
.
29.6.3 Usando as chaves de correspondência do udev
#
As chaves de correspondência descrevem as condições que devem ser atendidas para aplicar uma regra do udev
. As seguintes chaves de correspondência estão disponíveis:
ACTION
O nome da ação do evento, por exemplo,
add
ouremove
na adição ou remoção de um dispositivo.DEVPATH
O caminho do dispositivo do evento, por exemplo,
DEVPATH=/bus/pci/drivers/ipw3945
para procurar todos os eventos relacionados ao driver ipw3945.KERNEL
O nome interno (do kernel) do dispositivo do evento.
SUBSYSTEM
O subsistema do dispositivo do evento, por exemplo,
SUBSYSTEM=usb
para todos os eventos relacionados a dispositivos USB.ATTR{FILENAME}
Atributos
sysfs
do dispositivo do evento. Para corresponder a uma string contida no nome de arquivo de atributovendor
, você pode usarATTR{vendor}=="On[sS]tream"
, por exemplo.KERNELS
Permitem que o
udev
pesquise o caminho do dispositivo para encontrar um nome de dispositivo correspondente.SUBSYSTEMS
Permitem que o
udev
pesquise o caminho do dispositivo para encontrar um nome de subsistema do dispositivo correspondente.DRIVERS
Permitem que o
udev
pesquise o caminho do dispositivo para encontrar um nome de driver do dispositivo correspondente.ATTRS{FILENAME}
Permitem que o
udev
pesquise o caminho do dispositivo para encontrar um com valores de atributosysfs
correspondentes.ENV{KEY}
O valor de uma variável de ambiente, por exemplo,
ENV{ID_BUS}="ieee1394
para procurar todos os eventos relacionados ao ID do barramento FireWire.PROGRAM
Permite que o
udev
execute um programa externo. Para ser bem-sucedido, o programa deve retornar com código de saída zero. A saída do programa, impressa em STDOUT, está disponível para a chaveRESULT
.RESULT
Corresponder à string de saída da última chamada de
PROGRAM
. Incluir esta chave na mesma regra que a chavePROGRAM
ou em uma posterior.
29.6.4 Usando as chaves de atribuição do udev
#
Em contraste com as chaves de correspondência descritas anteriormente, as chaves de atribuição não descrevem condições que devem ser cumpridas. Elas atribuem valores, nomes e ações aos nós do dispositivo mantidos pelo udev
.
NAME
O nome do nó de dispositivo a ser criado. Depois que uma regra definir o nome de um nó, todas as outras regras com a chave
NAME
referente a esse nó serão ignoradas.SYMLINK
O nome de um link simbólico relacionado ao nó a ser criado. Várias regras de correspondência podem adicionar links simbólicos a serem criados com o nó do dispositivo. Você também pode especificar vários links simbólicos para um nó em uma regra usando o caractere de espaço para separar os nomes dos links simbólicos.
OWNER, GROUP, MODE
As permissões do novo nó de dispositivo. Os valores especificados aqui sobregravam qualquer coisa que tenha sido compilada.
ATTR{KEY}
Especifica um valor para ser gravado no atributo
sysfs
do dispositivo de evento. Se o operador==
é usado, essa chave também é usada para corresponder com o valor de um atributosysfs
.ENV{KEY}
Indica ao
udev
para exportar uma variável para o ambiente. Se o operador==
é usado, essa chave também é usada para corresponder com uma variável de ambiente.RUN
Indica ao
udev
para adicionar um programa à lista de programas a serem executados neste dispositivo. Lembre-se de restringir essa lista a pequenas tarefas para evitar o bloqueio de outros eventos nesse dispositivo.LABEL
Adicionar um rótulo para onde um
GOTO
possa ir.GOTO
Indicar ao
udev
para ignorar várias regras e continuar com uma que inclua o rótulo citado pela chaveGOTO
.IMPORT{TYPE}
Carregar variáveis para o ambiente do evento, como a saída de um programa externo. O
udev
importa variáveis de diversos tipos. Se nenhum tipo for especificado, oudev
tentará determinar o tipo sozinho, com base na parte executável das permissões do arquivo.program
diz aoudev
para executar um programa externo e importar sua saída.file
diz aoudev
para importar um arquivo texto.parent
diz aoudev
para importar as chaves armazenadas do dispositivo pai.
WAIT_FOR_SYSFS
Indica ao
udev
para aguardar a criação do arquivosysfs
especificado para determinado dispositivo. Por exemplo,WAIT_FOR_SYSFS="ioerr_cnt"
diz aoudev
para aguardar a criação do arquivoioerr_cnt
.OPTIONS
A chave
OPTION
pode ter vários valores:last_rule
diz aoudev
para ignorar todas as regras posteriores.ignore_device
diz aoudev
para ignorar este evento.ignore_remove
diz aoudev
para ignorar todos os eventos de remoção posteriores para o dispositivo.all_partitions
diz aoudev
para criar nós de dispositivo para todas as partições disponíveis em um dispositivo de bloco.
29.7 Nomeação persistente de dispositivos #
O diretório do dispositivo dinâmico e a infraestrutura de regras do udev
possibilitam especificar nomes estáveis para todos os dispositivos de disco, independentemente da ordem de reconhecimento ou da conexão usada para o dispositivo. Cada dispositivo de bloco apropriado criado pelo kernel é examinado por ferramentas com conhecimento especial sobre determinados barramentos, tipos de unidade ou sistemas de arquivos. Com o nome do nó do dispositivo fornecido pelo kernel dinâmico, o udev
mantém as classes de links persistentes apontando para o dispositivo:
/dev/disk |-- by-id | |-- scsi-SATA_HTS726060M9AT00_MRH453M4HWHG7B -> ../../sda | |-- scsi-SATA_HTS726060M9AT00_MRH453M4HWHG7B-part1 -> ../../sda1 | |-- scsi-SATA_HTS726060M9AT00_MRH453M4HWHG7B-part6 -> ../../sda6 | |-- scsi-SATA_HTS726060M9AT00_MRH453M4HWHG7B-part7 -> ../../sda7 | |-- usb-Generic_STORAGE_DEVICE_02773 -> ../../sdd | `-- usb-Generic_STORAGE_DEVICE_02773-part1 -> ../../sdd1 |-- by-label | |-- Photos -> ../../sdd1 | |-- SUSE10 -> ../../sda7 | `-- devel -> ../../sda6 |-- by-path | |-- pci-0000:00:1f.2-scsi-0:0:0:0 -> ../../sda | |-- pci-0000:00:1f.2-scsi-0:0:0:0-part1 -> ../../sda1 | |-- pci-0000:00:1f.2-scsi-0:0:0:0-part6 -> ../../sda6 | |-- pci-0000:00:1f.2-scsi-0:0:0:0-part7 -> ../../sda7 | |-- pci-0000:00:1f.2-scsi-1:0:0:0 -> ../../sr0 | |-- usb-02773:0:0:2 -> ../../sdd | |-- usb-02773:0:0:2-part1 -> ../../sdd1 `-- by-uuid |-- 159a47a4-e6e6-40be-a757-a629991479ae -> ../../sda7 |-- 3e999973-00c9-4917-9442-b7633bd95b9e -> ../../sda6 `-- 4210-8F8C -> ../../sdd1
29.8 Arquivos usados pelo udev
#
/sys/*
Sistema de arquivos virtual fornecido pelo kernel do Linux, exportando todos os dispositivos conhecidos atualmente. Essas informações são usadas pelo
udev
para criar nós de dispositivo em/dev
/dev/*
Nós de dispositivo criados dinamicamente e conteúdo estático criado com systemd-tmpfiles. Para obter mais informações, consulte a página de manual do
systemd-tmpfiles(8)
.
Os arquivos e os diretórios a seguir incluem elementos cruciais da infraestrutura do udev
:
/etc/udev/udev.conf
Arquivo de configuração principal do
udev
./etc/udev/rules.d/*
Regras de correspondência de eventos do
udev
específicas do sistema. Aqui, é possível adicionar regras personalizadas para modificar ou anular as regras padrão do/usr/lib/udev/rules.d/*
.Os arquivos são analisados em ordem alfanumérica. As regras dos arquivos com prioridade mais alta modificam ou anulam as regras com prioridade mais baixa. Quanto menor o número, maior a prioridade.
/usr/lib/udev/rules.d/*
Regras de correspondência de eventos do
udev
padrão. Os arquivos nesse diretório são de propriedade dos pacotes e serão sobregravados pelas atualizações. Não adicione, remova ou edite arquivos aqui; em vez disso, use o/etc/udev/rules.d
./usr/lib/udev/*
Programas ajudantes chamados de regras do
udev
./usr/lib/tmpfiles.d/
e/etc/tmpfiles.d/
Responsáveis pelo conteúdo do
/dev
estático.
29.9 Mais informações #
Para obter mais informações sobre a infraestrutura do udev
, consulte as seguintes páginas de manual:
udev
Informações importantes sobre
udev
, chaves, regras e outras questões essenciais de configuração.udevadm
É possível usar o
udevadm
para controlar o comportamento de tempo de execução doudev
, solicitar eventos do kernel, gerenciar a fila de eventos e fornecer mecanismos simples de depuração.udevd
Informações sobre o daemon de gerenciamento de eventos do
udev
.