Introdução
Udev (Userspace devfs) é um sistema de arquivos presente desde o kernel 2.6 e substitui o
devfs completamente.
É responsável por gerenciar os arquivos de dispositivos do diretório
/dev, criando e removendo os mesmos dinamicamente. O udev
também tem função do
hotplug, trabalhando em conjunto com o HAL (Hardware Abstraction Layer), adicionando os dispositivos
conforme são instalados na máquina. Sem ele, seria impossível acessar seu pendrive, webcam e impressora, por exemplo, quando conectados.
Funcionamento
Entendendo como os dispositivos são detectados e adicionados no sistema
GNU/Linux.
O sistema GNU/Linux faz uso do kernel e de serviços para detectar e adicionar dispositivos ao sistema, para que os mesmos fiquem disponíveis para
uso do usuário e do próprio sistema.
Abaixo, é mostrada a hierarquia no processo de detecção e adição de dispositivos:
Como visto na figura acima, existe todo um processo até os dispositivos estarem disponíveis para uso do sistema e/ou usuários, que vai desde a
detecção do device pelo kernel até a criação de um arquivo de dispositivo no diretório
/dev pelo udev.
Todo processo começa com o kernel detectando os dispositivos e exportando informações sobre os mesmos para o sistema de arquivos
virtual
Sysfs (que está montado no diretório
/sys) e ao mesmo tempo, enviando um evento para o daemon do serviço udev.
O evento informa ao udev uma ação no dispositivo, esta ação pode ser um adição, remoção ou alteração de um dispositivo conectado à máquina.
Quando o udev é informado pelo kernel sobre o evento, trata de usar as informações do diretório
/sys para identificar o device
conectado, carregar o módulo correto e criar um arquivo especial no diretório
/dev com exceção da placa de rede que é tratada no
kernel.
Aí você pergunta: E o HAL?
Simples, o HAL é um serviço que informa aos programas do sistema se um dispositivo está disponível, foi alterado ou removido a todo tempo.
Na verdade, o HAL já não é essencial para este trabalho, pois algumas distribuições atualmente, conseguem fazer todo este trabalho somente pelo
udev, ou em conjunto com o serviço D-Bus. No entanto, para outras distribuições, isso torna-se essencial.
É importante destacar que todo este processo de detectar e ativar os devices explicado anteriormente, não só acontece em Hotplug, ou seja, os
dispositivos são instalados com o sistema em uso, mas também em Coldplug, os dispositivos são conectados (instalados) com a máquina desligada
e o sistema, quando em uso, detecta-os.
Observe que quem realmente faz o trabalho de hotplug, é o udev.
Os arquivos de dispositivos criados no diretório
/dev nada mais são que arquivos especiais, obtidos pela combinação de dois endereços
do kernel, um chamado de
major number e outro de
minor number.
Sendo que:
- major number → É usado para identificar uma categoria de dispositivos.
- minor number → Identifica o dispositivo.
Veja na figura abaixo, um exemplo destes números: