Was ist DKMS unter Linux?

Was ist DKMS unter Linux?
DKMS oder Dynamic Kernel -Modulunterstützung ist ein System, mit dem diskrete Kernelmodule aktualisiert werden können, ohne den gesamten Kernel zu ändern. Es ist kostenlose Software unter GPL V2 und vom Dell's Linux Engineering Team geschrieben. DKMS wurde zunächst für die Dell Computer Corporation entwickelt, um Software-Patches auf genau definierte Weise an ihre Kunden zu verteilen.

DKMS hat viele Vorteile für die Communities für Linux -Dienstleister, e.G.:

  1. Aus Sicht des Fahrersentwicklers hilft es beim Hinzufügen von Treibern, die noch nicht im Basiskern sind. Außerdem sind auch die Fahrerentwickler, die verpflichtet sind, aktualisierte Gerätetreiber zum Testen verfügbar zu gestalten. Ein weiterer Vorteil von DKMS besteht darin, dass die Entwickler testen können, dass der Fahrercode auf verschiedenen Maschinen ausgeführt wird. Tatsächlich beschleunigt dies den Treiberentwicklungsprozess.
  2. Aus Sicht des Systemadministrators vereinfacht DKMS den Prozess der Installation von Geräte -Treiber -Aktualisierungen im aktiven Kernel, ohne Änderungen daran hinzuzufügen. Daher müssen sie nicht auf die Ankunft eines neuen Kernels warten.
  3. Ausgewählte Fehlerbehebungen oder Patches können zwischen großen Updates eingeführt werden.
  4. Neue Hardware, die eine Änderung in einem einzigen Modul erfordert, kann leicht integriert werden. Auch dies kann erreicht werden, ohne die neuen Kerne vollständig zu testen.

Was werden wir abdecken??

In diesem Leitfaden werden verschiedene Kernel-Terminologien erörtert und insbesondere, was DKMS ist.

Eine kurze Überprüfung der Terminologien

Was ist der Linux -Kernel?

Es ist der Kernteil eines Linux -Betriebssystems. Es ist die Hauptschnittstelle zwischen den im Betriebssystem ausgeführten Prozessen und seiner Hardware. Es verwaltet wichtige Funktionen wie Speicherverwaltung, Prozessmanagement, CPU -Management, Gerätefahrerverwaltung sowie Systemanrufe und Sicherheitsmanagement.

Kernelraum
Der Kernel ist tatsächlich vor dem Benutzer versteckt und arbeitet in seinem eigenen Bereich namens Kernel Space. Der Benutzer interagiert mit dem Kernel mit den Benutzeranwendungen wie Dateien -Browser, Webbrowser usw. Diese Interaktionen verwenden ein spezifisches Programmierkonstrukt, das als Systemaufruf bezeichnet wird.

Kernel -Quellbaum
Es verfügt über den gesamten Quellcode für Kernel- und Gerätetreiber. Es besteht aus vielen Verzeichnissen und Unterverzeichnissen wie Bogen, Block, Krypto, init, lib, usr usw.

Linux -Kernel -Module
Linux -Kernel -Module sind im Grunde genommen Codestücken. Diese können nach Anforderung hinzugefügt und aus dem Kernel entfernt werden. Sie können eingebaut oder ladbar sein. Das Kernel -Modul erhöht die Funktionen des Kernels, ohne dass ein System neu startet. Im Gegensatz zu Microkernels, bei denen das Hinzufügen neuer Komponenten in den Kernel ein neues Kernel konfiguriert und erstellt werden muss, können wir die Komponenten oder Module des Betriebssystems zur Laufzeit laden und entladen. Diese Module sind Gerätetreiber, Dateisysteme usw.

Nachdem ein Modul geladen ist, ist es genau wie ein Stück Kernelcode. Es hat die gleichen Privilegien und Pflichten wie ein normaler Kernelcode.

Definition von DKMS

Hier ist ein Auszug der DKMS -Definition, die ich hier gefunden habe:

„DKMS ist ein Framework, in dem die Geräte -Treiberquelle außerhalb des Kernel -Quellbaums wohnen kann, damit es sehr einfach ist, Module wieder aufzubauen.”

Lassen Sie uns das obige näher erläutern. Das DKMS -System ist ein Baum aus dem Grundkernbaum am Boden. Es enthält die Modulquelle und die kompilierten Modulbinärdateien. Infolge dieser Replikation sind Module nicht an den Kernel gekoppelt. (Obwohl Module nicht vollständig entkoppelt sind).

