Wenn der Kernel ein neues Gerät erkennt, führt er das Programm aus modprobe
und übergibt ihm einen Namen, der das Gerät identifiziert. Die meisten Geräte werden durch registrierte Nummern für einen Hersteller und ein Modell identifiziert , z. B. PCI- oder USB- Kennungen. Das modprobe
Programm durchsucht die Modul-Alias-Tabelle nach dem Namen der Datei, die den Treiber für dieses bestimmte Gerät enthält. Ein ähnliches Prinzip gilt für Treiber für Dinge, die keine Hardwaregeräte sind, wie Dateisysteme und kryptografische Algorithmen. Weitere Einzelheiten finden Sie unter Debian erkennt nach dem Neustart keine serielle PCI-Karte/lib/modules/VERSION/modules.alias
Sobald modprobe identifiziert hat, welche Moduldatei ( .ko
) den angeforderten Treiber enthält, lädt es die Moduldatei in den Kernel: Der Modulcode wird dynamisch in den Kernel geladen . Wenn das Modul erfolgreich geladen wurde, wird es in der Liste von angezeigt lsmod
.
Das automatische Laden von Modulen erfolgt, wenn der Kernel neue Hot-Plug-fähige Hardware erkennt, z. B. wenn Sie ein USB-Peripheriegerät anschließen. Das Betriebssystem führt auch einen Durchlauf durch, bei dem die gesamte Hardware, die sich zu Beginn des Startvorgangs auf dem System befindet, aufgelistet wird, um Treiber für Peripheriegeräte zu laden, die zum Zeitpunkt des Startvorgangs vorhanden sind.
Es ist auch möglich, das Laden eines Moduls manuell mit dem Befehl modprobe
oder anzufordern insmod
. Die meisten Distributionen enthalten ein Startskript, das die in aufgelisteten Module lädt /etc/modules
. Module können auch geladen werden, wenn sie von einem Modul abhängen: Wenn Modul A von Modul B abhängt, wird modprobe A
B vor dem Laden von A geladen .
Sobald ein Modul geladen ist, bleibt es geladen, bis es explizit entladen wird, selbst wenn alle Geräte, die diesen Treiber verwenden, getrennt wurden. Vor langer Zeit gab es einen Mechanismus zum automatischen Entladen nicht verwendeter Module, der jedoch entfernt wurde, wenn ich mich richtig erinnere, als udev auf die Bühne kam. Ich vermute, dass das automatische Entladen von Modulen kein alltägliches Merkmal ist, da die Systeme, die es normalerweise benötigen würden, meistens Desktop-PCs sind, die sowieso viel Speicher haben (auf der Skala des Treibercodes).
/etc/modules
.rt2800usb
ist in der Ausgabe vonlsmod
und bedeutet das, dass ich sein Gerät vor dem Booten an meinen Computer angeschlossen habe?