Server:Linux Kernel neu bauen/nachbauen/compilieren (aus Vanilla-Sourcen)
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.