Korseby Online - Linux Kernel

About Linux Kernel

Nach einem langen Download, nach einer anstrengenden Einstellung und nach einer faszinierenden Compilierung, ist man froh, wenn man endlich ein Image schreiben konnte und die neuesten Treiber zur Verfügung hat.

Einen 2.2 Linux Kernel installieren

Hinweis: Die Kürzel x.y.z geben die jeweilige Kernelversion an. Es kann also z.B. für 2.2.10 oder für 2.0.36 stehen. Benutzung auf eigene Gefahr. Aber eigentlich kann dabei nicht viel passieren. Vorher aber zur Sicherheit trotzdem eine Bootdiskette erstellen. Es versteht sich, daß alle Aktionen mit root durchgeführt werden. User haben auf solche Aktionen keine Rechte.

Als erstes den alten Kernel, der sich aller Wahrscheinlichkeit nach in /usr/src/linux/ befindet, umbenennen in /usr/src/linux-x.y.z/ (je nach Versionsnummer). Oftmals ist auch /usr/src/linux/ selbst ein Link. In diesem Falle den Link löschen.

Die gepackte Datei linux-x.y.z.tar.gz bzw. linux.x.y.z.tar.bz2 dann ins Verzeichnis /usr/src/ kopieren und mit tar -xvzf linux-x.y.z.tar.gz bzw. bzip2 -d linux-x.y.z.tar.bz2 && tar -xvf linux-x.y.z.tar entpacken. Dann (meistens ist es notwendig) wieder einen Link erstellen, mit ln -s linux-x.y.z linux.

Je nach Bedarf von alten Kernel-Verzeichnis die Datei .config ins neue Kernel-Verzeichnis kopieren. Sie enthält die Konfiguration, ist aber nicht unbedingt immer zu den einzelnen Kernelversionen kompatibel. Inkopatibel sind meist die Versionen, die an zweiter Stelle unterschiedliche Ziffern haben, also z.B. 2.1.11 und 2.2.5.

Dann je nach Belieben make config für puren Text, make menuconfig für ein textbezogenes Konfigurieren über ein Menü, oder make xconfig eingeben, für eine Konfiguration unter X-Window.

Danach sollte man nach gründlicher Studierung der Optionen mit dem Eigentlichen anfangen: make dep, make clean und make bzImage eingeben. Zuerst werden die Abhängigkeiten geprüft, dann werden alte Teile gelöscht und zuletzt wird dann das Kernel-Image geschrieben. Es ist dann je nach Plattform z.B. unter /usr/src/linux/arch/i386/boot/bzImage (für PC's) zu finden.
Als nächstes sollte man folgendes eingeben: make modules und make modules_install. Damit werden sogenannte Module in das Verzeichnis /lib/modules/ ausgelagert, die sonst platzverschwendent in den allzu großen Kernel gepreßt würden.

Man kopiert diese Datei dann mit cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-x.y.z in das Bootverzeichnis. Außerdem sollte man auch die folgende Datei kopieren: cp /usr/src/linux/System.map /boot/System.map-x.y.z. Man sollte darauf achten, daß keine Datei überschrieben wird, denn das könnte immer noch der alte Kernel sein. Falls das der Fall wäre, die Datei anders benennen.

Als vorletztes sollte man die Datei /etc/lilo.conf in einen Editor laden und dort den neuen Kernel eintragen. Das sieht dann meist wie folgt aus: image=/boot/vmlinuz-x.y.z.

Als letztes sollte man noch lilo eingeben, damit der Bootsektor neu geschrieben wird und Linux weiß, daß es den neuen Kernel booten soll.

Falls Fehler auftreten, gibt es leider keine allgemeingültigen Aussagen. Am besten, man druckt sich vorher mal das Kernel Howto aus, zu finden unter http://www.linux.org/help/howto.html.

Einen 2.2 Linux Kernel patchen

Wenn man immer auf den neuesten Stand sein möchte oder ein wichtiges Bugfix installieren muß, so braucht man nicht unbedingt alles herunter zu laden, sondern nur die sogenannten Patches.

Hat man sie herunter geladen, so entpackt man sie. Je nach Format sieht das z.B. folgendermaßen aus: gzip -d patch-x.y.z oder bzip2 -d patch-x.y.z.

Nun kopiert man einfach die entstandene Datei (nach dem Schema patch-x.y.z) in das Linux-Source-Verzeichnis, also z.B. /usr/src/linux/.

Je nachdem, wo sich die Dateien befinden, läßt man den Patch darüber laufen. Am gängigsten ist die folgende Methode:
patch -p1 < patch-x.y.z
Wenn sich aber der Verzeichnisbaum noch eine Ebene tiefer befindet, sollte man statt -p1 -p0 verwenden.

Eine gute Hilfestellung gibt auch (wie immer) der man-Befehl mit man patch.

Man muß nicht unbedingt die gz-gepackte Datei entpacken, man kann es auch folgendermaßen erledigen:
zcat patch-x.y.z.gz | patch -f
zcat patch-x.y.z.gz | patch -p0

Aber bitte nicht ängstlich aufschreien, wenn tausende Meldungen am Bildschirm vorbei huschen. Das ist ganz normal. Wenn man die Option -s beim Patch-Befehl hinzufügt, so werden nur die Fehlermeldungen am Bildschirm ausgegeben.

Am Schluß noch ein Hinweis. Man sollte sicherheitshalber den gesamten Verzeichnisbaum kopieren. Falls etwas schief gehen sollte (das passiert sicher einmal), dann kann man den völlig veränderten Verzeichnisinhalt einfach löschen und die alten Dateien wieder dorthin kopieren.
Zwar kann man den Patch auch rückgängig machen (mit patch -p1 < config.in.rej bzw. patch -p0 < config.in.rej ), aber generell bleiben sehr viele Dateileichen zurück. Diese kann man dann auch löschen mit rm *.rej -R -f .

Eine andere Möglichkeit besteht darin, den Patch-Befehl selbst dazu zu benutzen, um alles rückgängig zu machen. Man braucht einfach nur die Option -R als alleinige Option anzufügen.