9.4. Kernel-Module

Es gibt eine große Vielfalt an PC-Hardware-Komponenten. Um diese Hardware richtig benutzen zu können, braucht man einen „Treiber“, über den das Betriebssystem (bei Linux der Kernel) die Hardware richtig ansprechen kann. Generell kann der Kernel mit zwei verschiedenen Arten von Treibern arbeiten:

Welche Treiber fest zum Kernel gebunden und welche als Module realisiert werden, wird bei der Konfiguration des Kernels festgelegt. Alle Kernel-Komponenten, die nicht zwingend während des Bootvorgangs benötigt werden, sollten als Module realisiert werden. So wird sichergestellt, dass der Kernel nicht zu groß wird und dass der Kernel ohne Schwierigkeiten vom BIOS und einem beliebigen Bootloader geladen werden kann. Der Festplatten-Treiber, Unterstützung für Ext2 und ähnliche Dinge sind also im Regelfall direkt in den Kernel hineinzukompilieren, Unterstützung für isofs, msdos oder sound sollten in jedem Fall als Module kompiliert werden.

[Tip]Tipp

Treiber, die für den Bootvorgang benötigt werden, können auch als Module kompiliert werden, wenn sichergestellt ist, dass sie beim Booten mit Hilfe der Initial Ramdisk geladen werden.

Die Kernelmodule werden im Verzeichnis /lib/modules/<version> abgelegt, wobei version für die Version des betreffenden Kernels steht.

9.4.1. Erkennung der aktuellen Hardware mit hwinfo

hwinfo kann die Hardware des Rechners erkennen und die Treiber auswählen, die zum Betrieb dieser Hardware benötigt werden. Eine kurze Hilfestellung zu diesem Programm bekommen Sie mit dem Befehl hwinfo --help. Um zum Beispiel die Daten der eingebauten SCSI-Geräte zu bekommen geben Sie den Befehl hwinfo --scsi ein. Die Ausgaben dieses Hilfsprogrammes stehen Ihnen auch in YaST im Modul Hardware-Information zur Verfügung.

9.4.2. Umgang mit Modulen

Die Hilfprogramme zur Handhabung von Kernelmodulen sind im Paket module-init-tools enthalten. Dieses Paket stellt Ihnen die folgenden Befehle zur Verfügung:

insmod

Mit dem Befehl insmod wird das angegebene Modul geladen. Das Modul wird in einem Unterverzeichnis von /lib/modules/<version> gesucht. Statt insmod sollten Sie jedoch besser modprobe verwenden, da modprobe die Abhängigkeiten berücksichtigt, wie sie zwischen verschiedenen Modulen bestehen können.

rmmod

Entlädt das angegebene Modul. Dies ist natürlich nur dann möglich, wenn die entsprechende Funktionalität des Kernels nicht mehr verwendet wird. So ist es nicht möglich, das Modul isofs zu entladen, wenn noch eine CD gemountet ist.

depmod

Dieser Befehl erzeugt eine Datei mit dem Namen modules.dep im Verzeichnis /lib/modules/<version>, in der die Abhängigkeiten der einzelnen Module untereinander verzeichnet sind. Damit wird sichergestellt, dass beim Laden eines Modules alle davon abhängigen Module ebenfalls geladen werden. Diese Datei wird beim Start des Systems automatisch generiert, sofern sie noch nicht existiert.

modprobe

Lädt bzw. entlädt ein Modul unter Berücksichtigung der Abhängigkeiten von anderen Modulen. Dieser Befehl ist sehr mächtig und kann für eine Reihe weiterer Zwecke eingesetzt werden (etwa Durchprobieren aller Module eines bestimmten Typs, bis eines erfolgreich geladen werden kann). Im Gegensatz zu insmod wertet modprobe die Datei /etc/modprobe.conf aus und sollte daher generell zum Laden von Modulen verwendet werden. Für eine ausführliche Erklärung sämtlicher Möglichkeiten lesen Sie bitte die zugehörigen Manualpages.

lsmod

Zeigt an, welche Module gegenwärtig geladen sind und von wie vielen anderen Modulen sie verwendet werden. Module, die vom Kernel-Daemon geladen wurden, sind durch ein nachfolgendes autoclean gekennzeichnet. Die Kennzeichnung mit autoclean weist darauf hin, dass diese Module automatisch wieder entfernt werden, wenn sie längere Zeit nicht benutzt wurden.

modinfo

Zeigt Informationen zu einem Modul an. Da diese aus dem Modul selbst extrahiert werden, können nur die Informationen angezeigt werden, die von den Treiberentwicklern eingebaut wurden. Zu den Angaben, die enthalten sein können, gehören der Autor, eine Beschreibung, die Lizenz, Modul-Parameter, Abhängigkeiten und Aliase.

9.4.3. /etc/modprobe.conf

Das Laden von Modulen wird über die Dateien /etc/modprobe.conf /etc/modprobe.conf.local und das Verzeichnis /etc/modprobe.d beeinflusst; vgl. die Manualpage man modprobe.conf. In dieser Datei können auch die Parameter für solche Module eingetragen werden, die direkt auf die Hardware zugreifen und daher auf das spezifische System eingestellt werden müssen, zum Beispiel CD-ROM- oder Netzwerktreiber. Die hier eingetragenen Parameter werden in den Kernel-Quellen beschrieben. Installieren Sie dazu das Paket kernel-source und lesen Sie die Dokumentation im Verzeichnis /usr/src/linux/Documentation.

9.4.4. Kmod — der Kernel Module Loader

Der eleganteste Weg bei der Verwendung von Kernel-Modulen ist der Einsatz des „Kernel Module Loader“. Kmod wacht im Hintergrund und sorgt dafür, dass benötigte Module durch modprobe-Aufrufe automatisch geladen werden, sobald auf die entsprechende Funktionalität des Kernels zugegriffen wird.

Um Kmod verwenden zu können, müssen Sie bei der Kernel-Konfiguration die Option Kernel module loader (CONFIG_KMOD) aktivieren. Kmod ist nicht dafür ausgelegt, Module wieder automatisch zu entladen; bei der heutigen RAM-Ausstattung der Rechner wäre der Gewinn an Arbeitsspeicher nur marginal.


SUSE LINUX Administrationshandbuch 9.3