Linux: Kernel compilieren leicht gemacht [Debian]
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! 🙂