Was ist der Unterschied zwischen insmod und modprobe?

Was ist der Unterschied zwischen insmod und modprobe?

Gibt es Unterschiede zwischen insmod und modprobe?

Antwort1

modprobeliest die Module aus /lib/modules/$(uname -r)/modules.dep.bin(oder ohne .binSuffix, wenn die andere Datei nicht verfügbar ist). Aus derselben Datei werden Abhängigkeiten geladen.

modprobeakzeptiert den Namen einer .koDatei in /lib/modules/$(uname -r)(z. B. nvidia-currentfür die Datei dkms/nvidia-current.ko) und Aliase ( modules.alias.bin). Builtins ( modules.alias.bin) werden ebenfalls erkannt, aber da diese Module standardmäßig geladen werden, ist es nicht sinnvoll, diese Art von Modulen zu modprobieren.

insmodakzeptiert dagegen Pfade zu Dateien. Das Modul muss nicht in liegen /lib/modules/$(uname -r), aber Abhängigkeiten werden nicht automatisch geladen. Dies ist das untergeordnete Programm, das modprobezum Laden von Modulen verwendet wird.

Andere mit Modulen verbundene Programme sind rmmodund modinfo.

rmmodentfernt einen Kernelnamen basierend auf dem Namen aus /proc/modules. Dieser Name muss nicht notwendigerweise derselbe sein wie der an übergebene modprobe(für die nvidia-currentDatei ist dies nvidiabeispielsweise der Fall).

modinfoakzeptiert einen Dateinamen oder den Dateinamen ohne .koSuffix in /lib/modules/$(uname -r).

Antwort2

Pro man insmod:

Die meisten Benutzer werden stattdessen modprobe verwenden wollen, das intelligenter ist und Modulabhängigkeiten verarbeiten kann.

Antwort3

modprobeist ein intelligenter Befehl, der beim Laden eines Moduls nach Abhängigkeiten sucht. Angenommen, ich habe ein Modul geladen, das Symbole hat, die in einem anderen Modul definiert sind (dieser Modulpfad ist im Hauptmodul angegeben). Also modprobewerden das Hauptmodul und das abhängige Modul geladen.

Wenn jedoch insmodverwendet wird, wird die Abhängigkeit nicht geladen und es treten Kompilierungsfehler wie auf Unresolved symbols. In diesem Fall müssen wir manuell nach abhängigen Modulen suchen und diese laden, um die Fehler zu beheben.

Antwort4

Der Befehl modprobe bietet mehr Funktionen als die grundlegenderen Dienstprogramme insmod und rmmod. modprobe fügt dem Linux-Kernel auf intelligente Weise ein Modul hinzu oder entfernt es daraus. Beachten Sie, dass es aus praktischen Gründen keinen Unterschied zwischen _ und - in Modulnamen gibt (es wird eine automatische Unterstrichkonvertierung durchgeführt). modprobe sucht im Modulverzeichnis /lib/modules/ uname -rnach allen Modulen und anderen Dateien, mit Ausnahme der optionalen Konfigurationsdateien im Verzeichnis /etc/modprobe.d (einige Distributionen verwenden stattdessen die Datei /etc/modprobe.conf).

mehr wissen

verwandte Informationen