• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[HOWTO] Kompilieren und installieren eines 'Vanilla' Kernels

Hallo,

hier mal eine kurze Anleitung, welche beschreibt wie man einen aktuellen "Vanilla" Linux Kernel unter OpenSuse 10.1 kompiliert und anschließend parallel zum bisherigen Kernel installiert. Bitte lest euch diese Anleitung zunächst komplett durch.


1) Downloaden der Kernel Quellen

Zunächst muss man den aktuellen "Vanilla" Linux Kernel unter http://www.kernel.org downloaden und nach /usr/src/ entpacken. In dieser Anleitung habe ich die Kernelversion 2.6.17.5 benutzt.

Anschließend wechselt man in das Kernel Source Verzeichnis /usr/src/linux-<kernelversion>. Bei mir ist es also das Verzeichnis /usr/src/linux-2.6.17.5/.


2) Konfigurieren des Kernels

Nun muss man den Kernel konfigurieren. Dies kann man bspw. mit dem Befehl „make xconfig“ erledigen. Eine genaue Erklärung zu den einzelnen Kernel Schalter kann man hier nachlesen. Wenn man den Kernel korrekt konfiguriert hat, muss man die Konfiguration unter dem Namen .config unter /usr/src/linux-<kernelversion>, speichern.


3) Übersetzen des Kernels

Als nächstes muss man den neuen Kernel kompilieren. Dies geschieht mit dem Befehlen:

„make“ (Übersetzung und Linken der Kernel Sourcen)
„make modules_install“ (Kernelmodule werden nach /lib/modules/<kernelversion> installiert)

Der kompilierte Kernel befindet sich anschließend unter /usr/src/linux-<kernelversion>/arch/i386/boot und trägt den Namen bzImage.


4) Installieren des Kernel

Zum Schluss muss man den neuen Kernel noch installieren. Am besten man installiert ihn parallel zum bisherigen Kernel. Dies hat den Vorteil, dass man evtl. Kernelfehler, welche beim Übersetzen oder durch eine fehlerhafte Konfiguration des neuen Kernels entstehen können, kompensieren kann. Dies geschieht dann folgendermaßen:

a)
Den Kernel, also die Datei bzImage, kopiert man nach /boot. Ich habe den Kernel dann auch noch in vmlinuz-2.6.17.5-default umbenannt. So kann man auch noch später leicht erkennen, um welche Kernelversion es sich bei diese Datei handelt.

Nun habe ich ebenfalls noch die Konfigurationsdatei .config aus dem Verzeichnis /usr/src/linux-2.6.17.5/ nach /boot kopiert und in .config-2.6.17.5-default umbenannt. Dies muss man allerdings nicht zwingend machen.

b)
Damit der neue Kernel auch gebootet werden kann, muss man eine neue, angepasste initrd Datei erstellen. Dazu wechselt man in das /boot Verzeichnis und führt den Befehl „mkinitrd“ aus. Die neu erstellte initrd trägt anschließend den Namen initrd-<kernelversion> und liegt ebenfalls im Verzeichnis /boot. Meine hat also den Namen initrd-2.6.17.5-default.

c)
Jetzt muss man lediglich noch den Bootloader bearbeiten. Wenn man den Grub Bootloader benutzt, kann man das Programm „Konfiguration des Bootloaders“, welches sich im „Yast Control Center“ unter dem Register „System“ befindet, benutzen. Dort muss man dann einfach einen neuen Eintrag hinzufügen. Ich habe bspw. einen neuen Eintrag mit folgenden Werten hinzugefügt:

Name des Abschnitts: Linux Kernel 2.6.17.5-default
Kernel: /boot/vmlinuz-2.6.17.5-default
Initial RAM-Disk: /boot/initrd-2.6.17.5-default
Root-Device: /dev/hda7
VGA-Modus: 1280x1024, 24 Bit (Modus 795)
Andere Kernel Parameter: resume=/dev/hda6 splash=silent showopts

Evtl. müssen bei euch einige Werte anders lauten. Höchstwahrscheinlich sind das zumindest die Werte unter „Root-Device“ und „Andere Kernel Parameter“. Am besten schaut ihr einfach mal nach, was bei eurer bereits bestehenden Linux Version eingetragen ist.


5) Fertig!

Wenn alles korrekt funktioniert hat, dann sollte man nach einem Reboot des Betriebssystems, am Bootscreen die neue Kernelversion auswählen und booten können. Bei mir lautet der Name des Eintrags also „Linux Kernel 2.6.17.5-default“. Außerdem kann man mit dem Befehl „uname -a“ überprüfen, welchen Kernel man gerade gebootet hat. Bspw. wird bei mir dann folgender Text angezeigt:

Linux linuxserver 2.6.17.5-default #1 Sat Jul 15 12:27:51 CEST 2006 i686 athlon i386 GNU/Linux

Wenn irgendetwas nicht, oder nicht korrekt laufen sollte, so empfiehlt sich ein Blick in die Datei messages, welche sich unter /var/log befindet. Diese Datei enthält die kompletten Ausgaben des Kernels beim booten des Betriebssystems. Zudem sollte man Beachten, dass man angeschlossene Geräte evtl. neu konfigurieren muss. Dies muss man bspw. mit vorhandenen Druckern tun.


6) Schlussbemerkungen und Haftungsausschluss

Wenn ihr Fehler findet oder noch Fragen zu meiner Anleitung habt, so schreibt mit bitte einfach eine kurze Email. Generell hoffe ich, einigen Usern dieses Boards mit meiner Anleitung helfen zu können, selbst einen funktionierenden Kernel zu kompilieren und zu installieren.

Ihr könnt diese Anleitung gerne auch woanders veröffentlichen, aber bitte fragt mich vorher kurz um Erlaubnis. Desweiteren weise ich ausdrücklich darauf hin, dass ich keinerlei Verantwortung für evtl. Schäden übernehme, welche durch Anwendung dieser Anleitung oder durch Anwendung eines gewissen Teils dieser Anleitung, entstanden sind. Diese Anleitung erhebt keinen Anspruch auf Richtigkeit und Vollständigkeit.

Gruß
Cablenet
 
Oben