udev ou O DKMS pode ser descrito adequadamente como “uma maneira de gerenciar dinamicamente todos os drivers de dispositivos conectados / desconectados em um sistema Linux”. O Udev gerencia dispositivos dinamicamente, não drivers - ele cria entradas em /dev
quando um dispositivo é conectado. DKMS é sobre drivers, mas não tem nada a ver com a localização de um driver para um dispositivo: é um maneira de compilar drivers de terceiros a partir do código-fonte ao instalar um kernel.
Quando o kernel detecta um dispositivo para o qual nenhum driver está presente, ele chama o programa modprobe
para tentativa de carregar um módulo que fornece esse driver. O programa modprobe
, por sua vez, consulta um banco de dados criado por depmod
que percorre arquivos de módulo ( *.ko
) localizado em /lib/modules/VERSION/
. Veja debian não detecta placa serial PCI após a reinicialização para obter uma descrição mais detalhada desse mecanismo.
Uma sequência nominal de eventos quando um dispositivo está conectado e nenhum driver está presente na memória é:
- O kernel invoca
modprobe
para carregar um driver. -
modprobe
carrega um arquivo de módulo de/lib/modules
. - Agora que um driver está disponível, o kernel notifica o udev que um novo dispositivo está presente.
- O udev cria uma entrada em
/dev
para o novo dispositivo.
Não há mecanismo padrão para baixar um driver de dispositivo de algum lugar quando um dispositivo desconhecido é detectado. A maneira normal de instalar drivers é ter todos os drivers possíveis instalados em seu sistema, fornecidos pela sua distribuição - nem sempre é possível baixar os drivers (por exemplo, quando você precisa do driver para se conectar à rede ou não tem uma conexão de rede). A atualização dos drivers funciona da mesma forma que a atualização de qualquer outra coisa, atualizando o pacote que contém o arquivo do driver (que geralmente é o pacote do kernel).
O DKMS intervém quando um driver não faz parte do kernel do Linux. É difícil criar um módulo binário que funcione nas versões do kernel e nas opções de compilação. O DKMS é um framework para compilar automaticamente módulos para o (s) kernel (s) instalado (s); os módulos são distribuídos como código-fonte.