Então, eu estava me perguntando se minhas explicações do udev e como ele funciona parecem corretas e meu entendimento está correto, por favor me avise.
Então, meu entendimento do udev é que ele é um gerenciador de dispositivos dinâmico no Linux que é executado como um daemon .
- quando ocorre uma alteração em um dispositivo , como se um dispositivo está conectado ao kernel, envia um uevent para o udev, o udev pode acessar o sysfs para encontrar detalhes sobre o dispositivo , como fornecedor, nome e modelo do dispositivo, etc.
- uma vez que tenha os detalhes do dispositivo, o Udev então combina esses atributos com as regras definidas para um tipo específico de dispositivo, neste caso, pode ser um dispositivo usb. se existir uma regra como "criar link simbólico para todos os dispositivos usb", o udev fará isso. O udev verifica as regras e corresponde aos atributos para verificar o dispositivo e, em seguida, pode começar a adicionar alterações ao dispositivo, bem como fazer o que as regras dizem ao dispositivo.
Esse é basicamente o meu entendimento atual, por favor, corrija-me se estiver errado e diga-me informações extras.
UDEV
Udev significa " userspace
/dev
" é um gerenciador de dispositivos para o kernel Linux. Faz parte do systemd (um sistema init usado para inicializar o espaço do usuário e gerenciar os processos do usuário ).Originalmente o udev era independente do systemd, ele foi fundido com o systemd em 2012, isso levou a algumas complicações para a distribuição rodar sem o systemd como explicado aqui para a distribuição gentoo .
Este aplicativo (udev) destina-se a substituir devfsd e hotplug , o udev gerencia principalmente nós de dispositivos no
/dev
diretório. Ao mesmo tempo, o udev também lida com todos os eventos de espaço do usuário gerados quando dispositivos de hardware são adicionados ao sistema ou removidos dele, incluindo carregamento de firmware conforme exigido por determinados dispositivos ( por meio de módulos do kernel ). Concretamente, o udev é executado como serviço systemd ( systemd-udevd.service ) para realizar suas tarefas, ele ouve os uevents do kernel . Para cada evento, o systemd-udevd executa as instruções correspondentes especificadas nas regras do udev (/etc/udev/rules.d/), detalhes sobre a escrita de regras estão disponíveis nesteartigo .No nível do kernel do Linux, as informações necessárias do dispositivo são exportadas pelo sistema de arquivos sysfs. Para cada dispositivo que o kernel detectou e inicializou, um diretório com o nome do dispositivo é criado. Ele contém arquivos de atributo com propriedades específicas do dispositivo. Toda vez que um dispositivo é adicionado ou removido, o kernel envia um uevent para notificar o udev sobre a mudança.
O comportamento do daemon udev (serviço) pode ser configurado usando udev.conf(5) (/etc/udev/udev.conf), suas opções de linha de comando, variáveis de ambiente e na linha de comando do kernel, ou alterado dinamicamente com udevadm ao controle.
O udev, como um todo, é dividido em três partes:
O próprio Udev é dividido nessas três partes, mas depende completamente do gerenciamento de dispositivos do kernel e de suas chamadas uevents, o sistema recebe chamadas do kernel via soquete netlink. Versões anteriores usavam hotplug, adicionando um link para elas mesmas em /etc/hotplug.d/default com esta finalidade.
Observe que outro aplicativo/daemon pode ouvir as chamadas uevents por meio de libudev , gudev ou diretamente do kernel com GUdevClient
Mais informações sobre o udev estão disponíveis nas fontes desta resposta: debian wiki , arch linux wiki , opensource.com , the geek diary , freedesktop.org , wikipedia , pks.mpg.de e outros sites vinculados.
Os detalhes sobre as camadas de operação do udev são explicados aqui e ilustrados com este diagrama: