Kompilieren eines eigenen Kernels

Der Linux-Kernel stellt die unterste Ebene eines Linux-Systems dar. Der Kernel kontrolliert unter anderem den Zugriff auf Hardwareressourcen (z.B. Prozessor, Laufwerke, Grafikkarten, Maus und Tastatur) und weist parallel laufenden Programmen Rechenzeit des Prozessors zu.

Der Linux-Kernel kann an eigene Anforderungen angepasst werden. Dies ist beispielsweise erforderlich, wenn bestimmte Features benötigt werden, die von Univention nicht aktiviert werden.

Um eine neue Version des aktuellen Kernels zu kompilieren, muss folgendermaßen vorgegangen werden.

Installation der benötigten Pakete. Diese befinden sich auf der zweiten UCS-CD bzw. auf http://apt.univention.de:

apt-get install build-essential kernel-package

Installation der Kernel-Quellen. Es wird beispielsweise die Kernel-Version 2.6.14.7-univention.server.78 verwendet, für andere Versionen muss analog vorgegangen werden:

apt-get install kernel-source-2.6.14.7-univention.server.78

Der vorige Schritt installiert ein tar-Archiv nach /usr/src/. Dies muss noch entpackt werden:

cd /usr/src/ tar -xjf kernel-source-2.6.14.7-univention.server.78.tar.bz2 cd kernel-source-2.6.14.7-univention.server.78
Bevor der Kernel neu kompiliert werden kann, muss eine Kernelkonfiguration erstellt werden. Möchte man nur eine neue Version des aktuell installierten Kernels erstellen, kann die bisherige Konfiguration übernommen werden:

cp /boot/config-2.6.14.7-univention.server.78 .config

Wird eine andere Kernelversion verwendet, kann die Konfiguration des aktuell installierten Kernels ebenfalls verwendet werden, sofern es sich um die gleiche Hauptversion (2.4 oder 2.6) handelt. Hierbei muss jedoch zusätzlich der Befehl make oldconfig ausgeführt und ggf. die Konfiguration für neue Optionen angegeben werden, die interaktiv abgefragt werden:

cp /boot/config-2.6.14.7-univention.server.78 ./.config make oldconfig
Anschließend kann die Konfiguration an eigene Anforderungen angepasst werden. Dies kann auch über ein textbasiertes Menüsystem erfolgen, wozu ein zusätzliches Paket installiert werden muss:

apt-get install libncurses-dev [...] make menuconfig
Ist die Konfiguration abgeschlossen, kann der Kernel neu kompiliert werden:

make-kpkg --revision 1 --append-to-version -1 --initrd kernel-image

Der mit dem Parameter –append-to-version angegebene Wert wird beim Erstellen des Kernels an die Versionsnummer angehängt. So kann der neu erzeugte Kernel von anderen von Univention erzeugten Kernel-Paketen unterschieden werden, Kollisionen von gleichen Paketnamen werden so verhindert. Der Parameter kann auch an eigene Erfordernisse angepasst werden (z.B –append-to-version -firmenname-01).
Das Kompilieren des neuen Kernels kann je nach eingesetzter Hardware bis zu einer Stunde dauern. Ist das Kompilieren fehlerfrei abgeschlossen worden, werden im Verzeichnis /usr/src/ Debian-Pakete mit dem neuen Kernel erstellt. Diese können mit dpkg installiert werden:

cd /usr/src dpkg -i kernel-image-2.6.14.7-univention.server.78-1_1_i386.deb
Während der Installation wird unter anderem der Bootloader lilo aufgerufen. Hierbei muss unbedingt darauf geachtet werden, dass dieser Vorgang fehlerfrei durchläuft, andernfalls kann es sein, dass das System nicht mehr gebootet werden kann.

Mastodon