Kernel unter Debian kompilierenUnter Debian (gleiches galt auch für Kubuntu) hatte ich neulich das Problem, dass das Audio-Interface meines neuen Denon-Mischpults (Denon MC7000) nicht erkannt wurde. Oberwohl der Audiotreiber im Kernel ist, gabs es ein Problem mit dem internen Zeitgebers des D/A-Wandlers. Ein klassischer Firmwarebug bei Denon. Da es von Denon nur die Antwort gab, dass sie nichts ändern werden, weil das Mischpult für Serrato "optimiert" sei, hieß es also selbst Hand anzulegen.
wenn man es das erste Mal macht, scheint es kompliziert zu sein, tatsächlich ist es nur das Abarbeiten von wenigen Schritten.

Ich hatte über die Alsa Mailingliste Gleichgesinnte gefunden, die auch schon seit ein paar Wochen an dem Problem arbeiteten. Die schnelle Lösung war einen Patch in den Kernel einzufügen und den Kernel dann zu kompilieren. Phantastisch. Dafür liebe ich die Linux-Community :)

Zum Denon-Controller werde ich übrigens noch einen eigenen Beitrag erstellen.

Hier ist meine Vorgehensweise zum kompilieren des Kernel (5.5.1) unter Debian / Ubuntu :


1. Build-Umgebung als Root installieren

    • sudo apt-get build-dep
    • sudo apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf


2. Ab hier alles als user weiterarbeiten

    • neues Verzeichnis erstellen (z.B. /home/user/Kernel)
    • Kernel-Sourcen holen: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.1.tar.xz
    • Entpacken mit dem Programm der Wahl (z.B. mit Krusader oder direkt mit tar)
    • ins Kernelverzeichnis wechseln: z.B. cd /home/user/Kernel/linux-5.5.1

 

3. Den Kernel und die Module konfigurieren:

cp -v /boot/config-$(uname -r) .config

Beachten, dass wenn der Kernel neuer ist, als der momentan verwendete, dann gab es vermutlich viele Neuerungen und viele neue Module. Wenn man diese nicht alle bestätigen mag (dauert locker mal 20 Minuten) sollte man das hier eingeben: 

yes '' | make oldconfig

(damit werden alle neueren Einträge auf ihre Standardwerte gesetzt, so wie es die Kernelentwickler sich dachten)

Falls man doch selbst alles konfigurieren möchte:
make menuconfig – Text based oder
make xconfig – X windows (Qt) based (KDE) oder
make gconfig – X windows (Gtk) based (Gnome)
     

4. (Nur bei eigenen Kerneländerungen nochtwendig) Kernel patchen

5. Module "strippen"

Damit die initrd nicht zu groß wird und das System dann nicht startet, ist es gelegentlich notwendig, die Module zu strippen:

Dazu die Datei /etc/initramfs-tools/initramfs.conf mit einem Editor ändern: „MODULES=most“ ändern in „MODULES=dep“.

 

6. Kernel kompilieren (dauert je nach CPU länger als 60min!)

    • make -j und Anzahl an CPU Kernen, die im System sind: z.B.:  make -j 4

    • Im Verzeichnis bleiben (z.B. /home/user/Kernel/linux-5.5.1) und als root weiterarbeiten:
      sudo make modules_install
      sudo make install
    

7. Grup anpassen, damit das Startmenu für 5s sichtbar wird

Möchte man Grub anpassen, weil es zum Beispiel vorher nicht sichtbar war:
      GRUB_DEFAULT=saved
      GRUB_SAVEDEFAULT=true
      #GRUB_HIDDEN_TIMEOUT=0
      #GRUB_HIDDEN_TIMEOUT_QUIET=true
      #GRUB_TIMEOUT_STYLE=hidden
      GRUB_TIMEOUT=5
      GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
      GRUB_CMDLINE_LINUX=""

8. System mit neuen Kernel booten