Einen neuen Kernel 5.4 für Debian 9/10 Strech kompilieren.

Hier ein kurzes Tutorial wie man einen Debian Kernel kompiliert. Erste Schritte, sollten sie noch nicht geschehen sein installieren von benötigter Software. Bitte immer nach dem neusten Stable Kernel schauen: Kernel.

Hinweise zum den Kernel Bug im Kernel 5.1: https://linuxnews.de/2019/05/linux-5-1-kann-zu-datenverlust-fuehren/

[Update] Der neue Kernel 5.4 setzt eine zusätzliche Installation von flex, bison und libelf-dev voraus! Schritt 1.: Wichtiger Hinweis: In der Grub Config das hier auskommentieren:

CONFIG_SYSTEM_TRUSTED_KEYS

Installation von Programmen. Schritt 1.:

apt-get install libncurses-dev wget bzip2 make build-essential bc chrpath gawk texinfo libsdl1.2-dev whiptail diffstat cpio libssl-dev flex bison libelf-dev linux-source libssl-dev libncurses5-dev qt4-default qt4-dev-tools

Schritt 2.:

cd
mkdir kernel
cd kernel

Schritt 3.:

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.xz
tar xvf linux-5.4.tar.xz
cd linux-5.4
cp /boot/config-`uname -r` .config

Schritt 4.: mehrere Wege führen nach Rom wobei dieser Schritt der Einfachste ist.

yes "" | make oldconfig

Optional kann man den Kernel mit folgenden Schritten anpassen, man sollte aber wissen was man tut!

  • make config
  • make menuconfig

