dkms versus Modulassistent

7

module-assistantist seit einiger Zeit die De-facto-Methode zum Kompilieren und Erstellen von binären Debian-Paketen, die Kernelmodule enthalten. In jüngerer Zeit ist ein vergleichbares Dienstprogramm erschienen - dkms.

Wenn jemand Erfahrung mit beiden hat, vergleichen Sie bitte die Vor- und Nachteile der Verwendung von beiden gegenüber den anderen.

Ein Punkt, der in einer Antwort angesprochen werden muss, ist, ob dkmsbinäre Debian-Pakete auch für Kernelmodule erstellt werden und wenn ja, wie und wenn ja, welche Unterschiede zwischen den von m-aund erstellten Paketen dkmsbestehen, falls vorhanden.

Ich persönlich habe es nie benutzt dkms, aber ich habe es module-assistantüber viele Jahre sporadisch benutzt , und es war eine gute Erfahrung. Ich habe keine unmittelbaren Pläne zum Experimentieren dkms, daher denke ich nicht, dass ich die richtige Person bin, um eine Antwort zu schreiben.

Zufällige googeln eine Diskussion gefunden hier , auch dieses .

Es ist unnötig zu erwähnen, dass jede Antwort auf Erfahrungen aus erster Hand basieren sollte und nicht auf dem Kopieren aus Webforen. Ein Beispiel mit beiden wäre schön. Möglicherweise nvidia-kernel, da das ziemlich häufig verwendet wird. Ja, ich weiß, dass es sich um ein proprietäres Kernelmodul handelt. :-(

UPDATE: Danke an Jordanm für seine Antwort. Ich hätte gerne etwas, das etwas detaillierter darauf eingeht, was unter der Haube vor sich geht, für beide m-aund dkmsobwohl ich dies anfangs nicht erwähnt habe. Es hört sich auch so an, als würde die meiste Zeit dkmstransparent und automatisch arbeiten. Aber was sind die Fehlermodi von dkms. Wie gehen beide mit manuell kompilierten / installierten Kerneln um? Entweder von einem Binärpaket oder einer lokalen Installation installiert.

Faheem Mitha
quelle
1
Dies sind keine zufälligen Webforen, auf die Sie verlinkt haben. Sie sind eigentlich Diskussionen zwischen Debian-Entwicklern. Sie sind ziemlich alt und dkms hat seitdem Verbesserungen vorgenommen (z. B. die Handhabung mehrerer Kernelversionen).
Jordan
@ Jordanm ja, ich weiß was sie sind. Und ich kann sehen, dass sie (relativ) alt sind. Sie waren nur zur Veranschaulichung gedacht m-aund dkmsgelten als vergleichbar.
Faheem Mitha

Antworten:

5

Der Hauptunterschied aus der Sicht eines Benutzers besteht darin, dass module-assistant( m-a) ein Tool zum manuellen Kompilieren eines Kernelmoduls ist, während dkmsdies automatisch ohne Benutzereingriff geschieht. Wenn Sie verwenden m-aund das Kernel-Paket aktualisiert wird, müssen Sie das Modul mit manuell neu kompilieren m-a. Da m-anur für den Kernel kompiliert wird, den Sie gerade ausführen, bedeutet dies, dass Sie beim nächsten Neustart eine fehlerhafte Benutzeroberfläche haben, wenn das Modul, das Sie benötigen, m-aein Grafiktreiber ist.

Die Trigger für dkmswerden bei jeder Kernelpaketinstallation ausgeführt und stellen sicher, dass das Modul für jeden Kernel auf dem System installiert ist. Ich persönlich kann mir keinen Grund für einen Endbenutzer vorstellen, diese weiterhin zu verwenden m-a.

Hier sind einige Beispiele für m-avs dkmsfür das nvidiaKernelmodul:

Erstellen eines Moduls mit Modulassistent:

apt-get install module-assistant nvidia-kernel-source
m-a prepare # install the header package for the current kernel and compilation tools 
m-a install nvidia-kernel-source # compile the source into a .deb and install it

Erstellen eines Moduls mit dkms:

apt-get install nvidia-kernel-dkms

Kernel-Upgrade mit module-assistant:

apt-get upgrade # assumed to upgrade kernel
# reboot
m-a prepare
m-a install nvidia-kernel-source

Kernel-Upgrade mit dkms:

apt-get upgrade # assumed to upgrade kernel
Jordanm
quelle
baut dkms auch binäre Debian-Pakete? Können Sie auch angeben, ob m-a install nvidia-kernel-sourcedie Binärmodulpakete erstellt und installiert werden sollen? Ich nehme an, dkmsdas Modul ist transparent aufgebaut. Was passiert mit manuell kompilierten Kerneln?
Faheem Mitha
Sie haben zwei Abschnitte. Die ersten beiden heißen nur "Modulassistent" und "dkms". Können Sie genauer sagen, wofür diese sind? Die letzten beiden sind klarer - "Kernel-Upgrade mit Modul-Assistent" und "Kernel-Upgrade mit dkms".
Faheem Mitha
m-aerstellt und installiert ein Debian-Paket. m-awürde nicht mit einem manuell kompilierten Kernel funktionieren, es sei denn, er wurde über das Debian-Paket installiert. Ich bin mir nicht sicher, wie ich dkmsdamit umgehen würde.
Jordan
@FaheemMitha Klarstellung zu Beispielen hinzugefügt
Jordanm
Lassen Sie uns zwischen den Fällen unterscheiden, in denen ein manuell installierter Kernel über ein Debian-Paket installiert wurde und in denen dies nicht der Fall ist. In letzterem Fall stellt sich die Frage, ob der Benutzer die Option hätte, entweder dkmsund zu verwenden m-a. Wenn das erstere (binäres Kernel-Paket) ich nehme an, würden sie, aber Details wären interessant. Ich weiß, dass es m-amit manuell installierten binären Kernel-Paketen funktioniert, weil ich es mit ihnen verwendet habe. Sie müssen sicherstellen, dass auch die Header erstellt werden - ein weiteres Debian-Paket.
Faheem Mitha