
Instalei um driver DKMS para um dispositivo USB de um PPA. Estou fazendo alterações no código e tentando desinstalar o driver com apt-get --purge remove, mas quando conecto o dispositivo, os módulos do kernel ainda carregam... por que isso aconteceria? Onde eles estão se escondendo?
desde já, obrigado
Responder1
Quando você (ou o DKMS) cria um módulo do kernel e o instala, eles vão para /lib/modules/$(uname -r)/...
, então verifique lá. Um exemplo do meu sistema:
/lib/modules/3.2.0-36-generic-pae/updates/dkms/nvidia_current_updates.ko
Responder2
Instalar e usar módulos do kernel instalados usando DKMS envolve várias etapas (principalmente automatizadas):
- (no seu caso) Adicione as fontes PPA, atualize a lista de pacotes.
- Instale o pacote DKMS com o gerenciador de pacotes (
apt-get
) que começa copiando as fontes e as instruções de instalação automática para um diretório padrão (/usr/src/<module name>-<version>
) - DKMS copia o arquivo para seu diretório privado.
- DKMS compila o código fonte do módulo do kernel em seu diretório privado.
- DKMS copia o arquivo do módulo do kernel compilado para o diretório de módulos (geralmente
/lib/modules/<kernel version>/updates
) - O DKMS atualiza as dependências do módulo para que você possa usar
modprobe <modname>
em vez doinsmod /lib/modules/<kernel version>/updates/<modname>.ko
. - Você carrega o módulo do kernel manualmente (
modprobe <modname>
) ou um componente do sistema (udev) faz isso quando você conecta seu dispositivo USB.
As etapas 1 a 6 são desfeitas ao limpar o pacote. A etapa 7 não é desfeita automaticamente. Normalmente, um módulo permanece carregado após ser carregado, a menos que você o remova manualmente com sudo rmmod <modname>
. Use lsmod
para descobrir qual nome seu módulo tem, geralmente é o mesmo que <modname>
, mas pelo menos para drivers nvidia no Ubuntu, isso é feito de forma diferente (você usaria modprobe nvidia-current
, mas usaria rmmod nvidia
).