Kurzanleitungen/Howtos

Linux-Kernel von Fedora (oder anderen Distributionen) unter Debian nutzen

16.01.2018

Paket

Sollten Sie jemals in die Verlegenheit kommen, einen distributionsfremden Linux-Kernel unter Ihrem Debian-System verwenden zu wollen, so hilft Ihnen dieses Howto, das das Vorgehen exemplarisch mit dem Fedora-27-Kernel für ein 32-bittiges Debian beschreibt. Für Ihre Zwecke müssen Sie die einzelnen Befehlszeilen entsprechend anpassen.

1. Installation der Entwicklerpakete

Um Kernel-Pakete bauen zu können, sind eine Reihe von Komponenten (Compiler, Linker, Bibliotheken, etc.) nötig, die Sie mit den folgenden Zeilen installieren können:
apt-get build-dep linux-image-686
apt-get install rpm2cpio wget libssl-dev

1.1 Sonderweg für Debian 9

Unter Debian 9 fehlt leider das Paket "kernel-package", welches das Skript "make-kpkg" enthält, das zum Erstellen der Kernel-Pakete benötigt wird. Installieren Sie deshalb das Paket folgendermaßen:

wget http://goos-habermann.de/howtos/kernel-package_13.014+nmu1_all.deb
dpkg -i kernel-package_13.014+nmu1_all.deb
apt-get install -f

1.2 Für alle anderen Debian-Versionen

Unter den anderen Debian-Versionen können Sie das Paket einfach über den Paketmanager installieren:
apt-get install kernel-package

2. Quelltext holen und entpacken

Der Quelltext des Fedora-27-Linux-Kernels steckt in einem SRPM, das Sie mit dem folgenden wget-Befehl herunterladen können:
wget http://mirror.de.leaseweb.net/fedora/linux/releases/27/Server/\
source/tree/Packages/k/kernel-4.13.9-300.fc27.src.rpm
Entpacken Sie den Quelltext anschließend mit:
rpm2cpio kernel-4.13.9-300.fc27.src.rpm | cpio --extract --make-directories --verbose
tar xfvJ linux-4.13.tar.xz
cd linux-4.13

3. Patches anwenden

Der Fedora-Kernel wird mit einer Reihe von Patchdateien geliefert, die Sie anwenden müssen, um den Fedora-Kernel zu erhalten. Zum Anwenden aller Patches führen Sie die folgenden Zeilen aus:
ls ../*.patch | while read p
do
	patch -p1 < $p
done

4. Kernel konfigurieren

Um den Kernel kompilieren zu können, müssen Sie eine Konfigurationsdatei angeben, in der festgelegt wird, welche Funktionen in den Kernel und die Module integriert werden sollen. Dazu haben Sie verschiedene Möglichkeiten:

1. Verwendung der mitgelieferten Kernelkonfiguration:

cp ../kernel-i686.config .config

2. Erstellung einer Kernelkonfiguration anhand aktuell geladener Module:

make localmodconfig

3. Händische Auswahl aller Optionen:

make menuconfig

5. Kernelkompilierung und Bau des Kernelpaketes

Abschließend führen Sie folgende Befehle aus, um den Kernel zu kompilieren und die Debian-Pakete für das Kernel-Image und die Kernel-Header zu bauen. Ersetzen Sie hierbei "<Anzahl Threads>" durch Anzahl der zum Kompilieren zu verwendenden CPUs.
touch REPORTING-BUGS
make-kpkg kernel_headers
make-kpkg -j<Anzahl Threads> --initrd kernel_image
Achtung! Achtung! Die folgenden Anweisungen richten sich ausschließlich an fachkundige Personen. Bei jedem Schritt kann es zum kompletten Datenverlust kommen. Alle Angaben ohne Gewähr! Die Anweisungen, Skripte, etc. sind ausschließlich für Lernzwecke auf Lernsystemen und nicht für Produktivumgebungen bestimmt!