News Gästebuch Forum Mitglied werden FAQ Howtos Desktops C BOfH Lamer & DAUs Quote DB #linux Quotes Was und warum ? Downloads Wallpapers Subdomain Links TU Sidebar Das Team Über die Site Kontakt
Kommentar

Inhalt


Einleitung

"linux x.y.z ist raus", "ich back mir mal eben nen neuen kernel", "update deinen kernel mal" - sowas liest man häufig. Gemeint ist das manuelle kompilieren des Kernels, dem Kern des Betriebssystems, sprich "Linux" ansich. (Falls du es nicht wusstest: Linux ist der Kernel - die meisten anderen Programme fallen unter GNU Software. Das "System" als ganzes heißt daher GNU/Linux.)
Man kann selbstverständlich auch ein vorkompiliertes Linux nutzen, aber aus Gründen der Effizienz ist ein selbst kompilierter Kernel deutlich vorzuziehen.
Warum es "Kernel backen" heißt, weiß ich leider auch nicht, aber klingt doch gleich viel einfacher oder? - Wer hat schließlich noch nie was gebacken? ;-)


Zutaten besorgen

Besorgen wir uns zunächst die Zutaten. Wir brauchen das developement Paket der libc6, das du über deine Distribution beziehen kannst, sowie aktuelle Kernelsourcen und die gibt es auf http://www.kernel.org/pub/linux/kernel/.
Beachte die tatsächlichen Quellen zu laden und keinen patch!
Du musst root sein oder mit su werden.
Entpacke die Quellen nach /usr/src/.
Erstelle einen Link von /usr/src/linux auf /usr/src/linux-VERSION. (ln -s /usr/src/linux /usr/src/linux-VERSION) - das ist wichtig für Programme, die die Kernelquellen im Standardpfad /usr/src/linux erwarten.
Nun wechsle in das entpackte Verzeichnis und tippe make mrproper - damit befreien wir die Sourcen von eventuell vorhandenem Müll.
Fertig mit den Vorbereitungen - Let's get real!


Teig anrühren

Wir haben drei Möglichkeiten den Kernel zu konfigurieren:

Ersteres bringt uns ein Kommandozeilen basiertes Konfigurationsprogramm, das absolut nicht benutzerfreundlich ist, sondern sämtliche Optionen am Stück runterlabert und nur zur Eingabe von 'y', 'n', 'h' (help) oder 'm' (um den Treiber als Modul zu kompilieren) anhält.
Das nächste ist mein Favorit, es wird ncurses inklusive dem ncurses developement Paket benötigt und man erhält ein Tastatur-bedienbares semigrafisches Konfigurationsmenu.
xconfig ist bei version 2.4 ein grafisches Menu (tcl), bei version 2.6 ist es QT gestützt.
gconfig ist ab version 2.6 ebenfalls verfügbar und ist ein gtk frontend zum konfigurieren.

Nachdem nun die Wahl des Frontends gefallen ist gehts ans konfigurieren.
Schau dir deine /etc/modules an. Die Module dort drin wähle auf jeden Fall (falls du sie nicht für überflüssig erachtest) beim konfigurieren als build_in aus (dh. 'y' oder '*' und nicht 'm') und entferne sie aus der Datei, falls du sie bei der Konfiguration finden kannst.
Gehe die Menüpunkte mit Sorgfalt durch. Wenn du etwas nicht kennst, lies die Hilfe dazu. Wenn du sie nicht verstehst, lass die Voreinstellung stehen.
Beachte den Prozessortyp, wenn du den falschen wählst bleibt dein PC beim booten mit "loading Linux........." stehen oder bekommt Panik (kernel panic).
An dieser Stelle des Howto bist du mit der Konfiguration fertig. - Besorg dir was zu tun, eine Zeitung, was zu essen oder zu trinken..


kernel backen

Der Backofen ist vorgeheizt, der Kernel muss rein. Von Version 2.4 zu 2.6 hat sich das sichtlich vereinfacht. Hier die entsprechenden Befehle:

kernel 2.4.x:
make dep bzImage modules modules_install System.map
Wenn du ein System hast, wo keine Module geladen werden sollen (monolithischer Kernel) reicht:
make dep bzImage System.map

kernel 2.6:
make

Nun kannst du dich mit der Zeitung beschäftigen :D Das Kompilieren dauert je nach System und Einstellung zwischen 2 Minuten und gut einer Stunde. (mein Router brauchte für 2.4.9 bei 500 mhz 8 Minuten und bei 100 mhz über 30 Minuten, mein Athlon XP 2000+ (~1,6 gHz) für 2.6.4 6 Minuten)
Falls Fehlermeldungen auftreten beim Kompilieren, versuche als erstes das libc6 developement Paket zu installieren - das könntest du vergessen haben. Danach fängst du wieder beim Punkt "Kernel backen" an. Falls du kein Ergebnis erzielst, lies in diversen FAQs oder such im Internet nach der genauen Fehlermeldung. Alternativ kannst du auch in unser Forum schreiben oder uns im Chat besuchen (siehe "Kontakt") und nachfragen.


Servieren

Kernel an die richtige Stelle kopieren: cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.9
System.map kopieren: cp System.map /boot/System.map-2.4.9

Bei diesem Beispiel bin ich von einem i386 System (alles PC normale) und einem Kernel 2.4.9 ausgegangen. bei 2.6.4 ist es halt vmlinuz-2.6.4 usw...)
Die System.map ist nicht zwingend notwendig, sie dient dazu, dass bei Kernelfehlern die Absturzadresse einem Funktionsnamen zugeordnet werden kann.

Schaue in /boot/ nach wie die alte vmlinuz genau heisst! (zB vmlinuz-2.4.8)
Nun muss noch Lilo (falls du den benutzt zum booten und nicht grub oä.) konfiguriert werden. (Falls du die gleiche Kernelversion erneut kompiliert hast, überspring das konfigurieren einfach. (nicht aber das Ausführen! - siehe unten))
Dafür editiere die Datei /etc/lilo.conf in etwa so:

image=/boot/vmlinuz-2.4.9    # deine neue version halt
     label=Linux
     read-only
image=/boot/vmlinuz-2.4.8    # das alte Kernelimage
     label=LinuxOLD
     read-only

Das alte kernelimage sollte auf jedenfall gesetzt werden, denn sonst hast du nichts mehr zum booten, wenn der neue nicht funktioniert, außer der Installations-CD!
Nun vergiss auf keinen Fall noch lilo auszuführen (mit lilo)! Es sollte sowas erscheinen wie

added Linux *
added LinuxOLD


Guten Appetit

Fertig!
Aber vorsicht - nicht die Finger verbrennen!
Wenn beim booten irgendwas nicht klappt, sich der Rechner aufhängt, etc... dann halte die shift-taste gedrückt wärend des bootens. Der LiLo Prompt (oder ein Ncurses-Menu) wartet dann und du tippst: LinuxOLD (bzw wählst mit den Pfeiltasten LinuxOLD aus).
Damit lädst du das alte Image und gehst in diesem HOWTO wieder zum Teig anrühren. ;-)


copyright gibsch nich, aber geschrieben hats der Tam :)