Die Administratoren von OpenLinux eServer Systemen entscheiden sich häufig dazu, die verwendeten Kernel neu zu kompilieren. Hierfür gibt es eine Reihe von Gründen: So kann auf diese Weise die Größe des Kernels verringert oder dieser an bestimmte Hardwarekomponenten angepasst werden. Es ist auch möglich, die Unterstützung für Geräte oder Funktionen bereitzustellen, die noch nicht im Kernel enthalten sind, oder nicht benötigte Funktionen zu entfernen. Der Kernel von OpenLinux eServer (und auch die meisten Anwendungen) wurde bereits für Pentium Pro oder bessere Prozessoren optimiert. Wenn Sie aber dennoch Ihren Kernel neu kompilieren möchten, erfahren Sie in diesem Abschnitt, wie Sie hierzu vorgehen müssen.
Am einfachsten erfolgt das Neukompilieren des OpenLinux eServer Kernels dadurch, dass Sie ein neues RPM-Paket erstellen und installieren, in dem alle gewünschten Anpassungen berücksichtigt werden. Gehen Sie hierzu wie folgt vor:
# rpm -ivh linux-source-common-2.2.14-1.i386.rpm
# rpm -ivh linux-source-i386-2.2.14-1.i386.rpm
rpm -ivh linux-2.2.13-1.src.rpm
# cp linux.defconfig.i386.modular /usr/src/linux/.config
# make [config | menuconfig | xconfig]
# cd /usr/src/OpenLinux/SOURCES
# cp /usr/src/linux/.config linux.defconfig.i386.modular
# cd /usr/src/OpenLinux/SOURCES
# cp linux.defconfig.i586.modular /usr/src/linux/.config
# make [config | menuconfig | xconfig]
# cd /usr/src/OpenLinux/SOURCES
# cp /usr/src/linux/.config linux.defconfig.i586.modular
Angenommen, Sie haben Unterstützung für die Funktion IP-Masquerading hinzugefügt. In diesem Fall sollten Sie die Zeile Release: wie folgt ändern:
# rpm -bb /usr/src/OpenLinux/SPECS/linux.spec
Wenn Sie sowohl RPM-Pakete mit Binärcode als auch Quellcode benötigen, verwenden Sie hierfür die Option -ba von RPM:
# rpm -ba /usr/src/OpenLinux/SPECS/linux.spec
Mit dem ersten RPM-Befehl wird ein RPM-Paket mit dem Binärcode und der Bezeichnung /usr/src/OpenLinux/RPMS/i386/linux-kernel-binary-2.2.14-ip_masq.i386.rpm erstellt. Mit dem zweiten Befehl wird neben dem Binärpaket zusätzlich noch ein RPM-Paket mit dem Quellcode und der Bezeichnung /usr/src/OpenLinux/SRPMS/i386/linux-kernel-binary-2.2.14-ip_masq.src.rpm erstellt.
# cd /usr/src/OpenLinux/RPMS/i386/
Bei Kernelmodulen handelt es sich um Code, der dem Kernel dynamisch hinzugefügt bzw. aus diesem entfernt werden kann. Dieser Code wird häufig verwendet, um bestimmte Hardwaregeräte zu unterstützen oder bestimmte Funktionen wie IP-Masquerading oder BSD-Prozessverwaltung zu aktivieren. Da diese Module dynamisch geladen und entfernt werden können, ist der Kernel dadurch insgesamt kleiner und schneller.
Ihr OpenLinux eServer System verwendet standardmäßig einen modularen Kernel. Die Module können manuell oder automatisch geladen werden. Im ersten Abschnitt wird kurz das manuelle Laden von Modulen erläutert, bevor dann das von OpenLinux zum automatischen Laden von Modulen beim Booten verwendete System beschrieben wird.
Die Syntax der einzelnen Befehle ist ziemlich einfach. Um alle aktuell geladenen Module anzuzeigen, verwenden Sie den Befehl lsmod wie folgt:
lockd 31720 0 (autoclean) [nfs]
sunrpc 53924 0 (autoclean) [nfs lockd]
nls_iso8859-1 2020 2 (autoclean)
fat 25504 1 (autoclean) [vfat]
Aus Platzgründen wurde die Ausgabe des Befehls hier gekürzt.
Um ein Modul zu entfernen, verwenden Sie rmmod. Da das Entfernen (und Einfügen) von Modulen Rootberechtigung erfordert, müssen Sie sich als Root angemeldet haben. Bei der Reihenfolge, in der Module entfernt werden, muss zudem berücksichtigt werden, dass manche Module von bestimmten anderen Modulen abhängig sind. Daher müssen diese Module zuerst entfernt werden.
Verwenden Sie den Befehl insmod, um Module einzufügen. Wenn Sie die Option -v (verbose, d.h. erläuternd) in Verbindung mit insmod verwenden, geben manche Module zusätzliche Informationen aus, die nützlich sind, falls beim Laden der Module Fehler auftreten.
Da das Modul vfat vom Modul fat abhängt, müssen Sie das Modul fat zuerst laden. Wenn Sie sich nicht sicher sind, welche Modulabhängigkeiten existieren, können Sie diese mit dem Befehl modprobe in Verbindung mit der Option -v auf dem Bildschirm anzeigen. Außerdem bietet Ihnen modprobe den Vorteil, dass es die Module durch Aufrufen von insmod lädt:
# modprobe -v /lib/modules/2.2.12/fs/vfat.o
Bei der Installation erstellt OpenLinux eServer eine Datei mit der Bezeichnung /etc/modules/default, die eine Liste mit den Modulen enthält, die beim Booten automatisch geladen werden sollen. Wenn Ihr System eine initiale RAM-Disk erfordert (initrd), wurde auch eine Datei mit der Bezeichnung /etc/modules/rootfs angelegt, in der eine Liste mit allen Modulen enthalten ist, die für das Booten des Systems und Mounten des Rootdateisystems erforderlich ist. Die meisten SCSI-Systeme müssen beispielsweise diese Methode nutzen, um SCSI-Treiber laden zu können.
Um automatisch ein neues Modul zu laden, das für das Booten nicht unbedingt erforderlich ist, müssen Sie dieses in die Datei /etc/modules/default einfügen. Wenn ein Modul für das Booten hingegen unverzichtbar ist, fügen Sie dieses in /etc/modules/rootfs ein. Beachten Sie bitte in diesem Zusammenhang, dass die Reihenfolge von großer Bedeutung sein kann, in der die Module geladen werden. Dies gilt vor allem für den Fall, dass wie im bereits erwähnten Beispiel mit fat und vfat einzelne Module voneinander abhängig sind.