dkms versus module-assistant

6

module-assistant tem sido o método de fato de compilar e construir pacotes Debian binários contendo módulos do kernel por um tempo agora. Mais recentemente apareceu um utilitário comparável - dkms .

Se alguém tiver experiência em usar os dois, faça uma comparação e confira as vantagens e desvantagens de usar um versus o outro.

Um item a ser endereçado em uma resposta é se dkms também cria pacotes Debian binários para módulos do kernel e, em caso afirmativo, como e, em caso afirmativo, quais são as diferenças entre os pacotes criados por m-a e dkms , se houver.

Pessoalmente, nunca usei dkms , mas usei module-assistant esporadicamente ao longo de muitos anos e foi uma boa experiência. Não tenho planos imediatos para experimentar com dkms , por isso não acho que sou a pessoa certa para escrever uma resposta.

O google aleatório encontrou uma discussão aqui , também isto .

Escusado será dizer que qualquer resposta deve basear-se em primeira mão experiência, não copiando de fóruns da web. Um exemplo trabalhado usando ambos seria bom. Possivelmente nvidia-kernel , já que isso é bastante comumente usado. Sim, eu sei que é um módulo do kernel proprietário. : - (

ATUALIZAÇÃO: Obrigado ao jordanm por sua resposta. Eu gostaria de algo que entra em um pouco mais de detalhes sobre o que está acontecendo sob o capô, tanto para m-a como para dkms , embora eu inicialmente não tenha mencionado isso. Além disso, parece que a maior parte do tempo dkms funcionará de forma transparente e automática. Mas quais são os modos de falha de dkms . Como eles lidam com kernels compilados / instalados manualmente? Instalado a partir de um pacote binário ou de uma instalação local.

    
por Faheem Mitha 17.03.2014 / 23:42

1 resposta

5

A principal diferença da perspectiva do usuário é que module-assistant ( m-a ) é uma ferramenta para compilar manualmente um módulo do kernel, enquanto dkms faz isso automaticamente sem intervenção do usuário. Se você estiver usando m-a e o pacote do kernel for atualizado, você deve recompilar manualmente o módulo usando m-a . Como m-a apenas compila para o kernel que você está executando atualmente, isso significa que você terá uma GUI quebrada para a próxima reinicialização se o módulo para o qual você precisa m-a for um driver gráfico.

Os gatilhos para dkms são executados em cada instalação do pacote kernel e garante que o módulo seja instalado para cada kernel no sistema. Eu pessoalmente não consigo pensar em uma razão para um usuário final continuar usando m-a .

Aqui estão alguns exemplos de m-a vs dkms para o módulo do kernel nvidia :

Criando um módulo com o module-assistant:

apt-get install module-assistant nvidia-kernel-source
m-a prepare # install the header package for the current kernel and compilation tools 
m-a install nvidia-kernel-source # compile the source into a .deb and install it

Criando um módulo com dkms:

apt-get install nvidia-kernel-dkms

Atualização do kernel com module-assistant :

apt-get upgrade # assumed to upgrade kernel
# reboot
m-a prepare
m-a install nvidia-kernel-source

Atualização do kernel com dkms :

apt-get upgrade # assumed to upgrade kernel
    
por 18.03.2014 / 00:39

Tags