Kernel bauen

Aus Ubuntu-Forum Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis


1 Warum selbst einen Kernel bauen

Da Ubuntu möglichst viel Hardware unterstützen soll, ist der Standard-Kernel extrem überladen. Das kann das System langsam und instabil machen. Mit einem selbst gebauten Kernel umgeht man diese Probleme, indem man den Kernel genau auf sein System zuschneidet. Das erfordert zwar viel Übung, bis man einen guten Kernel gebaut hat, es rechnet sich aber in der Leistung und Stabilität. Außerdem gewinnt man einen Einblick in das Innenleben seines Linux.

Den perfekten Kernel wird es nur in wenigen Ausnahmefällen geben. Man arbeitet sich eher an die perfekte Konfiguration schrittweise heran.

2 Vorbereitung

Man installiert folgende Pakete um den Kernel bearbeiten und kompilieren zu können:

sudo apt-get install build-essential kernel-package xmlto libncurses5-dev

Zunächst ist es notwendig, sich die Kernel-Quellen herunterzuladen. Dafür gibt es (mindestens) zwei Möglichkeiten.

  1. Man kann die neueste Version der Kernel-Quellen (am besten stable) direkt von der Seite der Kernelentwickler http://www.kernel.org herunterladen, indem man dort auf den Link "F" (steht für Full Source) klickt. Das Paket speichert man in seinem persönlichen Ordner. Dann verschiebt man das Paket in das Verzeichnis /usr/src:
    sudo mv ~/linux-*.tar.bz2 /usr/src/
  2. Alternativ kann man die Quellen des jeweils aktuellen Ubuntu-Kernels (inklusive der Ubuntu-spezifischen Änderungen) beziehen, indem man das entsprechende Paket installiert:
    sudo apt-get install linux-source

Dann wechselt man in das Verzeichnis:

cd /usr/src

Das Paket entpackt man mit folgendem Befehl:

sudo tar xfvj linux-*.tar.bz2 

Damit die Kernel-Quellen später auch von Programmen gefunden werden können, verlinkt man auf den entpackten Ordner mit einem symbolischen Link:

sudo ln -s Zielordner linux

Als Zielordner ist der eben entpackte Ordner anzugeben.

Nun kann man mit:

cd linux

in den Kernel-Source Ordner hineinwechseln.

3 Konfiguration

Nun kommt man zum wichtigsten und schwersten Teil der ganzen Sache: der Konfiguration.

Um den Kernel richtig zu konfigurieren, sollte man sich über sein System und die verbaute Hardware schlau machen. Hilfreiche Befehle sind hier:

sudo lspci

und

sudo lsusb
Das Konfigurationsmenu

Hat man diese Informationen, kopiert man sich die Konfiguration des alten Kernels in den Ordner:

sudo cp /boot/config-`uname -r` /usr/src/linux/.config

Um in das Konfigurationsmenu zu gelangen, gibt man nun folgendes ein:

sudo make menuconfig

Falls man nur den Kernel upgraden will (bezüglich Sicherheitslecks, Bugs) kann man auch statt des oben genannten Befehls die Kernelkonfiguration des laufenden Kernels übernehmen:

sudo make oldconfig

3.1 Navigation

3.2 Optionen

Wer eine ausführliche Beschreibung der einzelnen Optionen sucht, findet unter den folgenden Links im Gentoo-Wiki eine exzellente Erklärung der Punkte:

4 Den Kernel kompilieren

Wenn die Konfiguration des Kernels überstanden ist, kann man damit beginnen, den Kernel zu kompilieren. Wenn man aus den gleichen Quellen zuvor einen Kernel kompiliert hat, sollte man das Verzeichnis von Überresten säubern:

sudo make-kpkg clean

Nun kann man mit folgendem Befehl ein deb Paket erstellen:

sudo make-kpkg --initrd --revision Kernelversion binary

Als Kernelversion gibt man die Versionsnummer des zu kompilierenden Kernels an, zB.: 2.6.24.3

Wenn man sich sehr gut auskennt, kann man auch den Parameter --initrd weglassen, allerdings müssen dann die Treiber für die Festplatten fest in den Kernel eingebunden werden. Das Wegfallen eines initramfs beschleunigt den Systemstart merklich. Mehr zu initrd gibt es in Wikipedia.

Der Kernel kompiliert nun eine Weile, und wenn er fertig ist kann man die deb Pakete installieren.

5 Installation

Die kompilierten deb Pakete befinden sich nun im Ordner /usr/src:

cd /usr/src

Anschließend kann man die kompilierten Pakete auf folgende Weise installieren, vorausgesetzt, dass sich vorher keine früheren deb Pakete darin befanden:

sudo dpkg -i linux-*.deb

Nach einem Neustart findet sich der Kernel als neuer Eintrag im Grub-Menü. Falls ihr die Fehlermeldung Kernel Panic bekommt, startet das System noch mal neu probiert nochmal, den Kernel zu laden. Falls das nicht erfolgreich war, habt ihr eine wichtige Einstellungen im Kernel verbockt oder ausgelassen. Man bootet den alten Kernel und wiederholt die Anleitung ab

sudo make menuconfig

bis es funktioniert.

6 Links

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Forum
Navigation
Internes
Bearbeitungshilfen
Werkzeuge