Schritt 5.: jetzt wird der Kernel mit folgendem Befehl kompiliert. Je nach CPU kann es ein paar Minuten, oder gar Stunden dauern. Wenn man nach make „-j4“ angibt, steht die 4, für 4 Prozessorkerne und kann beliebig je nach Prozessorleistung angehoben werden. Bsp. „make -j16“ Es gilt auch für Thread-Prozessoren. Mit „htop“ oder „top“ „sudo apt install htop“ kann man überprüfen wie viele Prozessoren zur Verfügung stehen. Oder mit dem Befehl „cat /proc/cpuinfo“ kann man die CPU`s auch auslesen.

Neuerung: man kann auch, statt -j4 den Parameter: „ setzen.

make -j4 bzImage modules

Schritt 5.1 Optional .: DEB Pakete erstellen für eine Frische Installation von Debian ein „fakeroot“ ist nicht mehr nötig. Die fertigen Pakete findet man dann ein Verzeichnis drüber „cd ../„.

      • make -j4 deb-pkg clean

Schritt 6.: Kernel installieren:

make modules_install install

Schritt 7.: in die Grub eintragen (Wobei das automatisch nach dem Kompilieren getätigt wird):

update-grub

Schritt 8.: ein beherzter Reboot:

reboot

Have Fun!  

 

Warnhinweis:
Einstellungen und Änderungen am Kernel können bei Fehlkonfiguration die Lauffähigkeit des Systems beeinträchtigen! Nötige Kenntnisse auf einer Skala 1-10 sind mindestens Erfahrungswerte 4 bis 5 von Nöten.

Rechtlicher Hinweis:
Für jegliche Schäden an Hardware bzw. Hardware übernehme ich keine Haftung.

33 thoughts on “Einen neuen Kernel 5.4 für Debian 9/10 Strech kompilieren.

  1. Leider bekomme ich trotz der Beschreibung immer einen mehreren GB großen Kernel mit umfangreichen Treibern trotz yes „“ | make oldconfig. Woran kann das liegen?

    1. Liegt wohl daran das du alle Einstellungen aus dem alten Kernel in den neuen Kernel integrierst.
      Am Besten dann mit:

      make menuconfig

      arbeiten und alle nicht benötigten Treiber entfernst.

        1. Kann es sein, das du nicht den Entsprechenden Kernel für dein System installiert hast, sondern alle Module/Treiber, und nicht den Angepassten für dein System? Das kann dann durchaus sein, dass sich „dein“ Kernel entsprechend beim Kompelieren aufbläht. Im Übrigens sollte, wenn man mit Kernel Kompilieren rumhantiert für genug Festplattenspeicher sorgen(So als kleiner Tipp am Rande).

  2. Also hat einer mal eine abgespeckte version von der ./config file für Vmware linux?
    weil ich kriege so ne 20 g file raus wenn ich mit make config old yes mache.

    DANKE

    1. Ist bei mir leider auch der Fall, der original kernel 4.19.37 hat rund 200MB. Der durch dieses Procedere erstellte wird ca. 12 GB groß 🙁
      Habe es unter root wie auch in diversen Verzeichnissen versucht. Hat jemand eine Idee

  3. leider will es in der aktuellen Version (5.1.5) nicht mehr hat sich hier irgendein Pfad geändert

    INSTALL arch/x86/crypto/aegis128-aesni.ko
    cp: der Aufruf von stat für ‚arch/x86/crypto/aegis128-aesni.ko‘ ist nicht möglich: Datei oder Verzeichnis nicht gefunden
    make[2]: *** [scripts/Makefile.modinst:36: arch/x86/crypto/aegis128-aesni.ko] Fehler 1
    make[1]: *** [Makefile:1294: modinst] Fehler 2
    make: *** [Makefile:312: __build_one_by_one] Fehler 2

      1. Pakete sind alle aktuell. Soll das ganze als root oder user durchgeführt werden,
        Habe ein extra Pfad Verzeichnis für die Datei /media/data/kernel/linux-ver… ist hier vielleicht im Installationsmenü ein Pfad zum Aufruf der datei vorgegeben?

  4. Vielen Dank für diese gut verständliche Anleitung!

    In meinem Fall musste ich den Parameter „CONFIG_SYSTEM_TRUSTED_KEYS“ aus der von /boot kopierten config-Datei auskommentieren, da make sonst abbrechen muss weil es die Datei „debian/certs/debian-uefi-certs.pem“ nicht herstellen kann.

    Zusätzlich hätte ich den Hinweis auf as make-Target „headers_install“ sehr hilfreich gefunden.

    1. Aus der .conf folgende Zeilen einfach entfernen:

      CONFIG_MODULE_SIG_ALL
      CONFIG_MODULE_SIG_KEY
      und
      CONFIG_SYSTEM_TRUSTED_KEYS

      Dann sollte das Kompilieren wieder funktionieren.

  5. Habe es mit neu installiertem System erneut versucht, jetzt erstellt das Gerät mir ein knapp 13 GB großes Paket und überträgt einen ca. 4 GB großen Kernel. Hat jemand eine Idee was da schief läuft?

  6. make mAnuconfig ist sicher falsch
    make mEnuconfig dürfte stimmen

    Bin seit mehr als 10 Jahren mal wieder dabei, mir selbst einen Kernel zu basteln. Damals hieß es mEnuconfig. Letzteres funktioniert auch noch. mAnuconfig spuckte mir etwas wie „keine Ahnung, wie ich das machen soll“ aus

    1. Kleiner Nachtrag:
      Benutze hier einen 3 Jahre alten Acer Aspire (also nicht gerade die schnellste Maschine). Der erste Durchlauf hat locker 4 Stunden benötigt (ok, habe das j4 vergessen, vielleicht wäre es dann schneller gegangen). Wollte Xubuntu 18.10 den neuesten Kernel verpassen und dabei überflüssiges Zeug rausschmeißen.
      Erstmal die Konfiguration des 4.18-Kernels übernommen. make … install … grub … reboot … äh … nimmt sich nicht soooviel, vielleicht 2 Sekunden weniger. Nochmal das ganze, diesmal alles, was irgendwie als Modul ging auch als Modul eingestellt. Hat nur 1,5 Stunden gedauert (diesmal auch mit j4), ein Teil der Module war ja schon fertig. Nun ja, nochmal etwa 2 Sekunden rausgekitzelt, insgesamt also etwa 4 Sekunden je Neustart. Sonstige Performanceverbesserungen leider nicht erkennbar.
      Ist nur mein Experimentiersystem, ich werde noch ein wenig weiterfummeln. Habe aber den Eindruck, dass die Performancegewinne durch eigene Kernel bei weitem nicht mehr so toll sind, wie das noch zu Zeiten von 2.irgendwas war. Das hat durchaus etwas Gutes: Wenn ein Generic Kernel kaum langsamer ist als ein an den jeweiligen Rechner angepasster Kernel, dann kann man sich das Gefummel sparen. Die Freaks wird es vielleicht ärgern, für die normalen User dürfte das aber ok sein.

  7. Gute Beschreibung, ich probiere mich gerade daran.
    Unter Schritt 3 scheint aber ein Fehler. „tar xvf linux-4.13.93.tar.xz“ die „9“ ist zuviel.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.