AHRlug - Linux user group Ahrtal
Kompilieren des 2.6er-Kernels Drucken E-Mail
Geschrieben von Axel Dammers   
Sonntag, 13. November 2005

Kompilieren des 2.6er-Kernels

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!)

1. Von http://www.kernel.org/pub/linux/kernel/v2.6/ die aktuellen Kernelquellen (linux-2.6.5.tar.bz2) und die Signaturdatei (linux-2.6.5.tar.bz2.sign) downloaden

2. Echtheit der Kernelquellen im Konsolenfenster überprüfen mit:

gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
gpg --verify linux-2.6.5.tar.bz2.sign linux-2.6.5.tar.bz2

Ergebnis sollte sein:

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

mv /usr/src/linux /usr/src/linux.old
ln -s /usr/src/linux-2.6.5 /usr/src/linux

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):

cp ./arch/i386/boot/bzImage /boot/vmlinuz-2.6.5<Kürzel>
cp ./System.map /boot/System.map-2.6.5<Kürzel>

17. Initial Ramdisk (initrd) erstellen (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.

19. Von http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/ die neuen modutils (module-init-tools-0.9.14.tar.bz2) und Signatur-datei (module-init-tools-0.9.14.tar.bz2.sign) downloaden.

20. Echtheit der modutils überprüfen mit:

gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
gpg --verify module-init-tools-0.9.14.tar.bz2.sign module-init-tools-0.9.14.tar.bz2

Ergebnis sollte sein:

gpg: Signature made Mon Oct 9 23:48:38 2000 PDT using DSA key ID 517D0F0E
gpg: Good signature from "Linux Kernel Archives Verification Key < >"

21. In das Paket modutils wechseln und als User (nicht als root) kompilieren:

./configure -prefix=/
make

Installieren (als root) mit: "make install"

22. Die Datei /etc/modules.conf in /etc/modprobe.conf transferieren (als root) mit:

generate-modprobe.conf /etc/modprobe.conf

23. Damit es für jeden Kernel eine eigene modules.conf gibt, folgendes machen:

cp /etc/modules.conf /etc/modules.conf.deflt
cp /etc/modules.conf /etc/modules.conf-2.6.5<Kürzel>
cp /etc/modules.conf /etc/modules.conf-'uname -r'

24. Anschliessend in der Datei /etc/modules.conf alles löschen, danach folgende Zeilen einfügen:

if -f /etc/modules.conf-'uname -r'
    include /etc/modules.conf-'uname -r'
else
    include /etc/modules.conf.deflt
endif

25. Neuen Kernel booten


Bei Soundproblemen:
Sollte das Soundmodul nicht geladen werden, könnten die Optionen daran Schuld sein:

z.B. bei Via8233 Soundchip:
die Zeile: options snd-via82xx ac97_clock=48000 snd_enable=1 snd_index=0
ersetzen gegen: options snd-via82xx dxs_support=3

Bei anderen Soundkarten reicht es wahrscheinlich, die Zeile ganz auszukommentieren.

Um Treiber für NVIDIA-Grafikkarten hinzuzufügen: Siehe www.minion.de

 

Surftipp: Auf der Website des Linux Magazins gibt's einen weiteren Artikel zu diesem Thema:
http://www.linux-magazin.de/Artikel/ausgabe/2004/02/kernel-inst/kernel-inst.html

 

Update:

Ich habe gerade gesehen, daß es den aktuellen Kernel 2.6.5 auch fertig vorkompiliert für SuSE 9.0 zum Download gibt.

Siehe Artikel:
http://portal.suse.com/sdb/de/2004/02/migrating_to_26.html

Downloaden kann man ihn sich von:
http://ftp.gwdg.de/pub/linux/suse/people/mantel/next/

Weitere benötigte Pakete von:
http://ftp.gwdg.de/pub/linux/suse/people/kraxel/9.0-i386/

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.



 
© AHRlug - Linux user group Ahrtal 2002 - 2012 | | powered by: linux | apache | php | mysql | joomla