Cosa fa DKMS? Come lo uso?


23

Di recente ho visto alcune menzioni su DKMS ma non è chiaro cosa stia effettivamente facendo sul mio sistema.

Cosa fa effettivamente DKMS e come lo uso?

Risposte:


25

Il pacchetto DKMS (Dynamic Kernel Module Support) ( http://linux.dell.com/dkms/ ) fornisce supporto per l'installazione di versioni supplementari dei moduli del kernel. Il pacchetto viene compilato e installato nell'albero del kernel. La disinstallazione ripristina i moduli precedenti. Per impostazione predefinita, l'installazione si trova nell'albero del kernel corrente, ma qualsiasi albero del kernel può essere selezionato con le opzioni della riga di comando. Inoltre, DKMS viene chiamato automaticamente all'installazione di nuovi pacchetti di immagini del kernel Ubuntu, e quindi i moduli aggiunti a DKMS verranno automaticamente trasferiti attraverso gli aggiornamenti.

Panoramica

Per usare un modulo con DKMS, si collocano i file di installazione del modulo (che potrebbero essere codice sorgente o binari) in / usr / src / -, insieme a un file di configurazione dkms.conf che dice a DKMS come costruire / configurare il modulo e quali il nome è. In scenari più avanzati, il sistema dkms può eseguire istruzioni di compilazione e patch condizionali, ma considerando il tuo caso potrebbe non essere necessario.

Procedura dettagliata

Supponiamo che tu voglia installare un modulo per il tuo fantastico "Adattatore eccezionale". Ti viene data una fonte tarball awesome-20091211-v1.1.tgz.

Con DKMS, diciamo a DKMS come farlo creando un file dkms.conf con le voci appropriate. Ad esempio, dopo aver decompresso il tarball:

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

All'interno dkms.conf, potremmo aggiungere le righe:

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

Tutte le directory sono relative alla posizione del file dkms.conf. Questo dice a DKMS

  1. Il comando per compilare il modulo (esegui make nella directory src /).
  2. Il comando per pulire l'albero dei sorgenti (esegui make clean nella directory src /).
  3. Il nome del modulo senza l'estensione .o o .ko. Questo potrebbe effettivamente essere un array di moduli se vengono creati più moduli, vedi man dkms.
  4. Dove DKMS può trovare il modulo integrato.
  5. Il nome e la versione che DKMS deve associare ai moduli.
  6. Per rifare l'immagine initrd dopo aver installato il modulo.

Puoi anche aggiungere opzioni per chiamare script prima o dopo la compilazione o l'installazione, fornire comandi di creazione (condizionali) aggiuntivi, comandi patch, ecc. Il dkms.conf è in effetti fornito in uno script di shell, quindi è possibile eseguire una discreta quantità di inganni se necessario. Queste e altre opzioni sono descritte nella sezione dkms.conf di man dkms.

Quindi, installiamo il modulo in DKMS copiando i file di installazione del modulo nell'albero dei sorgenti del kernel / usr / src / - e comunichiamo a DKMS il nuovo modulo:

# 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...

Questo è tutto! DKMS ha ora aggiunto il nostro modulo al suo elenco di moduli da compilare per le future installazioni del kernel. Per assicurarsi che funzioni e installare il modulo nel nostro kernel corrente, possiamo dare istruzioni a dkms di compilare e installare il modulo:

# 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 un po 'di fortuna, il modulo verrà installato e reinstallato in futuri aggiornamenti del kernel.

Esempi

La pagina man di DKMS contiene informazioni utili sull'impostazione del modulo kernel preferito per l'uso con DKMS. Non è una documentazione completa, ma risponderà a molte domande. Potrebbe essere utile annotare i seguenti esempi, anche se i moduli utilizzati non sono quelli che si desidera impostare:

Da: help.ubuntu.com

Ulteriori informazioni possono essere trovate qui:


2
FWIW, il progetto DKMS ha una nuova casa su Github github.com/dell/dkms
DDay
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.