Linux: Kernel compilieren leicht gemacht [Debian]

This post was published 12 years 8 months 9 days ago, so the post may be outdated.

Ich habe mich die letzten Tage intensiv mit dem Backen von Linux Kernel beschäftigt und aus diesem Grund, schreibe ich auch mal eine kleine Anleitung darüber.
Eigene Kernel zu erstellen ist eigentlich nicht besonders schwer, man muss nur aufpassen, welche genauen Einstellungen man macht.

ICH EMPFEHLE DIESES TUTORIAL NICHT FÜR ANFÄNGER! ES ERFORDERT EINIGE LINUX-KENNTNISSE!
Für Anfänger empfehle ich den Standardkernel zu verwenden.

Pakete aktualisieren
Als erstes ist es sehr empfehlenswert mal die Pakete zu aktualisieren und einige benötigte Pakete ebenfalls zu installieren:
apt-get update
apt-get upgrade
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 bin86

Vorbereitung des Kernels
Nach dieser Aktualisierung/Installation laden wir mal den neuen Kernel in den richtigen Ordner herunter und entpacken diesen:
Aktuelle Kernels gibts immer auf kernel.org
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.4.tar.bz2 # Herunterladen
tar xfvj linux-3.2.4.tar.bz2 # Entpacken
ln -s linux-3.2.4 linux # Link erstellen / Erleichert die Arbeit

Nun die vorhandene .config von dem derzeitigen Kernel in das Verzeichnis kopieren:
zcat /proc/config.gz >> /usr/src/linux/.config
ODER
cp /boot/config-`uname -r` ./.config

Dieser Schritt MUSS nicht zwingend funktionieren. Einige Kernels verwenden keine .config.

grsecurity
Optional gibt es auch noch einen Patch für den Kernel namens “grsecurity”.
Dieser kann die Sicherheit des Kernels erhöhen.
Diese Erweiterung kann auf 4 verschiedene Modis eingestellt werden: Low, Medium, High und Custom.
Wer sich etwas mit grsecurity auskennt, kann diesen gerne installieren. Anfängern empfehle ich nicht das zu verwenden.

cd /usr/src/linux # Verzeichnis des neuen Kernels
wget # Herunterladen
patch -p1 < grsecurity-2.2.2-3.2.4-201202032052.patch # Aktuellen Kernel patchen rm grsecurity-2.2.2-3.2.4-201202032052.patch # Patch löschen

Der Befehl zum Herunterladen des GRSecurity Patches funktioniert nicht immer, da die ältere Version immer von deren Server gelöscht wird.
Um den neusten Link herauszufinden, müsst ihr auf folgende Seite gehen: http://grsecurity.net/test.php
Dort nehmt ihr die aktuellste Version, die immer oben ist.

Die aktuellsten Versionen findet man immer unter: grsecurity.net

Einstellungen laden
Um die aktuellen Einstellungen eurer .config Datei zu laden - falls euer derzeitiger Kernel die .config unterstützt - müsst ihr den Menüpunkt "Load an Alternate Configuration File" auswählen und danach mit Enter bestätigen.

Konfiguration des Kernels
Nun können wir unseren Kernel konfigurieren.
Dafür empfehle ich euch die etwas grafische Ansicht für Server, welcher mit folgenden Befehl gestartet werden kann:
make menuconfig

Dies sieht in etwa dann so aus:

In diesem Menü könnt ihr nun euren Kernel konfigurieren.
Ich empfehle den Module Support eures Kernels zu aktivieren.

grsecurity kann - sofern installiert - wie folgt eingestellt werden: Security options -> Grsecurity
In diesem Menüpunkt könnt ihr auch die vorkonfigurierten Einstellungen nehmen. Mehr Informationen zu den Modis findet ihr hier: http://grsecurity.net/confighelp.php/

Solltet ihr mit eurer Konfiguration fertig sein, müsst ihr nun mit der rechten Pfeiltaste auf "Exit" wechseln und dann mit Enter bestätigen.
Nun werdet ihr gefragt, ob ihr die aktuellen Änderungen speichern wollt. ("Do you wish to save your new kernel configuration?")
Natürlich wollen wir unsere getätigten Einstellungen speichern und deshalb wählen wir "Yes" und drücken zum abschließen die Enter-Taste.

Compilieren eures Kernels
Da wir nun die Konfiguration erstellt haben, können wir unseren Kernel endlich compilieren/kompilieren.

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Ihr könnt mit dem Parameter append-to-version bestimmen, wie euer Kernel weiters heißen soll.
Solltet ihr "-custom" verwenden, so wird der Kernel danach heißen: 3.2.4-custom
Wenn ihr "-custom" verwendet UND grsecurity aktiviert habt, so heißt euer neuer Kernel: 3.2.4-custom-grsec

Achtung: Der Vorgang zum compilieren eures Kernels kann einige Stunden dauern! Hängt natürlich auch von der Leistung ab.

Installation des Kernels
Nach dem Compilierungsvorgang ist euer Kernel nun bereit zur Installation.
Der verwendete Befehl erstellt euch eine .deb Datei, womit ihr nun leicht euren Kernel installieren könnt.

cd .. # Ordner wo die .deb liegen wechseln
dpkg -i linux-image-3.2.4*.deb # Image installieren
dpkg -i linux-headers-3.2.4*.deb # Header installieren

Die Installation dauert standardgemäßg nur einige Sekunden bis wenige Minuten.

Bootloader bearbeiten
Damit euer neuer Kernel geladen wird, müsst ihr eueren Bootloader bearbeiten.
Wenn ihr den GRUB-Bootloader verwendet, könnt ihr diesen mit folgenden Befehlen bearbeiten:

nano /boot/grub/menu.lst
... ODER
nano /boot/grub/grub.cfg

Ziel ist es, den alten Kernel mit "#" auszukommentieren!

Wenn ihr nun den Bootloader richtig bearbeitet habt, trennt euch nur mehr ein Neustart von euren neuen Kernel:
reboot

Um zu kontrollieren, ob ihr euren neuen Kernel verwendet, könnt ihr folgenden Befehl verwenden:
uname -a

Viel Spaß & Freude mit euren neuen selbstgebackenen Kernel!

FAQ / Hinweise / Notizen
Ich hatte während des Compilierungsvorganges einige Probleme mit "LGUEST".
Nach einigen Erkundungen lasst sich der Fehler beheben, indem man die Einstellung "CONFIG_LGUEST" in der .config auskommentiert.

Bei Fragen, Wünsche oder Vorschläge bitte ein Kommentar hinterlassen! 🙂

Patrik Kernstock

May I introduce my self? I am Patrik Kernstock, 25 years old, perfectionist, born in Austria and living in Ireland, Cork. Me explained in short: Tech- and security enthusiast, series & movies junky. Interesting in Linux, Container-stuff and many software solutions by Microsoft, Veeam and VMware.

0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x