Login
Newsletter
Werbung

Do, 31. Mai 2012, 15:00

Selbstgebacken: Kernel kompilieren nach Rezept

Das Erstellen eines Kernels aus den Quellen ist kein Voodoo. Hier wird gezeigt, welche Möglichkeiten es aktuell gibt.

Von Mathias

Moderne Linux-Distributionen bringen alles mit: Vom Systemkern über die Anwendungen bis hin zu den bunten Rüschen der graphischen Oberfläche. Für viele Nutzer gehört das Anpassen des Desktops zur Pflicht, das manuelle Installieren von Programmen - meist in einer aktuelleren Version - ist dann die Kür. Den Kernel jedoch lassen viele in Ruhe und vertrauen hier lieber auf die Aktualisierungen des Distributors.

Dabei ist das Erstellen eines Kernels aus den Quellen kein großes Voodoo. In den Grundzügen läuft es wie bei allen anderen Anwendungen auch in drei Schritten:

  • Konfigurieren
  • Kompilieren
  • Installieren

Zur Pflege gehört dann natürlich auch das Aktualisieren des Kernels, das ebenfalls in diesem Artikel behandelt wird.

Ein paar Dinge vorweg

An dieser Stelle ist bei Texten zur Kernel-Kompilierung meist ein Warnhinweis zu finden, der allzu Mutige vor dem Nachmachen warnt. Doch dieser Beitrag richtet sich explizit an jene Anwender, die bislang keine Berührung mit gcc und make hatten. Linux-Nutzer, die gerne den Weg in die tieferen Ebenen ihres Systems finden möchten, sollen hier zum Ausprobieren ermutigt werden. In der Regel richten auch vermurkste Kernel-Eigenkompilate keine dauerhaften Schäden an, sodass ein Neustart mit einer anderen, funktionierenden Version einen zum laufenden System zurückführt.

Dem mündigen Leser seien jedoch drei Hinweise mitgegeben:

  • Kernel-Versionen, die ein »-rc« in der Versionsbezeichnung tragen, sind Entwickler-Kernel und ausschließlich zum Testen und Fehlersuchen gedacht.
  • Ein Eigenkompilat muss nicht immer besser laufen als der Kernel von der Stange. Die Distributoren wissen in der Regel, was sie tun!
  • Bei der ganzen Kompiliererei werden externe Treiber nicht berücksichtigt. Das betrifft proprietäre Treiber wie z.B. für VirtualBox, fglrx (AMD/ATI-Grafik) oder nvidia (Nvidia-Grafik). Diese müssen nach dem Kernel-Bau gegebenenfalls nach den jeweiligen Vorgaben neu erstellt und konfiguriert werden.

Als Beispiel findet die zur Fertigstellung des Beitrags aktuelle Kernel-Version 3.3.2 und deren Nachfolger Verwendung, bei anderen Kernel-Versionen ändern sich dann Bezeichnungen, URLs und Befehle eben entsprechend der jeweiligen Versionsnummer. Um mit dieser Anleitung den Einstieg in die Kernel-Kompilierung zu finden, wird zuerst einmal eine virtuelle Umgebung empfohlen; Ubuntu in einer VirtualBox käme dem in diesem Artikel verwendeten Aufbau am nächsten. Des Weiteren wird hier ausschließlich auf der Text-Konsole gearbeitet, was allerdings eher den Vorlieben des Autors geschuldet ist und der Tatsache, dass sich Konsolenbefehle leichter zu Papier bringen lassen als Mausklicks auf der grafischen Oberfläche.

Beim Bau eines Kernels sollte darauf geachtet werden, dass genug Platz auf dem Datenträger vorhanden ist. Das Kompilieren bläst das genutzte Verzeichnis gerne mal von einem ursprünglich 60 MB großen Archiv über 450 MB für das entpackte Archiv bis auf mehrere Gigabyte nach dem ganzen Vorgang auf. Dazu muss noch der Platz gerechnet werden, den der später installierte Kernel (ca. 120 MB) und die fertigen Module (ca. 2 GB in der Standardkonfiguration von Linux 3.3) belegen. Eine Kontrolle im Vorfeld, zum Beispiel mittels df -h, wieviel Platz auf /boot (mindestens 120 MB), /lib (mindestens 2 GB) und /home (mindestens 8 GB) frei sind, ist im Zweifel also angeraten.

