Anhang A. Kernel generieren und installieren

In diesem Abschnitt wollen wir Ihnen einige kurze Hinweise zur Installation des neuen Kernels geben. Eine ausführlichere Anleitung finden Sie unter [KuQu2003].

Alle notwendigen Werkzeuge zur Generierung des Kernels, im Wesentlichen Compiler und Make, liefert Linux frei Haus. Der Entwickler muss einzig dafür sorgen, dass die richtigen Versionen dieser Werkzeuge installiert sind. Genaue Angaben hierzu finden sich in den Kernelquellen in der Datei Documentation/Changes. Beim Compiler sollte es nach »offiziellen« Angaben der GCC mit der Version 2.95.3 sein. Torvalds gibt auch für make eine Versionsnummer vor: GNU make in der Version 3.78. Generell gilt: Neuere Versionen – wenn es nicht gleich die allerneueste ist – sind zumeist unkritisch und werden vom Kernel angenommen. Von uns wird beispielsweise der GCC in der Version 3.2.3 und GNU make in der Version 3.80 eingesetzt.

Abbildung In acht Schritten zum Kernel zeigt, mit welchen Schritten Sie den eigenen Kernel 2.6 zum Laufen bringen.

Abbildung A-1. In acht Schritten zum Kernel

Bevor es an das eigentliche Herunterladen des Linux-Kerns geht, muss der Entwickler als Erstes überprüfen, ob zum Laden (insmod) und Entladen (rmmod) der Kernelmodule die neue Version der Werkzeuge, so genannte Modutils, auf dem Rechner installiert sind. Denn nur mit diesen, von den Linux-Entwicklern ganz neu überarbeiteten Modutils harmoniert der Kernel. Die neuen Versionen werden nicht anstelle von, sondern zusätzlich zu den alten Versionen installiert. Die neuere Version ist an der Versionsnummer zu erkennen. Diese muss eine »3« vor dem Komma haben. Dazu ruft man einfach als Superuser

(root)# insmod --version
auf. Ist hier eine ältere Version gelistet, bieten zwischenzeitlich alle Distributionen ein Paket mit den neuen Modutils an. Unter Debian (und damit auch Knoppix) sollte der Aufruf von
(root)# apt-get install module-init-tools
ausreichen.

Derjenige, der die neuen Modutils selbst übersetzen möchte, erhält die Software (z.B. module-init-tools-3.0.tar.bz2) über http://www.kernel.org/pub/linux/kernel/people/rusty/modules.

Zu den neuen Modutils gehört auch eine neue Konfigurationsdatei mit Namen modprobe.conf. Sollte die Datei nicht im Verzeichnis /etc zu finden sein, kann der Entwickler sie über den Befehl

./generate-modprobe.conf /etc/modprobe.conf
(aus dem Verzeichnis der modutils-Quellen heraus) erstellen.

Nun kann der Quellcode für den aktuellen Linuxkern von http://www.kernel.org, z.B. http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.3.tar.bz2 heruntergeladen werden (Schritt 2). Um den vollständigen Code und nicht nur die Patches zu erhalten, muss auf der Webseite des Kernelarchivs das »F« (Full, Vollversion) neben der Versionsnummer angeklickt werden.

Das komprimierte Archiv wird anschließend im Verzeichnis /usr/src ausgepackt (Schritt 3):

root(/usr/src)# tar xvfj /tmp/linux-2.6.3.tar.bz2

Der Rechner benötigt einige Zeit, bis der Kernel konfiguriert und installiert ist. Schließlich gilt es, aus fünf Millionen Zeilen Code, gepackt in einem 32-MByte-Archiv, knapp 220 MByte Quellcode in das Verzeichnis /usr/src/linux-2.6.3 abzulegen.

Der neue Linux-Kernel kommt mit einem komplett überarbeiteten Satz von Makefiles, dem neuen Kernel Build System. Dennoch kann der Betriebssystemkern wie üblich über die Kommandos make menuconfig oder make xconfig konfiguriert werden. make xconfig, die grafische Variante auf Qt-Basis, kann sich jedoch – abhängig von der installierten Compilerversion – als Stolperfalle erweisen. Denn nur wenn die Version des Compilers diejenige ist, mit der die qt-Bibliotheken übersetzt wurden, lässt sich das Programm qconf generieren. Es wird daher empfohlen, make menuconfig zu verwenden (Schritt 4):

root(/usr/src/linux-2.6.3)# make menuconfig

Trotz der erheblich erweiterten Konfigurationsmöglichkeiten ist die Konfiguration als solche übersichtlicher geworden. Man sollte jedoch nicht vergessen, dass es sich um einen neuen Kernel handelt. Da noch nicht alle Subsysteme stabil arbeiten, ist man gut damit beraten, gerade anfangs nur die notwendigsten Komponenten auszuwählen. Weitere Features lassen sich auch später noch jederzeit hinzufügen. Zu den notwendigen Auswahlpunkten durch den Entwickler gehören unter anderem der Prozessortyp und die Systemarchitektur.

Nach dem Speichern der Menüpunkte in der Konfigurationsdatei vollzieht sich das Generieren in gewohnter Weise; der Aufruf von make all startet den Compile-Vorgang (Schritt 5):

root(/usr/src/linux-2.6.3)# make all

Jetzt ist allerdings Geduld angesagt, denn selbst bei einem schnellen Rechner dürften minimal fünf Minuten vergehen, bis der Kernel generiert ist. Bricht der Compile-Vorgang mit einem Fehler ab, ist es sehr wahrscheinlich, dass eine Komponente einkonfiguriert wurde, die sich beim aktuellen Kernel einfach nicht übersetzen lässt. In diesem Fall bleibt nur, make menuconfig oder make xconfig aufzurufen, um die zugehörige Komponente zu entfernen. Wird eine andere Ursache für den Fehler vermutet, schadet es nicht, einen Blick in die Datei README beziehungsweise auch Documentation/Changes der Kernelquellen zu werfen.

Konnte der Kernel erfolgreich generiert werden, ist die Installation an der Reihe (Schritt 6). Dazu wird der Kernel zunächst in das Verzeichnis /boot/ kopiert, anschließend der Bootmanager (z.B. Lilo) konfiguriert.

root(/usr/src/linux-2.6.3)# cp arch/i386/boot/bzImage /boot/linux-2.6.3
root(/usr/src/linux-2.6.3)# vi lilo.conf # Editieren der Konfigurationsdatei
root(/usr/src/linux-2.6.3)# lilo

Im Anschluss können die Kernelmodule installiert werden (Schritt 7):

root(/usr/src/linux-2.6.3)# make modules_install

Jetzt kann der erste Versuch, den neuen Kernel zu booten, gestartet werden (Schritt 8)! Schlägt der Versuch fehl, sind die Ausgaben auf der Konsole durchzugehen (oft fehlt einfach ein Treiber!) und die Schritte vier bis sieben gegebenenfalls so lange zu wiederholen, bis der Kernel zu Ende bootet. Der abschließende Aufruf von dmseg listet nochmals alle Meldungen während des letzten Bootvorgangs auf und gibt Aufschluss darüber, ob der Kernel erfolgreich arbeiten kann.


Lizenz