GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Unterschied zwischen insmod und modprobe

Während der Entwicklung verwenden Sie normalerweise insmod, um ein Modul zu laden, und es sollte der Pfad des zu ladenden Moduls angegeben werden:

$ insmod filename [module-options]

Es ist eine Low-Level-Form des Ladens von Modulen, die die Grundlage für andere Methoden zum Laden von Modulen bildet und diejenige ist, die wir in diesem Buch verwenden werden. Auf der anderen Seite gibt es modprobe, das hauptsächlich von Systemadministratoren oder in einem Produktionssystem verwendet wird. modprobe ist ein cleverer Befehl, der die Datei modules.dep analysiert, um zuerst Abhängigkeiten zu laden, bevor das angegebene Modul geladen wird. Es handhabt automatisch Modulabhängigkeiten, wie es ein Paketmanager tut:

$ modprobe module-name
insmod modprobe
Lädt das als „insmod /path/to/module.ko“ angegebene Modul Lädt das Modul nur in /lib/modules/$(uname -r). „modprobe /home/test/hello.ko“ funktioniert nicht
Abhängigkeiten, falls vorhanden, werden nicht geladen modprobe berechnet Abhängigkeiten, lädt die Abhängigkeiten und dann das Hauptmodul

Wie modprobe Abhängigkeiten berechnet?

Modprobe hängt vom depmod-Tool ab, um Abhängigkeiten zu berechnen. depmod berechnet Abhängigkeiten aller im Ordner /lib/modules/$(uname -r) vorhandenen Module und legt die Abhängigkeitsinformationen in der Datei /lib/modules/$(uname -r)/modules.dep ab

Z.B. kernel/drivers/net/wireless/admtek/adm8211.ko:kernel/net/mac80211/mac80211.ko kernel/net/wireless/cfg80211.ko kernel/drivers/misc/eeprom/eeprom_93cx6.ko

In diesem Fall wird zuerst eeprom_93cx6.ko, cfg80211.ko geladen und dann adm8211.ko

Module werden von rechts nach links geladen und von links nach rechts entfernt. Beim Entfernen wird also adm8211.ko entfernt, dann cfg80211.ko und schließlich eeprom_93cx6.ko. Wir können die Datei modules.dep neu laden, indem wir den Befehl „depmod -a“

ausführen

Zusammenfassung

insmod ist ein Systemverwaltungsbefehl zum Laden des Moduldateinamens in den Kernel. Einfacher, aber weniger flexibel als der Befehl modprobe. Fehlermeldungen von insmod können vage sein, da der Kernel Moduloperationen intern durchführt und daher Fehlerinformationen an das Kernel-Log statt an die Standardausgabe sendet; siehe dmesg.

Die Informationen in den module.*-Dateien werden vom Befehl modprobe verwendet, um ein Modul anhand des Namens und nicht anhand des vollständigen Pfads zu lokalisieren. modprobe hat viele andere Funktionen, die im Handbuch beschrieben sind.

Die Modulabhängigkeitsinformationen werden auch von Gerätemanagern verwendet, insbesondere von udev. Wenn neue Hardware erkannt wird, beispielsweise ein neues USB-Gerät, wird der udevd-Daemon benachrichtigt und an den Anbieter weitergeleitet, und Produkt-IDs werden von der Hardware gelesen. udevd durchsucht die Modulabhängigkeitsdateien nach einem Modul, das diese IDs registriert hat. Wenn eine gefunden wird, wird sie mit modprobe.

geladen


Linux
  1. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  2. Was ist der Unterschied zwischen module_init und init_module in einem Linux-Kernel-Modul?

  3. Was ist der Unterschied zwischen strtok_r und strtok_s in C?

  4. Was ist der Unterschied zwischen fsck und e2fsck?

  5. Was ist der Unterschied zwischen ls und l?

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist der Unterschied zwischen apt und dem Befehl apt-get?

Was ist der Unterschied zwischen Git Switch und Checkout?

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?