|
Eine große Stärke des Linux Kernels ist, dass sich viele Elemente von ihm modularisieren lassen. Dies betrifft vornehmlich die Treiber für die Hardware und Dateisysteme, welche im System nur dann geladen werden, wenn sie auch benötigt werden.
Das Konzept der Modularisierung bringt einige wesentliche Vorteile mit sich:
- Optimierter Speicherverbrauch
- Austauch von Treibern im laufenden System
- Aktuallisierung von Treibern im laufenden System
Zugegeben, nicht alle Treiber lassen sich so einfach im laufenden System austauschen, ohne dass es nicht doch zumindest zu einem kurzzeitigen Ausfall diverser Systembereiche kommen wird. Aber dieser Zeitraum beträgt in der Regel nur Sekunden und im Vergleich zum Neustart des Rechners ein doch hinnehmbares Manko.
Die Kernel-Module selbst befinden sich unterhalb des Verzeichnispfads /lib/modules/ und sind an der Dateiendung .ko zu erkennen. Des Weiteren findet man dort u.a. noch die Datei modules.dep. Diese wird beim Booten von dem Programm depmod erstellt und legt dort evtl. Abhängigkeiten von Modulen untereinander fest.
Im Betrieb stehen dem Benutzer mehrere Programme zur manuellen Verwalten der Module zur Verfügung.
Allerdings sollte sich der Benutzer auf modprobe beschränken, da dies das elegantere und sicherere Programm ist. Im Gegensatz zu den anderen beiden ist dieses nämlich auch in der Lage Abhängigkeiten zu anderen Modulen zu erkennen und diese bei Bedarf mit zu laden, bzw. aus dem Speicher zu entfernen.
Die Benutzung von modprobe könnte einfacher nicht sein. Zum laden eines Moduls samt evtl. Abhängigkeiten genügt der Befehl gefolgt vom Modulnamen:
Durch die Verwendung der Option -r wird das Modul samt weiterer abhängigen und nicht mehr benötigten Modulen wieder aus dem Speicher entfernt:
Anmerkung: Der Modulname ist in der Regel der Dateiname ohne die Dateiendung.
Welche Module bereits geladen sind, kann man mit dem Befehl lsmod überprüfen:
Module Size Used by Not tainted uhci 24284 0 (unused) usbcore 59148 1 [uhci] hisax_fcpcipnp 5120 0 (unused) hisax_isac 4824 0 [hisax_fcpcipnp] hisax 501264 0 [hisax_fcpcipnp hisax_isac] isdn 115820 0 [hisax] slhc 4592 0 [isdn] isa-pnp 29968 0 [hisax_fcpcipnp hisax] 8139too 13928 1 mii 2272 0 [8139too] crc32 2880 0 [8139too] ide-scsi 9392 0 agpgart 45508 0 (unused)
Erst kommt der Modulname, gefolgt vom Speicherverbrauch. Dahinter stehen weitere Module, die wegen Abhängigkeiten geladen werden mussten.
Das automatische Laden der richtigen Module beim Systemstart funktioniert unter Linux mittlerweile sehr gut. Dennoch kommt es vor, dass Module geladen werden, die man evtl. zum jetzigen Zeitpunkt noch nicht benötig. Genau so kann es vorkommen, dass Module Kernel-Fehler verursachen. Hier gibt es auch Möglichkeiten das Verhalten des Systems zu beeinflussen.
Die Informationen zu den Modulen entnimmt das System der Datei /etc/modprobe.conf und den Dateien im Verzeichnis /etc/modules.d/. Um nun das Laden bestimmter Module zu verhindern, gibt es abhängig von der Distribution zwei verbreitete Möglichkeiten.
Für RedHead, Fedora, CentOS:
Die Datei /etc/modprobe.conf öffnen und dort durch die Änderung
alias Modulname off
das automatische Laden beim Systemstart unterbinden.
Für Debian und Ubuntu:
Die Datei /etc/modules.d/blacklist editieren und durch die Angabe von
blacklist Modulname
das automatische Laden beim Systemstart unterbinden.
|