Server:Linux Kernel neu bauen/nachbauen/compilieren (aus Vanilla-Sourcen)

Aus manitu Wiki
Wechseln zu: Navigation, Suche

Diese Anleitung zeigt Ihnen, wie Sie einen Linux Kernel komplett aus den Vanilla-Sourcen neu bauen oder nach einem bestehenden Kernel nachbauen.

Hinweise

Diese Anleitung geht davon aus, dass Sie über ein lauffähiges System (alternativ im Rettung-System) verfügen.

Anleitung

Hinweise zur Konfiguration

Für das Bauen eines Linux Kernels aus den Vanilla-Sourcen ist eine Konfiguration in Form einer .config-Datei nötig. In dieser Datei wird definiert, wie der spätere Kernel aussieht, insbesondere für welche Hardware er Unterstützung mitbringt.

Die im tar-Ball der Vanilla-Sourcen mitgelieferte .config-Datei ist in der Regel nicht für den produktiven Server-Einsatz geeignet.

Herunterladen und entpacken der Vanilla-Sourcen

Laden Sie die Quellen des gewünschten Linux Kernels von http://www.kernel.org/ z.B. mit

$ cd /usr/src
$ wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-[VERSION].tar.bz2

herunter. Sofern nichts dagegen spricht, empfehlen wir Ihnen grundsätzlich, immer die Version zu verwenden, die unter Latest Stable Kernel angegeben wird. Ältere Zweige wie 2.4, 2.6, 3.0 etc. sollten Sie nur verwenden, wenn dies absolut nötig ist.

Sicherheitshinweis: Sie sollten ggf. die Herkunft der Quelldatei anhand der Signatur, welche unter

http://www.kernel.org/pub/linux/kernel/v3.0/linux-[VERSION].tar.sign

verfügbar ist, via GnuPG überprüfen. Eine Anleitung dazu finden Sie hier.

Entpacken Sie die Quellen via

$ tar xjvf linux-[VERSION].tar.bz2

Legen Sie anschließend einen Symlink an (und entfernen vorher den existierenden Symlink) und wechseln Sie in das Verzeichnis:

$ rm linux
$ ln -s linux-[VERSION] linux
$ cd linux

Konfiguration

wenn Sie eine ältere/bestehende/lauffähige/funktionierende .config haben (Klonen einer bestehenden Konfiguration)

Hinweis: Die meisten Linux-Distributionen sowie unsere Installationen auf Root-Servern legen die Kernel-Konfiguration im /boot-Verzeichnis als config-[VERSION] ab.

Wenn Sie eine ältere/bestehende/lauffähige/funktionierende .config-Datei haben, kopieren Sie diese in das soeben entpackte Verzeichnis, z.B. via

$ cp /boot/config-[VERSION_ALT] .config

Rufen Sie anschließend im Verzeichnis

$ make oldconfig

auf.

Für neu hinzugekommene Funktionen etc. müssen Sie nun beantworten, ob diese in Ihren Kernel aufgenommen werden sollen oder nicht. Orientieren Sie sich bitte dazu an den Hinweisen im übernächsten Abschnitt (zur Konfiguration ohne vorliegende Konfiguration).

wenn Sie die Konfiguration eines bestehenden Kernels übernehmen möchten (Klonen eines laufenden Kernels)

Wenn Sie keine .config-Datei dafür aber einen laufenden Kernel haben (bitte verwenden Sie nicht den aus dem Rettungs-System), können Sie dessen Konfiguration über

$ zcat /proc/config.gz > .config

auslesen.

Rufen Sie anschließend im Verzeichnis

$ make oldconfig

auf.

Für neu hinzugekommene Funktionen etc. müssen Sie nun beantworten, ob diese in Ihren Kernel aufgenommen werden sollen oder nicht. Orientieren Sie sich bitte dazu an den nachfolgenden Hinweisen zur Konfiguration.

ohne vorliegende .config (Konfiguration komplett neu/from scratch erstellen)

Wenn Sie einen Linux Kernel ohne vorliegende .config-Datei neu bauen möchten, müssen Sie den Kernel vollständig neu konfigurieren.

Dies erfolgt über den im nächsten Abschnitt angegebenen Befehl ($ make config).

Konfiguration (allgemein)

Rufen Sie nun (sofern gewünscht)

$ make config

auf, um weitere Veränderungen vorzunehmen.

Bei der Konfiguration ist es insbesondere wichtig, dass die Konfiguration auf die Hardware und dabei besonders auf die Netzwerk-Konfiguration abgestimmt ist. Sie sollten im Zweifelsfall alle gängigen Netzwerkkarten-Treiber (vorzugsweise nicht als Modul) in den Kernel einbinden (es sei denn, Sie übernehmen eine funktionierende Konfiguration).

Eine gute Einführung in die Einstellungsmöglichkeiten sowie eine grobe Orientierung finden Sie unter http://www.gentoo.org/doc/de/kernel-config.xml

Darüber hinaus sollten Sie auf keinen Fall die Architektur (z.B. von i386 auf amd64) oder von 32 auf 64 bit ändern, ohne dass Sie wissen, was Sie tun!

Bauen (Compilieren) des Kernels und der Module

Bauen Sie nun den Kernel und die Module via

$ make bzimage
$ make modules

Dieser Prozess kann je nach Hardware und freien Ressourcen Minuten bis mehrere Stunden dauern.

Installation

Installieren Sie nun die Module über

$ make modules_install

Dies erstellt das Verzeichnis /lib/modules/[VERSION] und kopiert die nötigen Module an die richtigen Stellen.

Für die Installation des Kernels selbst samt .config-Datei und System.map-Datei empfehlen wir, dies manuell durchzuführen, da der oftmals vorgeschlagene Befehl $ make install keine bzip-komprimierte Version installiert. Gehen Sie daher wie folgt vor:

$ cp arch/x86/boot/bzImage /boot/bzImage-[VERSION]
$ cp .config /boot/config-[VERSION]
$ cp System.map /boot/System.map-[VERSION]

Eintragen in Boot-Loader

Tragen Sie nun den neuen Kernel in den Boot-Loader, z.B. Grub, ein und rebooten Sie Ihren Server.