8.6. Einen neuen Kernel kompilieren

Warum sollte jemand einen neuen, eigenen Kernel kompilieren wollen? Dies ist oft nicht nötig, da der Standardkernel in Debian die meisten Konfigurationen bedient. Auch bietet Debian häufig verschiedene alternative Kernel an. Sie sollten also vielleicht erst prüfen, ob ein alternatives Kernel-Image verfügbar ist, das besser zu Ihrer Hardware passt. Allerdings kann es unter folgenden Umständen trotzdem nützlich sein, einen neuen, eigenen Kernel zu kompilieren:

8.6.1. Kernel-Image-Verwaltung

Sie müssen keine Angst davor haben, auszuprobieren, einen eigenen Kernel zu kompilieren. Es macht Spaß und lohnt sich.

Um auf Debian-Art einen Kernel zu kompilieren, benötigen Sie ein paar Pakete: fakeroot, kernel-package, linux-source-2.6 und ein paar weitere, die vielleicht schon installiert sind (/usr/share/doc/kernel-package/README.gz enthält die komplette Liste).

Diese Methode erstellt ein .deb-Paket aus den Kernelquellen und, falls Sie Nicht-Standard-Module verwenden, auch ein synchrones abhängiges .deb für diese Module. Dies ist ein besserer Weg, um die Kernel-Images zu verwalten (verglichen mit der Nicht-Debian-Methode, einen Kernel zu erzeugen); /boot enthält den Kernel, die dazugehörige System.map und ein Log der aktiven Konfigurationsdatei für den Bau des Kernels.

Beachten Sie, dass Sie Ihren Kernel nicht auf Debian-Art kompilieren müssen, aber wir meinen, dass es erheblich sicherer und einfacher ist, das Paketsystem zur Verwaltung der Kernel zu verwenden. Sie können Ihre Kernelquellen auch direkt von Linus beziehen statt aus dem Paket linux-source-2.6 und trotzdem die kernel-package-Methode zum Kompilieren nutzen.

Sie finden eine komplette Dokumentation zur Nutzung von kernel-package unter /usr/share/doc/kernel-package. Hier im Installationshandbuch geben wir nur eine kurze Einführung.

Wir gehen davon aus, dass Sie freien Zugriff auf Ihren Rechner haben und die Kernelquellen irgendwo in Ihr Home-Verzeichnis entpacken werden[18]. Ebenso gehen wird davon aus, dass Ihre zu bauende Kernel-Version 3.2.0 ist. Vergewissern Sie sich, dass Sie sich in dem Verzeichnis befinden, in das Sie die Kernelquellen entpacken möchten und extrahieren Sie sie mittels tar xjf /usr/src/linux-source-3.2.0.tar.bz2. Wechseln Sie in das neu erstellte Verzeichnis linux-source-3.2.0.

Sie können jetzt Ihren Kernel konfigurieren. Führen Sie make xconfig aus, wenn X11 installiert, konfiguriert und gestartet ist; andernfalls nehmen Sie make menuconfig (hierzu muss das Paket libncurses5-dev installiert sein). Nehmen Sie sich die Zeit, die Onlinehilfe zu lesen, und wählen Sie sorgfältig die Optionen aus. Wenn Sie Zweifel haben, ist es typischerweise am besten, den zweifelhaften Gerätetreiber mit in den Kernel zu integrieren (ein Gerätetreiber ist ein Stück Software, das Hardware-Peripherie verwaltet, wie z.B. Ethernet-Karten, SCSI-Controller und so weiter). Seien Sie vorsichtig: andere Optionen, die nicht zu einer bestimmten Hardware-Komponente gehören, sollten Sie auf dem Standardwert belassen, wenn Sie sie nicht verstehen. Vergessen Sie nicht, den Kernel module loader unter Loadable module support zu aktivieren (diese Option ist standardmäßig nicht aktiv). Tun Sie dies nicht, wird Ihr Debian-System Probleme machen.

Säubern Sie den Kernelquellen-Baum und setzen Sie die kernel-package-Parameter zurück. Dies erledigen Sie mit make-kpkg clean.

Kompilieren Sie jetzt den Kernel mit: fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image. Die Versionsnummer 1.0 können Sie nach Belieben ändern. Sie wird nur von Ihnen selbst verwendet, um Ihre verschiedenen Kernel zu verwalten. Ebenso können Sie jedes andere Wort statt custom verwenden (z.B. den Host-Namen des Rechners). Die Kernelkompilierung könnte eine ganze Weile dauern, abhängig von der Leistungsfähigkeit Ihres Rechners.

Sobald die Kompilierung beendet ist, können Sie Ihren eigenen Kernel wie jedes andere Paket installieren. Tippen Sie als root ein: dpkg -i ../linux-image-3.2.0-subarchitecture_custom.1.0_s390x.deb. Der Teil subarchitecture im Dateinamen ist eine optionale Bezeichnung für die Unterarchitektur, abhängig davon, welche Kerneloptionen Sie gesetzt haben. dpkg -i ... installiert den Kernel zusammen mit ein paar anderen dazugehörigen Dateien. Zum Beispiel wird die System.map korrekt installiert (dies ist nützlich für die Fehlersuche bei Kernelproblemen) und /boot/config-3.2.0 wird installiert, sie enthält Ihre aktuelle Konfiguration. Ihr neues Kernelpaket ist ebenfalls clever genug, automatisch Ihren Bootloader zu aktualisieren, so dass der neue Kernel benutzt wird. Falls Sie auch ein Modul-Paket erstellt haben, müssen Sie auch dieses Paket noch installieren.

Jetzt ist es Zeit, einen Systemneustart zu machen: lesen Sie aufmerksam alle Warnungen, die die vorherigen Schritte unter Umständen erzeugt haben, und tippen Sie dann shutdown -r now ein.

Mehr Infos über Debian-Kernel und das Kompilieren eines Kernels finden Sie im Debian Linux Kernel Handbook. Die tolle Dokumentation in /usr/share/doc/kernel-package enthält zusätzliche Informationen über kernel-package.



[18] Es gibt auch andere Verzeichnisse, in die Sie die Kernelquellen entpacken und wo Sie Ihren eigenen Kernel bauen können, aber dies ist der einfachste Weg, da er keine speziellen Berechtigungen erfordert.