Was ist der Unterschied zwischen insmod und modprobe?

35

Gibt es Unterschiede zwischen insmod und modprobe?

NES
quelle

Antworten:

28

Per man insmod:

Die meisten Benutzer möchten stattdessen modprobe verwenden, was cleverer ist und mit Modulabhängigkeiten umgehen kann.

8128
quelle
2
Ah, tut mir leid, habe diese Zeile verpasst.
NES
39

modprobeLiest die Module aus /lib/modules/$(uname -r)/modules.dep.bin(oder ohne das .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)(zB 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 modifizieren.

insmodAuf der anderen Seite akzeptiert Pfade zu Dateien. Das Modul muss sich nicht in befinden /lib/modules/$(uname -r), aber Abhängigkeiten werden nicht automatisch geladen. Dies ist das untere Programm, mit modprobedem Module geladen werden.

Weitere modulbezogene Programme sind rmmodund modinfo.

rmmodEntfernt einen Kernelnamen basierend auf dem Namen von /proc/modules. Dieser Name muss nicht unbedingt mit dem Namen übereinstimmen, an den er übergeben wurde modprobe(für die nvidia-currentDatei ist dies nvidiabeispielsweise).

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

Lekensteyn
quelle
3

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

Aber wenn insmodverwendet wird, wird es nicht die Abhängigkeit laden, und damit wird es Kompilierungsfehlern wie geben Unresolved symbols. In diesem Fall müssen wir manuell nach abhängigen Modulen suchen und diese laden, um die Fehler zu beheben.

Shalini Guleria
quelle
0

Das Dienstprogramm modprobe ist eine kurze Erwähnung wert. modprobe lädt wie insmod ein Modul in den Kernel. Es unterscheidet sich darin, dass es das zu ladende Modul untersucht, um festzustellen, ob es auf Symbole verweist, die derzeit nicht im Kernel definiert sind. Wenn solche Referenzen gefunden werden, sucht modprobe im aktuellen Modulsuchpfad nach anderen Modulen, die die relevanten Symbole definieren. Wenn modprobe die Module findet (die vom zu ladenden Modul benötigt werden), lädt es sie auch in den Kernel. Wenn Sie in dieser Situation stattdessen "insmod" verwenden, schlägt der Befehl mit der Meldung "Ungelöste Symbole" fehl, die in der Systemprotokolldatei verbleibt

user487054
quelle