Blick ins Innere
Kernel übersetzen und installieren.
Bau und Installation
Die folgende Anleitung gilt für die aktuellen Kernelversionen 2.6.x. Das erste Kommando erstellt den komprimierten Kernel einschließlich der beim Booten notwendigen Entpackroutinen. Die folgenden Zeilen kompilieren und installieren die passenden Kernelmodule.
make bzImage make modules make modules_install
Sie können auch alles in einer Zeile erledigen:
make bzImage modules modules_install
Jetzt ist erst mal der Rechner dran. Der Ausgabe ist ab Version 2.6.x wesentlich übersichtlicher geworden. Wie Abbildung 7 zeigt, wird nicht mehr die komplette Befehlszeile ausgegeben. Sie können den neuen Kernel mit make bzdisk auch auf einer Diskette speichern. Das erlaubt, den neuen Kernel zu booten, ohne den Bootmanager der Festplatte anzupassen.
Ist alles fehlerfrei abgeschlossen, befindet sich der generierte Kernel bzImage im Unterverzeichnis arch/i386/boot. Den kopieren Sie nun an die richtige Stelle, typischerweise /boot oder das Stammverzeichnis /. Das folgende Beispiel kopiert den Kernel und hängt dabei die Versionsnummer an:
cp arch/i386/boot/bzImage /boot/bzImage-2.6.2
Jetzt fehlt noch der Eintrag für den Bootloader. Auf eine RAM-Disk sollten Sie (zumindest für den ersten Start) verzichten. Das Gleiche gilt für den (oft bei Red Hat zu findenden) Eintrag root=LABEL=xx. Der neue Kernel wird zusätzlich zu den vorhandenen Versionen eingetragen. So kann im Fehlerfall die alte Version gestartet werden. Für den Eintrag gilt: Einen vorhandenen Linux-Eintrag kopieren, modifizieren und die Datei abspeichern. Ein Eintrag in die GRUB Konfigurationsdatei /boot/grub/grub.conf sieht beispielsweise wie folgt aus:
title Linux (2.6.2)
root (hd1,0)
kernel /boot/bzImage-2.6.2 roDamit ist bei GRUB auch schon alles erledigt.
Für LILO-Anwender, ist der Ablauf identisch. Ein typischer Eintrag in die Konfigurationsdatei /etc/lilo.conf ist:
image=/boot/bzImage-2.6.2
label=Linux (2.6.2)
read-only
Nach dem Speichern der Konfigurationsdatei muss das Kommando lilo aufgerufen werden!
Nach dem Neustart kann der Menü-Punkt Linux (2.6.2) ausgewählt und damit der "Neue" gestartet werden. Die Ausgaben beim Systemstart geben Auskunft über den Erfolg des Unternehmens "Eigener Kernel". Gibt es beim Neustart Probleme (Kernel bootet nicht oder eine Unmenge an Fehlermeldngen), dann nur keine Panik. In diesem Fall sollten zunächst die Fehlermeldungen analysiert, und im Anschluss daran der "Alte" Kernel gestartet werden. Bei einer weiteren Kernelkonfiguration können dann die Fehler schrittweise beseitigt werden.
Wie in Abbildung 8 zu sehen ist, zeigen die Startmeldungen jede Menge interessanter Details – die Sie nicht alle auf Anhieb verstehen müssen. Das Kommando dmesg zeigt diese Meldungen noch einmal an, wenn Linux bereits läuft.
Achtung: Unter Umständen wird beim Neustart auf das Fehlen von Hardwarekomponenten hingewiesen. Behalten Sie in diesem Fall die alten Einstellungen bei.
Hinweis: Die Konfiguration beginnt mit dem Aufruf vom make mrproper aus dem Sourceverzeichnis heraus. Damit wird auch die aktuelle Konfigurationsdatei .config gelöscht. Um auf die bis dato gemachte Konfiguration aufbauen zu können sollte die Konfigurationsdatei vorher gesichert, werden.
mv .config save make mrproper mv save .config make menuconfig
Ist die Konfiguration unter einem anderen Namen gespeichert wurden, kann sie zu Beginn der Konfiguration eingelesen werden.
Kasten 2: Hinweise für Red-Hat-Benutzer
Damit bei Red Hat die Module automatisch geladen werden, ist eine Modifikation des Boot-Skriptes /etc/rc.d/rc.sysinit vorzunehmen. Hierzu sind ROOT-Rechte erforderlich. Um Herauszufinden, ob Module verwendet werden, wird in der Datei /proc/ksyms nach dem Eintrag nomodules gesucht. Für Kernel 2.6.x (und auch schon einigen vorhergehenden Versionen) steht dieser Eintrag, falls jemals vorhanden, in der Datei /proc/modules. Im gezeigten Auszug ist die Orginalzeile mit # deaktiviert, und die abgeänderte Zeile darunter eingefügt worden.
#if ! LC_ALL=C grep -iq nomodules /proc/cmdline 2>/dev/null && [ -f /proc/ksyms ]; then
if ! LC_ALL=C grep -iq nomodules /proc/cmdline 2>/dev/null && [ -f /proc/modules ]; then
USEMODULES=y
fi
Fazit
Auch Nicht-Profis können einen Kernel übersetzen und installieren - schließlich fangen alle mal klein an. Bei Problemen ist ein "Zurückschalten" auf die vorherige Version jederzeit möglich.
Wenn Sie einen neueren Kernel installieren wollen, dann natürlich die aktuellste Version, in diesem Artikel die Version 2.6.6. Für neuere Versionen ersetzen Sie die entsprechende Nummern in den beschriebenen Befehlen.
Zum Abschluss noch ein Tipp: Testen Sie den "Neuen" ausgiebig, bevor Sie den "Alten" aus Ihrem System entfernen.
Der Autor
Roman Jordan beschäftigt sich schon seit den Zeiten, wo noch mit Disketten installiert wurde, mit dem Thema Linux. Im richtigen Leben arbeitet er als Systemprogrammierer für kleinere aber dennoch leistungsfähige Systeme.
Glossar
Link
Ein symbolischer Link ist ein Verweis (Verzeichniseintrag) auf eine Datei. Ein Link kann wie eine "normale" Datei verwendet werden. Das Löschen eines Links führt nicht zum Löschen der Datei. Symbolische Links werden mit dem Kommando: ls -s vorhandene_Datei sym_Link_Datei angelegt.
Infos
[1] Hauptseite Linux Kernel: http://www.kernel.org/
[2] Suchmaschine für RPM-Pakete: http://rpmfind.net/



