frickelbude://

October 21, 2007

Wie back ich mir n Kernel?

Filed under: Allgemein — martin @ 2:50 pm

Aktuellen Vanillakernel in ner halben Stunde backen, so gehts!

Zutaten:
1 x Debian oder Ubuntusystem
1 x aktuelle Kernelquellen von kernel.org
n x evtl. gewünschte Patches
1 x die Pakete “build-essential”, “kernel-package” und “libncurses5-dev”

Zubereitung:

Quellen entpacken und in das Verzeichnis wechseln:

tar -xjvf linux-.tar.bz2
ln -s linux--
linux
cd linux

Nun wahlweise die alte Kernelconfig in das aktuelle Verzeichnis kopieren,
cp /boot/config-2.6.xxblablubb-usw .config
oder eine Minimalkonfiguration erstellen mittels make defconfig .

Nun sollte einmal der Befehl make oldconfig ausgeführt werden, um hinzugekommene Einstellungen und Features des neuen Kernels abzufragen.

Nach einem make menuconfig erscheint ein wunderschönes ncurses-basiertes Konfigurationsinterface.
Wenn man die alte Kernelkonfiguration übernommen hat, braucht man eigentlich nicht viel tun, aber ein wenig abspecken lohnt sich immer. Module die man nicht benötigen wird, können komplett abgewählt werden. Bei mir ist das zB. Unterstützung für Serielle und Parallele Schnittstellen, Firewire, DVB, IPv6, 1GBit und 10GBit-Ethernet, Virtualisierung, uswusw… Sollte man jemals etwas davon brauchen, kann man sich den passenden Kernel immernoch wieder neu zusammenbauen. Natürlich gilt, umso weniger Module übersetzt werden müssen, umso schneller der Kompiliervorgang, logisch…

Sofern man sich für eine minimale Defaultkonfiguration entschieden hat, sollte man prüfen ob die benötigten Module für den Festplatten-Controller sowie für das Dateisystem auf welchem die Rootpartition “/” liegt, aktiviert sind.

Fertig konfiguriert? Dann geht es ans backen. Der Übersetzungsvorgang wird mittels make-kpkg --initrd kernel-image kernel-headers angestoßen. Das dauert je nach Hardware unterschiedlich lange, auf meinem AthlonXP 2600+ zB. 15min, auf meinem Core 2 Q6600 ca. 8min, genug Zeit für nen Kaffee… Bei erfolgreichem Abschluss finden sich die Kompilate im übergeordneten Verzeichnis. Diese sind mittels dpkg ../*.deb kurzerhand installiert, das System kann nun neu gestartet werden. Wenn der neue Kernel fehlerfrei startet und alle Geräte erkannt werden, kann der alte Kernel entfernt werden.

Viel Spaß beim backen!

edit:

Die Kompilation lässt sich mittels export CONCURRENCY_LEVEL=8 parallelisieren, idR. werden hier die doppelte Anzahl der CPU Kerne als concurrency level empfohlen…
Patches lassen sich zB. mittels patch -p1 < ../2.6.31-sched-bfs-304.patch einspielen, während man sich im Quellcodeverzeichniss befindet.

Powered by WordPress