Vorbereiten

Zuerst müssen natürlich einige Vorbereitungen getroffen werden. Es wird ein Verzeichnis zum Arbeiten benötigt und natürlich der Quellcode des Kernels. In diesem Beispiel wird ein Verzeichnis direkt im Home-Verzeichnis des Anwenders verwendet:

$ cd ~
$ mkdir Kernel
$ cd Kernel

Die Kernel-Quellen können bequem als vollständiges Archiv von kernel.org heruntergeladen werden. Am kleinsten sind die mit xz komprimierten Dateien, sie erfordern jedoch die XZ-Utils, die je nach Distribution eventuell nachinstalliert werden müssen.

$ wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.3.2.tar.xz
$ tar xf linux-3.3.2.tar.xz

tar entpackt das Archiv in das Unterverzeichnis linux-3.3.2, in dem die weitere Arbeit erfolgen wird.

Konfigurieren

Die Quellen liegen nun vor, also kann die Konfiguration des Kernels erfolgen. Am einfachsten ist es, die bereits für den aktuell laufenden Kernel vorhandene Konfiguration als Ausgangspunkt zu nutzen. Diese befindet sich im Verzeichnis /boot und wird zu den Kernelquellen kopiert. Das Kompilierwerkzeug make erwartet die Konfiguration in der Datei .config.

$ cd linux-3.3.2
$ cp /boot/config-`uname -r` .config

menuconfig präsentiert sich aufgeräumt

Mathias Florian Menzer

menuconfig präsentiert sich aufgeräumt

Die Belegung der F-Tasten ist in nconfig immer sichtbar

Mathias Florian Menzer

Die Belegung der F-Tasten ist in nconfig immer sichtbar

Meist stammt diese Konfiguration von einem älteren Kernel als dem, den zu bauen man im Begriff ist. In diesem Fall fehlen der Konfiguration eventuell Optionen zu neueren Funktionen. Um dies zu vermeiden, erstellt man eine vollständige Konfigurationsdatei. Der folgende Befehl liest die vorhandenen Einstellungen und fragt die Optionen für neue, nicht definierte Funktionen ab. Ist man sich unsicher, was man auswählen sollte, kann man auf die Vorgaben vertrauen. Diese sind immer die Standard-Option und können per »Enter« ausgewählt werden.

$ make oldconfig

Ist man des minutenlangen Betätigens der »Enter«-Taste überdrüssig, so kann man auch den Befehl yes zu Hilfe nehmen. Dieser simuliert das Drücken der »Enter«-Taste, bis make oldconfig durch alle Optionen gelaufen ist:

$ yes "" | make oldconfig

In diesem Fall möchte man die Konfiguration vielleicht anschließend kontrollieren und gegebenenfalls anpassen. Zumindest ist es interessant, mal einen Blick auf die verschiedenen Optionen und Funktionen zu werfen:

$ make menuconfig

Für die Darstellung des Menüs wird das Paket »ncurses-devel« benötigt.

Nun ist die Konfiguration vollständig und der eigentliche Kernelbau kann beginnen.

Kommentare (Insgesamt: 32 || Alle anzeigen )
Tolle Anleitung!! (Reinhard Auner, Sa, 14. März 2020)
Tolle Anleitung (Frank Syfuß, Di, 6. September 2016)
Gelungene Anleitung (Benedikt Neumayr, So, 19. Juni 2016)
Re: Was bringt mir selbst Komplilieren ohne Konfigurieren? (Der Kranich, Fr, 13. Mai 2016)
brendo (wozu, So, 3. Juni 2012)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung