Gibt es Unterschiede zwischen insmod und modprobe?
35
Per man insmod
:
Die meisten Benutzer möchten stattdessen modprobe verwenden, was cleverer ist und mit Modulabhängigkeiten umgehen kann.
modprobe
Liest die Module aus/lib/modules/$(uname -r)/modules.dep.bin
(oder ohne das.bin
Suffix, wenn die andere Datei nicht verfügbar ist). Aus derselben Datei werden Abhängigkeiten geladen.modprobe
akzeptiert den Namen einer.ko
Datei in/lib/modules/$(uname -r)
(zBnvidia-current
für die Dateidkms/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.insmod
Auf 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, mitmodprobe
dem Module geladen werden.Weitere modulbezogene Programme sind
rmmod
undmodinfo
.rmmod
Entfernt einen Kernelnamen basierend auf dem Namen von/proc/modules
. Dieser Name muss nicht unbedingt mit dem Namen übereinstimmen, an den er übergeben wurdemodprobe
(für dienvidia-current
Datei ist diesnvidia
beispielsweise).modinfo
akzeptiert einen Dateinamen oder den Dateinamen ohne.ko
Suffix in/lib/modules/$(uname -r)
.quelle
modprobe
ist 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). Somodprobe
lädt das Hauptmodul und die abhängige Modul.Aber wenn
insmod
verwendet wird, wird es nicht die Abhängigkeit laden, und damit wird es Kompilierungsfehlern wie gebenUnresolved symbols
. In diesem Fall müssen wir manuell nach abhängigen Modulen suchen und diese laden, um die Fehler zu beheben.quelle
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
quelle