Ich selbst habe zuerst das DKMS -Konzept gestoßen, als ich einen HP -Laptop kaufte und Ubuntu 18 installiert habe.04 darauf. Bis auf mein WLAN funktionierte alles gut. Mein Laptop konnte keinen WLAN -Adapter finden. In den Einstellungen wurde im WLAN -Menü eine Nachricht angezeigt “Kein WLAN -Adapter gefunden”. Ich begann mit der Suche nach Foren im Internet und stellte fest, dass viele Menschen das gleiche Problem hatten. Ich fand viele Lösungen, die darauf hindeuten, Header -Dateien, Treiber und andere Pakete zu installieren.

Ich folgte diesen Leitfäden blind, ohne zu wissen, was sie tatsächlich vermitteln wollten. Wie auch immer, diese Führer haben mir geholfen, und ich bekam irgendwie ein WLAN. Das Problem war jedoch, dass das gleiche Problem bei der Aktualisierung meines Ubuntu -Systems das gleiche Problem auftrat, und ich musste dieselben Schritte wiederholen, um die heruntergeladenen Treiber neu zu kompilieren. Außerdem muss ich das Problem mit niedrigem Signal jedes Mal nach der Installation des Treibers beheben. Ich habe sogar Windows OS installiert, und zu meiner Überraschung arbeitete das WLAN tatsächlich einwandfrei. Aber ich muss Ubuntu sowieso für meine Arbeit benutzen. Also habe ich beschlossen, mit dem temporären Patch zu leben, den ich früher bekam.

DKMS kommt zur Rettung

Eine aktuelle Lösung, auf die ich gerade gestoßen bin und die mir in der Vergangenheit egal war. Anstatt die zu verwenden machen oder Installation machen Befehl, DKMS führt drei Vorgänge im Quellcode aus: Hinzufügen, Erstellen und Installieren.

Verwenden von DKMs

Damit DKMS funktioniert, sollte die Modulquelle auf dem System vorhanden sein, in dem wir das Modul erstellen, und der Standortpfad sollte wie sein '/usr/src/-/' Und denken Sie daran, dies ist die erste Anforderung von DKMS. Eine weitere Anforderung ist eine Datei namens 'DKMS.conf ', in dem das Erstellen und Installieren eines Moduls leitet. Und nur um zu erwähnen, DKMS sollte bereits auf dem System installiert sein. Sobald alles vorhanden ist, können wir dem DKMS -Baum ein Modul hinzufügen.

Lassen Sie uns diese Schritte sehen, indem Sie ein Demo -Modul installieren 'Demo-V0.1.Teer.GZ ' mit DKMS. Wir tun dieses Beispiel nur zum Zweck, zu verstehen, wie DKMS funktioniert. Nachdem wir die Datei extrahiert haben, müssen wir 'CD' im Inneren:

# CD Demo-V0.1/

Erstellen Sie nun a DKMs.Conf Datei, die die folgenden Zeilen enthält:

Make = "make -c src/kerneldir =/lib/modules/$ kernelver/build"
Clean = "make -c $ kernel_source_dir m = $ dkms_tree/$ package_name/$ package_version/bauen sauber"
Bau_module_name = ”Demo”
Bau_module_location = "src"
Package_name = Demo
Package_version = 0.1
Remake_initrd = "Ja"
Autoinstall = ja

Jetzt, wo unser DKMs.Conf Die Datei ist fertig. Wir können unser Demo -Modul hinzufügen als:

# DKMS add -m Demo -v 0 hinzufügen.1

Die Schönheit des DKMS ist, dass wir die Kernel -Version angeben können, gegen die wir hier erstellen oder Modul erstellen möchten:

# DKMS Build -m Demo -v 0.1 -k 5.13.0-27

Wenn wir den Kernel nicht angeben, erstellt DKMS das Modul mit der aktuellen Kernelversion.

Wenn alles gut läuft, können wir das Modul jetzt mit:

# DKMS Installation -m Demo -v 0 installieren.1

Wenn wir unseren Kernel aktualisieren oder die Hardwarearchitektur ändern, muss ein Modul wieder manuell wieder aufgebaut werden. Mit Hilfe von DKMS wird dieses Verfahren überflüssig, da das DKMS diese Kernelmodule für jeden auf dem System vorhandenen Kernel dynamisch erstellt.

Abschluss

Tools wie DKMS haben den Administratoren, Fahrerentwicklern und anderen sehr geholfen, die Kernel -Management -Aufgabe zu reduzieren. Während sich die Endbenutzer nicht darum kümmern, wie das zugrunde liegende System funktioniert, bis ihre Ziele erreicht sind, können sich DKMS Entwicklern und Administratoren auf ihre Arbeit konzentrieren.