webentwicklung-frage-antwort-db.com.de

Was macht die DKMS? Wie benutze ich es?

Ich habe kürzlich einige Erwähnungen über DKMS gesehen, aber es ist nicht klar, was es auf meinem System tatsächlich tut.

Was macht die DKMS eigentlich und wie verwende ich sie?

22
user238204

DKMS (Dynamic Kernel Module Support) Paket ( http://linux.Dell.com/dkms/ ) bietet Unterstützung für die Installation zusätzlicher Versionen von Kernelmodulen. Das Paket wird kompiliert und in den Kernelbaum installiert. Durch das Deinstallieren werden die vorherigen Module wiederhergestellt. Standardmäßig erfolgt die Installation in der aktuellen Kernelstruktur, es kann jedoch jede Kernelstruktur mit Befehlszeilenoptionen ausgewählt werden. Darüber hinaus wird DKMS bei der Installation neuer Ubuntu-Kernel-Image-Pakete automatisch aufgerufen. Daher werden zu DKMS hinzugefügte Module automatisch über Updates übertragen.

Übersicht

Um ein Modul mit DKMS zu verwenden, legt man die Installationsdateien des Moduls (Quellcode oder Binärcode) in/usr/src/- zusammen mit einer Konfigurationsdatei dkms.conf ab, die der DKMS mitteilt, wie das Modul erstellt/konfiguriert wird und was es ist Name ist. In fortgeschritteneren Szenarien können bedingte Build-Anweisungen und Patches vom dkms-System ausgeführt werden. In Ihrem Fall ist dies jedoch möglicherweise nicht erforderlich.

Walk-through

Angenommen, Sie möchten ein Modul für Ihren fantastischen "Awesome Adapter" installieren. Sie erhalten eine Quelle tarball awesome-20091211-v1.1.tgz.

Bei der DKMS teilen wir der DKMS mit, wie Sie dies tun, indem Sie eine Datei dkms.conf mit den entsprechenden Einträgen erstellen. Zum Beispiel, nachdem wir den Tarball ausgepackt haben:

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

In dkms.conf könnten wir die Zeilen hinzufügen:

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

Alle Verzeichnisse beziehen sich auf den Speicherort der Datei dkms.conf. Das sagt die DKMS

  1. Der Befehl zum Erstellen des Moduls (führen Sie make im Verzeichnis src/aus).
  2. Der Befehl zum Bereinigen des Quellbaums (führen Sie make clean im Verzeichnis src/aus).
  3. Der Name des Moduls ohne die Erweiterung .o oder .ko. Dies kann tatsächlich ein Array von Modulen sein, wenn mehrere Module erstellt werden (siehe man dkms).
  4. Wo DKMS das gebaute Modul findet.
  5. Name und Version der DKMS sollten den Modulen zugeordnet sein.
  6. So erstellen Sie das initrd-Image nach der Installation des Moduls neu.

Sie können auch Optionen zum Aufrufen von Skripten vor oder nach dem Erstellen oder Installieren hinzufügen, zusätzliche (bedingte) make-Befehle, Patch-Befehle usw. bereitstellen. Die Datei dkms.conf ist in ein Shell-Skript eingebunden, sodass eine ganze Menge Tricks möglich sind im Bedarfsfall. Diese und weitere Optionen werden im Abschnitt dkms.conf in man dkms beschrieben.

Als nächstes installieren wir das Modul in DKMS, indem wir die Installationsdateien des Moduls in den Kernel-Quellbaum/usr/src/- kopieren und DKMS über das neue Modul informieren:

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

Das ist es! DKMS hat jetzt unser Modul in die Liste der Module aufgenommen, die für zukünftige Kernel-Installationen erstellt werden sollen. Um sicherzustellen, dass es funktioniert und um das Modul in unserem aktuellen Kernel zu installieren, können wir dkms anweisen, das Modul zu erstellen und zu installieren:

# 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

Mit etwas Glück wird Ihr Modul installiert und in zukünftigen Kernel-Updates neu installiert.

Beispiele

Die DKMS-Manpage enthält hilfreiche Informationen zum Einrichten Ihres bevorzugten Kernel-Moduls für die Verwendung mit DKMS. Es ist keine umfassende Dokumentation, aber es werden viele Fragen beantwortet. Es kann hilfreich sein, die folgenden Beispiele zu notieren, auch wenn die verwendeten Module nicht die sind, die Sie einrichten möchten:

  • RocketRaid - Zwei Beispiele zur Einrichtung des Highpoint RocketRaid Treiber RR26xx und RR62x mit DKMS.

Von: help.ubuntu.com

Weitere Informationen finden Sie hier:

25
Rinzwind