Antworten:
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)
(zB nvidia-current
fü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.
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, mit modprobe
dem Module geladen werden.
Weitere modulbezogene Programme sind rmmod
und modinfo
.
rmmod
Entfernt 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-current
Datei ist dies nvidia
beispielsweise).
modinfo
akzeptiert einen Dateinamen oder den Dateinamen ohne .ko
Suffix in /lib/modules/$(uname -r)
.
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). So modprobe
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 geben Unresolved symbols
. In diesem Fall müssen wir manuell nach abhängigen Modulen suchen und diese laden, um die Fehler zu beheben.
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