2.6 Kernel, Treiber & Co.
In diesem Abschnitt soll nun die Brücke zum Kernel geschlagen werden. Wir wollen uns nämlich der Frage widmen, wie man unter Linux Kernel-Module und damit Treiber für bestimmte Hardware laden und vielleicht auch wieder loswerden kann.
Notwendig dafür ist der entsprechende Support im Kernel. Ist dieser vorhanden, so sind die jeweils verfügbaren Kernel-Module im Verzeichnis – zu finden. Welchen Kernel man gerade gebootet hat, kann man mit dem uname-Tool erfahren:
# uname -a Linux yorick 2.6.14-2-686 #1 Mon Nov 14 14:19:05 UTC 2005 i686 GNU/Linux
Listing 2.15 Kernel-Version mit uname ermitteln
2.6.1 modprobe
Möchte man ein Modul zur Laufzeit in den Kernel laden, so ist in der Regel modprobe das Tool der Wahl. Man übergibt ihm nur den Namen des Moduls, und modprobe lädt die entsprechende Moduldatei samt eventuell vorhandener Abhängigkeiten.
Automatische Abhängigkeiten
Um diese Abhängigkeiten auflösen zu können, greift modprobe auf die modules.dep-Datei im entsprechenden Verzeichnis unter /lib/modules/ <Kernel-Version> zu. Diese Datei wird nun in der Regel während des Bootens von depmod erstellt. Dazu durchsucht depmod das gesamte Verzeichnis und löst alle Referenzen und damit alle Abhängigkeiten der Module untereinander auf.
Mit dem Parameter »-r« kann man Module auch wieder aus dem Kernel entfernen. Dabei versucht modprobe, rekursiv ebenfalls alle nicht weiter benötigten Module zu löschen, von denen das auf der Kommandozeile angegebene Modul abhängt.
2.6.2 lsmod
Geladene Module anzeigen
Möchten Sie sich alle geladenen Module anzeigen lassen, so hilft das lsmod-Tool weiter. Die Ausgabe des Tools umfasst alle geladenen Module, ihre Größe sowie die von diesem Modul jeweils abhängigen Module.
# lsmod Module Size Used by … ide_cd 43588 0 cdrom 40928 1 ide_cd
Listing 2.16 lsmod
In diesem Beispiel kann man sehen, dass der Treiber für normale IDE-CD/DVD-Laufwerke ide_cd den uniformen CD-ROM-Treiber cdrom benötigt. Möchte man mehr Informationen über ein bestimmtes Modul, kann man auf das Tool modinfo zurückgreifen:
# modinfo ide-cd filename: /lib/modules/2.6.14-2-686/kernel/ drivers/ide/ide-cd.ko description: ATAPI CD-ROM Driver license: GPL vermagic: 2.6.14-2-686 686 gcc-4.0 depends: ide-core,cdrom parm: ignore:charp
Listing 2.17 modinfo
2.6.3 insmod und rmmod
Weniger clever <Das sagt sogar die Manpage: »Most users will want to use modprobe(8) instead, which is cleverer.«> als modprobe sind die Tools insmod und rmmod. Beiden Tools gemeinsam ist der Fakt, dass sie keine Abhängigkeiten zwischen unterschiedlichen Modulen berücksichtigen können. Bei insmod ist es sogar notwendig, den genauen Dateinamen statt des kürzeren Modulnamens anzugeben.
Wir wollten diese beiden Tools auch nur mal erwähnt haben; näher ausführen werden wir ihre Benutzung nicht. Nutzen Sie lieber modprobe, das die Aufrufe von insmod beziehungsweise rmmod vor Ihnen als Benutzer versteckt.