¿Qué hace DKMS? ¿Como lo uso?


23

Recientemente he visto algunas menciones sobre DKMS, pero no está claro qué está haciendo realmente en mi sistema.

¿Qué hace realmente DKMS y cómo lo uso?

Respuestas:


25

El paquete DKMS (Dynamic Kernel Module Support) ( http://linux.dell.com/dkms/ ) proporciona soporte para instalar versiones suplementarias de los módulos del kernel. El paquete se compila e instala en el árbol del kernel. La desinstalación restaura los módulos anteriores. De manera predeterminada, la instalación se realiza en el árbol de kernel actual, pero cualquier árbol de kernel se puede seleccionar con opciones de línea de comandos. Además, se llama a DKMS automáticamente tras la instalación de nuevos paquetes de imágenes de kernel de Ubuntu y, por lo tanto, los módulos agregados a DKMS se llevarán automáticamente a través de las actualizaciones.

Visión general

Para usar un módulo con DKMS, uno coloca los archivos de instalación del módulo (podría ser código fuente o binario) en / usr / src / -, junto con un archivo de configuración dkms.conf que le dice a DKMS cómo construir / configurar el módulo y qué nombre es. En escenarios más avanzados, el sistema dkms puede realizar instrucciones de compilación y parches condicionales, pero teniendo en cuenta su caso, esto puede no ser necesario.

Recorrido

Supongamos que desea instalar un módulo para su elegante "Adaptador impresionante". Te dan una fuente tarball awesome-20091211-v1.1.tgz.

Con DKMS, le decimos a DKMS cómo hacer eso por usted creando un archivo dkms.conf con las entradas apropiadas. Por ejemplo, después de desempacar el tarball:

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

En el interior dkms.conf, podemos agregar las líneas:

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 los directorios son con respecto a la ubicación del archivo dkms.conf. Esto le dice a DKMS

  1. El comando para construir el módulo (ejecute make en el directorio src /).
  2. El comando para limpiar el árbol de origen (ejecute make clean en el directorio src /).
  3. El nombre del módulo sin la extensión .o o .ko. Esto en realidad puede ser una matriz de módulos si se construyen múltiples módulos, vea man dkms.
  4. Donde DKMS puede encontrar el módulo construido.
  5. El nombre y la versión DKMS deben asociarse con los módulos.
  6. Para rehacer la imagen initrd después de instalar el módulo.

También puede agregar opciones para llamar scripts antes o después de compilar o instalar, proporcionar comandos de creación adicionales (condicional), comandos de parche, etc. De hecho, dkms.conf se origina en un script de shell, por lo que se puede hacer una buena cantidad de trucos. si necesario. Estas opciones y más se describen en la sección dkms.conf en man dkms.

A continuación, instalamos el módulo en DKMS copiando los archivos de instalación del módulo en el árbol de origen del núcleo / usr / src / - y le informamos a DKMS sobre el nuevo 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...

¡Eso es! DKMS ahora ha agregado nuestro módulo a su lista de módulos para construir para futuras instalaciones de kernel. Para asegurarnos de que funciona e instalar el módulo en nuestro núcleo actual, podemos indicar a dkms que compile e instale el 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

Con suerte, su módulo se instalará y reinstalará en futuras actualizaciones del kernel.

Ejemplos

La página de manual de DKMS tiene información útil sobre cómo configurar su módulo de kernel favorito para usar con DKMS. No es una documentación completa, pero responderá muchas preguntas. Puede ayudarlo observar los siguientes ejemplos, incluso si los módulos utilizados no son los que desea configurar:

  • RocketRAID - Dos ejemplos de cómo-a configurar el Highpoint RocketRAID conductores RR26xx y RR62x con DKMS.

De: help.ubuntu.com

Más información se puede encontrar aquí:


2
FWIW, el proyecto DKMS tiene un nuevo hogar en Github github.com/dell/dkms
DDay
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.