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:
Die Treiber können fest in den Kernel einkompiliert sein. Solche Kernel „aus einem Stück“ bezeichnen wir in diesem Buch auch als monolithische Kernel. Manche Treiber können nur in dieser Form verwendet werden.
Die Treiber liegen als Module vor, die bei Bedarf in den Kernel geladen werden. Der Kernel wird diesem Fall als modularisierter Kernel bezeichnet. Ein solcher Kernel hat den Vorteil, dass wirklich nur die benötigten Treiber geladen sind und dass der Kernel keinen unnötigen Ballast enthält.
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.
![]() | 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.
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.
Die Hilfprogramme zur Handhabung von Kernelmodulen sind im Paket
module-init-tools enthalten. Dieses Paket stellt
Ihnen die folgenden Befehle zur Verfügung:
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.
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.
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.
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.
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.
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.
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.
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
(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.