Eher denkbar ist es, dass die Kernelkonfiguration bestimmten Bedingungen angepasst werden müssen. Eine Beschleunigung des Kernels ist allerdings auf diesem Weg eher selten zu erwarten, da auch die Standard-Kernel der Distributionen ja nicht von Anfänger zusammengestellt werden.
Bezug der Kernel-Quellen
Die meisten Distributionen bieten die Quelltexte des Kernels als Quelltexte an. Diese werden dann gern im Verzeichnis /usr/src abgelegt, können dort angepasst und übersetzt werden.Die Quellen der Kernel-Sources können aber auch von der Website www.kernel.org heruntergeladen werden. Dort sind auch mehrere unterschiedliche Kernelversionen verfügbar.
Neuere Kernel liegen als tar-Paket mit xz-Komprimierung vor. Für die Dekomprimierung wird der Buchstabe x (statt eines z für gzip) eingesetzt.
tar xfx linux-x.y.z.tar.xz
Diese Kernel sollten nicht unbedingt in /usr/src hinterlegt werden, sondern jeweils in einem eigenen Verzeichnis unterhalb der Heimatverzeichnisse. Die Ablage in /usr/src hat nämlich folgende Nachteile:
- Man muss als root arbeiten.
- Im Verzeichnis /usr sollten eigentlich Daten liegen, die möglichst keine Schreibzugriffe erfordern.
- Die Arbeiten werden nicht in die normale Datensicherung des /home-Verzeichnisses einbezogen.
Benötigte Werkzeuge und Pakete
Für die Kernelgenerierung werden Programme wie C-Compiler oder make benötigt. Diese befinden sich in dem Paket build-essential. Für die Konfiguration mit make menuconfig wird auch noch libncurses5-dev benötigt. Unter Debian oder Ubuntu installiert man sie mit dem folgenden Befehl:apt-get install build-essential libncurses5-dev
Anpassen der Kernelquellenkonfiguration
Die Konfiguration eines Kernels steht in der Datei .config, die sich im Basisverzeichnis der Quellen befinden muss. Bei einem frisch heruntergeladenen Kernel gibt es keine solche Datei. Sie muss von Hand erstellt werden. Will man von einem installierten Kernel ausgehen und Änderungen durchführen, muss man dessen config-Datei als .config übernehmen.Die kann man unter /proc/config.gz finden. Um sie zu verwenden, muss sie entpackt werden.
zcat /proc/config.gz > .configOft findet man sie auch im Verzeichnis /boot unter dem Namen config-x.z.y.
Man kann auch eine Standard-Konfiguration per make erzeugen.
make oldconfigAuf der Basis einer solchen .config kann man nun das Menü zur Konfiguration aufrufen.
make menueconfigSie können hier den Prozessortyp genauer angeben, wenn Sie beispielsweise einen Kernel für einen bestimmte CPU benötigen. Sie können Treiber statisch zum Kernel hinzubinden oder als Modul nachladbar gestalten.
Wenn Sie das Menü verlassen, ist die Datei .config nach Ihren Wünschen angepasst worden.
Übersetzen des Kernels
Nun rugen Sie make auf. Dadurch wird der Kernel übersetzt. Beim ersten Mal kann dies durchaus lang dauern.Mit der Option -j wird die Anzahl der maximalen parallelen Threads bei der Übersetzung angegeben. Man empfielt die doppelte Zahl der Prozessorkerne.
make -j 8Aus dem Übersetzungslauf entstehen:
- vmlinux: der Kernel
- System.map: Datei mit den Debug-Informationen
- arch/i386/boot/bzImage, die ins boot-Verzeichnis gehört
make install make modules_install
Patch eines Kernels zu einem Realtime-Kernel
Ein Realtime-Kernel ist nicht etwa schneller als ein normaler Kernel, sondern garantiert ein Antwortverhalten in einer definierten Zeit.Um einen Linux-Kernel zu einem Realtime-Kernel zu machen, wird ein Patch durchgeführt. Diesen Patch kann man ebenfalls von www.kernel.org herunterladen. Ein Patch gehört immer zu einem bestimmten Kernel, so dass die Nummern von Kernel und Patch übereinstimmen müssen. Der Patch wird typischerweise unterhalb des Basisverzeichnisses des Kernels gespeichert.
wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.23.1-rt11.bz2 tar xfj linux-2.6.23.1.tar.bz2 cd linux-2.6.23.1 bzcat ../patch-2.6.23.1-rt11.bz2 | patch -p1
Entfernen eines Kernels
Nehmen wir an, Sie haben einen Kernel der Version 3.3.2 erstellt, können Sie diesen mit den folgenden Befehlen wieder vom System herunterholen.rm /boot/*-3.3.2 rm -rf /lib/modules/3.3.2/ update-grubDurch den Aufruf von update-grub wird dafür gesorgt, dass der Kernel nicht mehr im Bootmenü erscheint.