In diesem Artikel wird das Selbstkompilieren der neuen Kernel-Generation 2.6 am Beispiel der Kernelversion 2.6.5 unter SuSE Linux 9.0 erläutert.
In diesem Artikel wird das Selbstkompilieren der neuen Kernel-Generation 2.6 am Beispiel der Version 2.6.5 unter SuSE Linux 9.0 erläutert. Die beschriebene .config-Datei steht hier zum Download bereit: dot.config (Wichtig: Die Datei ist vor dem "Gebrauch" in .config umzubennen!)
gpg: Unterschrift vom Mi 04 Feb 2004 05:32:41 CET, DSA Schlüssel ID 517D0F0E gpg: Korrekte Unterschrift von "Linux Kernel Archives Verification Key <
>"
3. Kernelquellen entzippen mit "bunzip2 linux-2.6.5.tar.bz2"
4. nach /usr/src wechseln (als root) mit "cd /usr/src"
5. Kernelquellen mit tar entpacken (als root) mit "tar xvf $HOME/linux-2.6.5.tar"
6. Besitzer für Kernelquellen umsetzen mit "chown -R ‘whoami‘ linux-2.6.5"
7. Link auf Kernelquellen umsetzen (als root): mit
8. Kernel konfigurieren (als angemeldeter User, nicht als root): a) Entweder von bereits laufendem Kernel 2.4.xxx oder 2.6 übernehmen mit:
zcat /proc/config.gz > /usr/src/linux/.config make oldconfig
b) oder einfach die vorgefertigte Konfigurationsdatei .config von dieser Seite verwenden und nach /usr/src/linux ablegen.
9. In die neuen Kernelquellen als User wechseln mit: cd /usr/src/linux
10. Alte Abhängigkeiten löschen mit "make clean"
11. Konfigurationsdialog "make menuconfig" starten und unter den verwendeten Prozessor unter Menüpunkt: Processor type and features -> Processor family anpassen !!!!
12. Anschliessend weiter anpassen oder Dialog wieder beenden (mit speichern)
Hinweis: Falls Fehlermeldung wie "make[2]: *** [scripts/lxdialog/checklist.o] Fehler 1" erscheint, dann muss von den Linux-CDs das Paket ncurses-devel nachinstalliert werden.
13. Im Editor .config Datei öffnen und kontrollieren, ob folg. Variable gesetzt ist: CONFIG_MODVERSIONS=y ?
14. Für den Fall dass mehrere unterschiedliche 2.6er Kernel erzeugt werden sollen (um unterschiedliche Konfigurationen zu testen, ansonsten ist das nicht nötig) sollte man für jeden neu erzeugtem Kernel im Makefile ändern: EXTRAVERSION=<Kürzel>. Z.B. würde bei EXTRAVERSION= -A1 (das Kürzel heisst -A1) der Aufruf von "uname -a" das Ergebnis 2.6.5-A1 liefern und die Modules unter /lib/modules/2.6.5-A1 stehen
Das hat pro Kernel den Vorteil, dass man sich nicht jedesmal die Modules und die System.map überschreibt.
Will man nur einen Kernel 2.6.5 erzeugen, so lässt man das Kürzel einfach weg.
15. Anschliessend wird der Kernel kompiliert (möglichst als User, nicht als root) unter /usr/src/linux eingeben:
make make modules
als root: make modules_install
16. Neuen Kernel und System.map Datei in den /boot Bereich kopieren (als root):
cd /boot mk_initrd -k vmlinuz-2.6.5<Kürzel> -i initrd-2.6.5<Kürzel>
18. Neuen Eintrag im Bootmanager hinzufügen: (als root) In der Datei /boot/grub/menu.lst einen neuen Eintrag für grub erstellen: (Bei mehreren Kerneln entsprechend mehrere) z.B.:
title suse9.0-kernel2.6.5 kernel (hd0,0)/vmlinuz-2.6.5<Kürzel> root (hd0,0) vga=0x317 showopts initrd (hd0,0)/initrd-2.6.5<Kürzel>
Wobei für (hd0,0) der richtige Wert eingetragen werden muss !!!! z.B.
FP an Primary-IDE als Master = (hd0,x) Primary-IDE als Slave = (hd1,x) Secondary-IDE als Master = (hd2,x) Secondary-IDE als Slave = (hd3,x)
Das x gibt die Partition an, auf dem sich das Linux befindet. (1. Partition ist 0 die 2. Partition ist 1 usw.)
Anschliessend den Befehl "grub" als root aufrufen.
Man kann den Kernel entweder vorkompiliert als rpm-Paket oder alternativ auch als Quelltextpaket (source-rpm) zum Selbstkompilieren downloaden. Diese Vorgehensweise hat den Vorteil, dass alle Anpassungen und Patches bereits enthalten sind.
Errata (14.07.2004):
Einige Fehler in den Punkten 3 und 6 wurden entfernt; Punkt 7 wurde geändert, da die alte Vorgehensweise unter SuSE Linux 9.1 nicht mehr funktioniert hat.