Um einen neuen Kernel auszuprobieren, kann dieser wie im letzten Artikel diesen aus dem Experimental Zweig installieren werden, oder man kompiliert diesen selber. Um den aktuellen Kernel 4.4 RC2 selber zu kompilieren, müssen zuerst ein paar Tools installiert werden:
apt-get --no-install-recommends install kernel-package libncurses5-dev fakeroot gcc-4.9-plugin-dev
Anschließend den Kernel herunterladen und entpacken.
mkdir -p /usr/src/kernel cd /usr/src/kernel wget --no-check-certificate https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.4-rc2.tar.xz tar xvf linux-4.4-rc2.tar.xz cd linux-4.4-rc2
Jeder Kernel hat aufgrund seiner unterstützten Geräte verschiedene Einstellungesmöglichkeiten, welcher über den Befehl menuconfig eingestellt werden können. Es ist jedoch nicht zu empfehlen, den gesamten Kernel per Hand einzurichten, es sei denn man muss es unbedingt. Zu empfehlen ist, statt dessen die Konfiguration eines bestehenden Kernels zu verwenden.
cp /boot/config-$(uname -r) .config
Auch wenn die Konfig auf diesem Weg übernommen wird, sollte diese über menuconfig dennoch einmal über menuconfig abgespeichert werden.
make menuconfig
Leider ist im Kernel 4.4 RC2 ist noch ein Bug enthalten, aufgrund dessen die Kompilierung mit folgender Fehlermeldung abbricht:
RE: error: Cycle detected: lnet -> libcfs -> lnet
Dazu gibt es jedoch bereits einen Patch, welcher vor dem Kompilieren noch eingespielt werden muss. Im nachfolgenden Beispiel wird voraussgesetzt, dass die der Patchals licfs-1-7-1.patch abgespeichert wurden.
wget https://blog.cscholz.io/wp-content/uploads/sites/2/2015/12/licfs-1-7-1.patch /usr/src/kernel/linux-4.4-rc2 $ patch -p1 < licfs-1-7-1.patch
Anschließend die Verzeichnisse bereinigen und den Kernel kompilieren. Der Parameter revision gibt dabei dem Kernel einen eindeutigen Namen, wie zum Beispiel 4.4.rc2.20151123.
make-kpkg clean fakeroot make-kpkg --initrd --revision=4.4.rc2.20151123 kernel_image kernel_headers
Im Verzeichniss /usr/src/kernel sollten sich nach mehreren Minuten oder Stunden zwei .deb Dateien befinden.
- linux-headers-4.4.0-rc2_4.4.rc2_.20151123_amd64.deb
- linux-image-4.4.0-rc2_4.4.rc2_.20151123_amd64.deb
Der fertige Kernel kann anschließend per
dpkg -i *.deb
installiert werden. Die Anmerkung, dass ein RC Kernel niemals produktiv eingesetzt werden sollte, spare ich mir an dieser Stelle 😉
Update vom 29.11.2016
Fehler: Cannot use CONFIG_GCC_PLUGINS: your gcc installation does not support plugins, perhaps the necessary headers are missing?
Lösung: apt-get install gcc-4.9-plugin-dev