Einen 2.4er Kernel für Slackware kompilieren

Bis einschließlich Slackware 11.0 war die 2.4er Kernel Serie Standard.

Vorab: Wer am Kernel arbeitet und etwas falsch macht kann sein System so zerschießen, daß es neuinstalliert werden muß.

Alle Aktionen auf eigene Gefahr: Ich garantiere nicht, daß alle Aktionen, die ich beschreibe gutgehen, und übernehme keine Haftung für Schäden, die durch Befolgen der Anleitung entstehen.

Besorg Dir die gewünscht Kernelquellen von ftp://ftp.de.kernel.org oder einem Mirror (ftp://ftp.de.kernel.org/mirrors)
Sichere deinen alten Kernel:

cd /boot
 cp vmlinuz vmlinuz.bak
 cp System.map System.bak

Sorg dafür, daß du deinen Sicherungskernel booten kannst, etwa indem du deiner /etc/lilo.conf folgende Zeilen anhängst:

image = /boot/vmlinuz.bak
root = /dev/ #Deine Rootpartition, siehe evtl. anderen Linuxkernel
label = Backup
read-only

und lilo ausführst.

Entpacke die Kernelquellen unterhalb von /usr/src
Biege den Symlink /usr/src/linux auf das Verzeichnis des neuen Kernel um.

cd /usr/src/linux

Editier die Makefile in diesem Verzeichnis:

* In Zeile 4:

Gib eine Extraversionnummer an, sie sollte mit einem Punkt beginnen (damit sie vom Sublevel klar unterscheidbar ist) und eindeutig sein, damit Module verschiedener selbstgebauter Kernels sich nicht ins Gehege kommen.

* In Zeile 77 (zumindestens bei 2.4.25):
Entferne das # vor
export INSTALL_PATH=/boot

Dann landet der Kernel in /boot, wo du ihn haben möchtest.

Konfiguriere den Kernel:

* entweder ganz neu, dann kannst du aus make config,
make menuconfig und make xconfig wählen. make menuconfig ist eine gute Wahl.

* ausgehen von einer alten Konfiguration:

Kopiere die configdatei des alten Kernels nach ./.config ,
wenn du vom Originalslackwarekernel ausgehen willst, dann:

cp /boot/config .config

Anschließend make oldconfig, um neuhinzugekommene Features zu konfigurieren und evtl. aus
make config, make menuconfig und make xconfig wählen, wenn man noch was ändern will.

Das eigentliche Kompilieren kann beginnen:

make dep
make clean
make bzImage
make modules

Du kannst auch alles in einer Zeile schreiben (make dep clean bzImage modules),
nur wenn es zu einem Fehler kommt weißt du dann nicht bei welchem Schritt der Fehler auftritt

den Kernel instalieren:

* erst die Module

make modules_install

* dann den Kernel
make bzlilo

Wenn alles gut gelaufen ist kannst du jetzt neubooten und deinen selbstgebackenen Kernel verwenden.

Troubleshooting:

  • Hilfe der neue Kernel funktioniert nicht!
    Wähle bei lilo den Backupkernel, schau was du an der Kernelconfiguration falsch gemacht hast, ändere das und backe neu.
  • Wähle den Backupkernel sagt sich so einfach, aber….
    jetzt weißt du warum man vor Neuinstallation eines Kernels immer eine Lauffähige Version haben sollte. Entweder dein System ist noch soweit ok, daß du die Konfiguration überprüfen und neubauen kannst, oder aber:
    Du bootest von der SlackwareCD?, mountest deine Rootpartition nach /mnt, machst ein chmod /mnt und baust von dort deinen Kernel neu oder installierst Slackwarepakete eines lauffähigen Kernels.

Tipps zum Konfigurieren:

  • Schaffe dir einen Anhaltspunkt
    Am besten geht man von einer funktionierenden Kernels (z.B. die des mitgelieferten Kernels) aus. So hat man einen Anhaltspunkt.
    Nimmt man dann immer nur kleine Änderungen vor, weiß man in etwa was man falsch gemacht hat, wenn es nicht klappt.
  • Wenn du dir nicht sicher bist, ob du etwas brauchst oder nicht …
    … und du auch keine Anhaltspunkte dazu findest, könntest du wie folgt vorgehen:
    1. Ist die entsprechende Funktion fest einkompiliert, so kompiliere sie erstmal als
    Modul: (andernfalls gehe direkt zu Punkt 2)
    Es sei denn es war ein zentraler Bestandteil des Kernels sollte es trotzdem laufen.
    2. Bootest du nun diesen Kernel kannst, du mit lsmod abrufen welche Module geladen wurden.
    Ist das Modul selbst nach Benutzen aller Komponenten, die vielleicht damit in Verbindung stehen, nicht geladen, so wird es wahrscheinlich nichts ausmachen diese Funktion komplett wegzulassen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Wordpress Anti-Spam durch WP-SpamShield