O que o DKMS faz? Como eu uso isso?

14

Eu tenho visto algumas menções sobre o DKMS recentemente, mas não está claro o que ele está realmente fazendo no meu sistema.

O que o DKMS realmente faz e como eu o uso?

    
por user238204 21.01.2014 / 09:50

1 resposta

16

  O pacote DKMS (Suporte ao Dynamic Kernel Module) ( link ) fornece suporte para a instalação de versões suplementares de módulos do kernel. O pacote compila e instala na árvore do kernel. A desinstalação restaura os módulos anteriores. Por padrão, a instalação é na árvore do kernel atual, mas qualquer árvore do kernel pode ser selecionada com opções de linha de comando. Além disso, o DKMS é chamado automaticamente após a instalação de novos pacotes de imagem do kernel do Ubuntu e, portanto, os módulos adicionados ao DKMS serão automaticamente transportados através de atualizações.

     

Visão geral

     

Para usar um módulo com o DKMS, coloca-se os arquivos de instalação do módulo (código fonte ou binário) em / usr / src / -, junto com o arquivo de configuração dkms.conf que informa ao DKMS como construir / configurar o módulo e qual é o seu nome. Em cenários mais avançados, instruções de compilação condicional e patch podem ser feitas pelo sistema dkms, mas considerando o seu caso, isso pode não ser necessário.

     

Acompanhamento

     

Digamos que você queira instalar um módulo para o seu sofisticado "Awesome Adapter". Você recebe uma fonte tarball awesome-20091211-v1.1.tgz .

     

Com o DKMS, dizemos ao DKMS como fazer isso criando um arquivo dkms.conf com as entradas apropriadas. Por exemplo, depois de descompactarmos o tarball:

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf
  

Dentro de dkms.conf , podemos adicionar as linhas:

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes
  

Todos os diretórios estão relacionados ao local do arquivo dkms.conf. Isto diz ao DKMS

     
  1. O comando para construir o módulo (execute make no diretório src /).
  2.   
  3. O comando para limpar a árvore de origem (execute make clean no diretório src /).
  4.   
  5. O nome do módulo sem a extensão .o ou .ko. Isso pode realmente ser uma matriz de módulos se vários módulos forem criados, veja man dkms.
  6.   
  7. Onde o DKMS pode encontrar o módulo construído.
  8.   
  9. O nome e a versão que o DKMS deve associar ao (s) módulo (s).
  10.   
  11. Para refazer a imagem initrd depois de instalar o módulo.
  12.   

Você também pode adicionar opções para chamar scripts antes ou depois de compilar ou instalar, fornecer comandos make (condicionais) adicionais, comandos de patch, etc. O dkms.conf é de fato originado em um shell script, portanto, uma boa quantidade de truques pode ser feito se necessário. Essas opções e mais são descritas na seção dkms.conf no man dkms.

     

Em seguida, instalamos o módulo no DKMS copiando os arquivos de instalação do módulo para a árvore de origem do kernel / usr / src / - e informamos ao DKMS sobre o novo módulo:

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...
  

É isso! O DKMS adicionou agora o nosso módulo à sua lista de módulos para construir para futuras instalações do kernel. Para ter certeza de que funciona e para instalar o módulo em nosso kernel atual, podemos instruir o dkms a construir e instalar o módulo:

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree
  

Com alguma sorte, seu módulo será instalado e reinstalado em futuras atualizações do kernel.

     

Exemplos

     

A página de manual do DKMS tem informações úteis sobre a configuração do seu módulo do kernel favorito para uso com o DKMS. Não é uma documentação abrangente, mas responderá a muitas perguntas. Pode ajudá-lo a anotar os seguintes exemplos, mesmo que os módulos utilizados não sejam os que você deseja configurar:

     
  • RocketRaid - Dois exemplos de como configurar o Highpoint RocketRaid condutores RR26xx e RR62x com DKMS.
  •   

De: help.ubuntu.com

Mais informações podem ser encontradas aqui:

por Rinzwind 21.01.2014 / 10:21

Tags