Verwalten/Abfragen des Kernel und der Kernelmodulen zur Laufzeit
Wichtung: 4
Beschreibung: Die Kandidaten sollen in der Lage sein, Kernel und Kernelmodule zu verwalten und/oder abzufragen.
Wichtigste Wissensgebiete:
Nutzung von Befehlszeilentools um Informationen über den laufenden Kernel und die geladenen Module zu ermitteln.
Manuelles Laden und Entladen der Kernelmodule.
Feststellen, wann ein Kernelmodul entladen werden kann.
Feststellen, welche Parameter ein Kernelmodul akzeptiert.
Konfiguration des Systems, so dass Module auch unter anderen Namen als ihrem Dateinamen geladen werden können.
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/lib/modules/kernel-version/modules.dep
/etc/modules.conf
/etc/modprobe.conf
depmod
insmod
lsmod
rmmod
modinfo
modprobe
uname
Kernel-Module
Stellen Sie sich vor, Sie binden die Unterstützung nahezu jeder Hardware, die es auf dem Markt gibt, fest in den Kernel ein. Ihr Kernel unterstützt 100 Grafikchips, Sie haben aber nur eine Grafikkarte im System. Klar, Sie erhalten einen sehr großen Kernel, der zwar jede Hardware unterstützt, Sie aber nur einen Bruchteil benötigen.
Stellen Sie sich dann noch vor, Sie müssen bei jeder neuen Hardware den kompletten Kernel neu kompilieren. Es wird Ihnen auf Dauer keinen Spaß machen, da dies viel Zeit in Anspruch nimmt.
Genau aus diesem Grund ist der Kernel seit der Version 2 nicht mehr monolithisch und modularisiert wurde. Das heißt, dass Gerätetreiber eben nicht immer fest eingebunden werden müssen, sondern je nach Bedarf nachgeladen werden können. Somit können schlanke Kernel kompiliert werden und Module entsprechend nachgeladen werden, wenn diese benötigt werden.
// Verzeichnis der Kernelmodule
/lib/modules/[KERNEL-VERSION]
depmod - Abhängigkeiten der Kernelmodule
Das Tool depmod findet die Abhängigkeiten zwischen ladbaren Kernelmodulen und schreibt die dafür zuständige Konfigurationsdatei modules.dep. In der Datei modules.dep stehen dann die entsprechenden Abhängigkeiten jedes einzelnen Moduls. Jedesmal, wenn neue Module ins Modulverzeichnis kopiert werden, muss depmod ausgeführt werden.
lsmod - Anzeigen der geladenen Module
Mithilfe von lsmod kann man sich die geladenen Module anzeigen lassen. lsmod wird ohne Paramater aufgerufen. Beispiel:
# lsmod
Module Size Used by
parport_pc 19280 1 (autoclean)
lp 5248 0 (autoclean)
parport 22240 1 (autoclean) [parport_pc lp]
nfsd 64880 4 (autoclean)
ipv6 124736 -1 (autoclean)
evdev 4160 0 (unused)
insmod - Module laden
Mit dem Befehl insmod werden einzelne Module während der Laufzeit geladen. Im Verzeichnos /lib/modules/[KERNEL-VERSION] befinden sich die Module, welche auf ".o" bzw. ".ko" enden. Wenn das Modul "hermes.o" geladen werden soll, so tippt man folgendes ein:
insmod hermes
Es kann auch sein, dass ein Modul Paramater erwartet:
insmod ra irq=6
Nachteil von insmod: insmod lädt nur das angegebene Modu ohne die Abhängigkeiten zu beachten. Es werden also keine Module automatisch nachgeladen.
modprobe - Nachfolger von insmod
Modprobe baut auf insmod auf, ist aber intelligenter. Modprobe überprüft die Abhängigkeiten von Modulen und lädt Module nach, wenn diese benötigt werden.
# modprobe uhci
rmmod - Entladen von Modulen
Mit rmmod ist es möglich, Module aus dem Kernel zu entladen.
# rmmod uhci
Module können nur dann entladen werden, wenn sie nicht benötigt und nicht in Abhängigkeiten stehen. Mit modprobe können ebenfalls Module entladen werden. Mit der Option -r bewirkt man "ein umgekehrtes modprobe". Die abhängigen Module werden ebenfalls entladen.
# modprobe -r uhci
modinfo - Modul-Parameter auslesen
Module benötigen manchmal Parameter, damit sie richtig geladen werden können. Dies kann vor allem bei Gerätetreiber erforderlich sein. Mit dem Tool modinfo kann man sich zu einem Modul sämtliche Informationen ausgeben lassen:
-n = Dateiname und Pfad der Moduldatei
-d = Beschreibung
-a = Author
-l = Lizenz
-p = Parameter
modinfo serial
oder
modinfo /lib/modules/2.4.17/kernel/drivers/char/serial.o
Dies liefert dann den Pfad zum Modul, eine kurze Beschreibung, den Autor, die Lizenz sowie Informationen über die möglichen Parameter, die man beim Laden des Moduls angeben kann.
/etc/modules.conf - Konfig-Datei für modprobe
modules.conf ist sowohl für insmod, modprobe als auch für depmod wichtig, da hier beispielsweise die Parameter enthalten sind, wie ein Modul geladen wird.
So kann man einen Alias für ein Gerät setzen:
options Modulname Optionen
// Beispiel - Setzen des Alias für eine
// bestimmte Netzwerkkarte
alias eth0 hermes
options hermes io=0x320 irq=7
Außerdem kann man festlegen, was passieren soll, wenn das Modul geladen bzw. entladen wird:
pre-install Modul Kommando = Vor dem Laden
post-install Modul Kommando = Nach dem Laden
pre-remove Modul Kommando = Vor dem Entfernen
post-remove Modul Kommando = Nach dem Entladen
uname - Kernel-Infos ausgeben
Mit folgenden Parametern kann man sich Informationen zum aktuellen Kernel und das System ausgeben lassen:
$ uname -a
Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
Optionen:
-a Print all information
-m Print the machine (hardware) type
-n Print the machine's network node hostname
-r Print the operating system release
-s Print the operating system name
-p Print the host processor type
-v Print the operating system version
Weitere Infos
http://www.linuxfibel.de/kmodule.htm