Impulsionando alterações em repositórios de drivers

1

Meu entendimento de dkms é que é uma maneira de gerenciar dinamicamente todos os drivers de dispositivos conectados / desconectados em um sistema Linux. Se isso estiver correto, então tenho que imaginar que ele permite configurar um "repo" onde os drivers de dispositivo podem ser instalados, de modo que, assim que um dispositivo hotpluggable for conectado a ele, ele encontre o driver desse dispositivo (neste repo) e carrega.

Se isso está correto, então onde está este repositório e esse local é configurável? Pode ser configurado para procurar drivers em um local remoto (usando HTTP, TCP, etc)?

Além disso, o faz dkms, oferece uma maneira de atualizar / atualizar dinamicamente os drivers de dispositivo em tempo de execução? Seria bom enviar as atualizações do driver de dispositivo para este repositório e fazer com que o dkms automaticamente libere o driver , substitua o driver antigo pelo novo / atualizado e, em seguida, recarregue esse novo driver.

    
por Zac 27.01.2015 / 18:23

1 resposta

1

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 é:

  1. O kernel invoca modprobe para carregar um driver.
  2. modprobe carrega um arquivo de módulo de /lib/modules .
  3. Agora que um driver está disponível, o kernel notifica o udev que um novo dispositivo está presente.
  4. 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.

    
por 28.01.2015 / 01:07