11.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 gibt es zwei Mechanismen, Treiber in den Kernel zu integrieren:

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.

Die Kernelmodule werden in dem Verzeichnis /lib/modules/<Version> abgelegt, wobei Version der momentanen Version des Kernels entspricht.

11.4.1. Erkennung der akutellen Hardware mit hwinfo

Unter SUSE LINUX steht Ihnen das Programm hwinfo zur Verfügung, mit der die aktuelle Hardware des Rechners erkannt werden kann, und die verfügbaren Treiber zugeordnet 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 folgenden Befehl ein:

hwinfo --scsi 
   

Die Ausgaben dieses Hilfsprogrammes stehen Ihnen auch in YaST im Modul Hardware-Information zur Verfügung.

11.4.2. Umgang mit Modulen

Folgende Befehle zum Umgang mit Modulen stehen zur Verfügung:

insmod

Mit dem Befehl insmod wird das angegebene Modul geladen. Das Modul wird in einem Unterverzeichnis von /lib/modules/<Version> gesucht. Zugunsten von modprobe (s. u.) sollte insmod nicht mehr verwendet werden.

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 stellt man sicher, dass beim Laden eines Modules alle davon abhängigen Module ebenfalls automatisch geladen werden. Die Datei mit den Modul-Abhängigkeiten beim Start des Systems automatisch generiert, sofern sie noch nicht existiert.

modprobe

Laden bzw. Entladen eines Modules mit 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 zum Laden mittels 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 Manual-Pages.

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 und man entsprechende Vorkehrungen getroffen hat; vgl. jedoch Abschnitt 11.4.4. “Kmod – der Kernel Module Loader”.

modinfo

Zeigt Informationen zu einem Modul an.

11.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.dbeeinflusst; 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-Treiber oder Netzwerktreiber). Die hier eingetragenen Parameter werden in den Kernel Sourcen beschrieben. Installieren Sie dazu das Paket kernel-source und lesen Sie die Dokumentation im Verzeichnis /usr/src/linux/Documentation.

11.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 den Kmod verwenden zu können, müssen Sie bei der Kernel-Konfiguration die Option Kernel module loader (CONFIG_KMOD) aktivieren.

Der 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. Server-Rechner, die spezielle Aufgaben zu erfüllen haben und nur wenige Treiber benötigen, werden aus Performance-Gründen einen „monolithischen“ Kernel bevorzugen.