Der Linux-Kernel ist modular aufgebaut. Beim Booten wird nur ein minimaler residenter Kernel in den Speicher geladen. Wenn ein Benutzer ein Feature anfordert, das nicht im residenten Kernel vorhanden ist, wird ein Kernelmodul, manchmal auch als Treiber bezeichnet, dynamisch in den Speicher geladen.
Während der Installation wird die Hardware auf dem System geprüft. Basierend auf dieser Prüfung und vom Benutzer bereitgestellten Informationen entscheidet das Installationsprogramm, welche Module beim Booten geladen werden. Das Installationsprogramm stellt den dynamischen Lademechanismus auf transparentes Arbeiten ein.
Wenn neue Hardware nach der Installation hinzugefügt werden soll und diese ein Kernelmodul benötigt, muss das System so konfiguriert werden, dass des richtige Kernelmodul für die neue Hardware geladen wird. Wird das System mit der neuen Hardware gebootet, läuft das Programm Kudzu, erkennt die neue Hardware wenn diese unterstützt wird, und konfiguriert das Modul dafür. Das Modul kann auch manuell eingestellt werden, indem Sie die Konfigurationsdatei /etc/modules.conf des Moduls bearbeiten.
![]() | Anmerkung |
---|---|
Grafikkartenmodule, die zum Anzeigen des X Window Systems-Schnittstelle verwendet werden, sind Teil des XFree86-Pakets, nicht des Kernels. Dieses Kapitel kann daher nicht auf diese angewendet werden. |
Enthält Ihr System zum Beispiel bei der Installation einen SMC EtherPower 10 PCI-Netzwerkadapter, enthält die Konfigurationsdatei des Moduls folgende Zeile:
alias eth0 tulip |
Wenn Sie eine zweite, zur ersten identische, Netzwerkkarte zu Ihrem System hinzufügen, müssen Sie folgende Zeile zu /etc/modules.conf hinzufügen:
alias eth1 tulip |
Die alphabetische Liste der Kernelmodule und die von den Modulen unterstützte Hardware finden Sie im Red Hat Linux Referenzhandbuch.
Eine Reihe von Befehlen für die Verwaltung von Kernelmodulen ist erhältlich, wenn das modutils-Paket installiert ist. Sie können mit diesen Befehlen feststellen, ob ein Modul erfolgreich geladen wurde oder wenn Sie verschiedene Module für neue Hardware ausprobieren.
Mithilfe des Befehls /sbin/lsmod wird eine Liste der aktuell geladenen Module angezeigt. Zum Beispiel:
Module Size Used by Not tainted iptable_filter 2412 0 (autoclean) (unused) ip_tables 15864 1 [iptable_filter] nfs 84632 1 (autoclean) lockd 59536 1 (autoclean) [nfs] sunrpc 87452 1 (autoclean) [nfs lockd] soundcore 7044 0 (autoclean) ide-cd 35836 0 (autoclean) cdrom 34144 0 (autoclean) [ide-cd] parport_pc 19204 1 (autoclean) lp 9188 0 (autoclean) parport 39072 1 (autoclean) [parport_pc lp] autofs 13692 0 (autoclean) (unused) e100 62148 1 microcode 5184 0 (autoclean) keybdev 2976 0 (unused) mousedev 5656 1 hid 22308 0 (unused) input 6208 0 [keybdev mousedev hid] usb-uhci 27468 0 (unused) usbcore 82752 1 [hid usb-uhci] ext3 91464 2 jbd 56336 2 [ext3] |
In jeder Zeile gibt die erste Spalte den Namen des Moduls, die zweite Spalte die Größe des Moduls und die dritte Spalte die Verwendungshäufigkeit des Moduls an.
Die Informationen hinter der Verwendungshäufigkeit variieren von Modul zu Modul leicht. Wenn (unused) aufgelistet wird, wird das jeweilige Modul zur Zeit nicht verwendet. Wird (autoclean) in einer Zeile angezeigt, kann dieses Modul mit dem Befehl rmmod -a automatisch bereinigt werden. Wenn dieser Befehl ausgeführt wird, werden alle Module, die als autoclean markiert sind und seit dem letzten autoclean nicht verwendet wurden, entfernt. Red Hat Linux führt diesen autoclean-Vorgang nicht standardmäßig aus.
Wird ein Modulname am Ende der Zeile in Klammern angegeben, ist das Modul in Klammern anhängig vom in der ersten Spalte der Zeile angegebenen Modul. Zum Beispiel in der Zeile
usbcore 82752 1 [hid usb-uhci] |
hängen die hid und usb-uhci Kernelmodule vom usbcore Modul ab.
Die /sbin/lsmod Ausgabe ist die gleiche wie /proc/modules.
Um ein Kernelmodul zu laden, verwenden Sie de Befehl /sbin/modprobe gefolgt vom Namen des Kernelmoduls. Standardmäßig versucht modprobe das Modul aus den Unterverzeichnissen /lib/modules/<kernel-version>/kernel/drivers/ zu laden. Es gibt ein Unterverzeichnis für jeden Modultyp, zum Beispiel ist das Unterverzeichnis net/ für Netzwerk-Schnittstellen-Treiber. Manche Kernelmodule verfügen über Modulabhängigkeiten, d.h. andere Module müssen zuerst geladen werden, um das Laden dieser Module zu ermöglichen. Der Befehl /sbin/modprobe prüft diese Abhängigkeiten und lädt die abhängigen Module, bevor die angegebenen Module geladen werden.
So lädt zum Beispiel der Befehl
/sbin/modprobe hid |
alle abhängigen Module und dann das Modul hid.
Um alle Befehle so auf dem Bildschirm anzuzeigen, wie diese von /sbin/modprobe ausgeführt werden, verwenden Sie die Option -v. Beispiel:
/sbin/modprobe -v hid |
Es wird folgendes oder ähnliches angezeigt:
/sbin/insmod /lib/modules/2.4.18-7.95/kernel/drivers/usb/hid.o Using /lib/modules/2.4.18-7.95/kernel/drivers/usb/hid.o Symbol version prefix 'smp_' |
Mit dem Befehl /sbin/insmod können Sie auch Kernelmodule laden, er löst jedoch keine Abhängigkeiten. Aus diesem Grund wird die Verwendung des /sbin/modprobe Befehls empfohlen.
Um Kernelmodule zu entfernen, verwenden Sie den Befehl /sbin/rmmod, gefolgt vom Modulnamen. Das rmmod Utility entfernt nur Module, die nicht verwendet werden, und die keine Abhängigkeiten zu anderen verwendeten Modulen aufweisen.
So entfernt zum Beispiel der Befehl
/sbin/rmmod hid |
das Kernelmodul hid.
Eine weitere, nützliche Utility ist modinfo. Mit dem Befehl /sbin/modinfo können Sie Informationen über ein Kernelmodul anzeigen. Die allgemeine Syntax ist folgende:
/sbin/modinfo [options] <module> |
Optionen sind unter anderem -d zur Anzeige einer Kurzbeschreibung des Moduls sowie -p zur Auflistung der vom Modul unterstützten Parameter. Die vollständige Liste der Optionen finden Sie auf der modinfo man-Seite (man modinfo).
Zurück | Zum Anfang | Vor |
Überprüfen des Bootloader | Zum Kapitelanfang | Zusätzliche Ressourcen |