Auf meinen Arbeitslaptop und auf meinen privaten Desktop nutze ich Ubuntu 16.04. Da die Ubuntu-Kernel etwas staubig sind, habe ich angefangen selbst einen aktuellen Kernel (4.12.3) zu bauen.
Abhänigkeiten
Zum bauen des Kernels unter Ubuntu benötigt man build-essential
und libssl-dev
. Mit ccache
kann man das bauen beschleunigen1 aus
diesem Grund nutze ich es. Auf kernel.org findet man die neusten
Kernel als tarball zum download.
Kernel bauen
Wenn man die alte Konfiguration beibehalten möchte, dann muss man vorher die laufende Konfiguration in das aktuelle Verzeichnis vom entpackten Kernel kopieren:
cp "/boot/config-$(uname -r)" .config
tar xfvJ linux-4.12.3.tar.xz
cd linux-4.12.3
yes '' | make oldconfig
make CC='ccache gcc' -j $(nproc) deb-pkg LOCALVERSION=-custom
Anschließend kann man die Pakte mit dpkg -i
installieren. Ich
installiere immer alle, außer die Debug Pakete. Diese haben dbg
im Namen.
Fallstricke
Plattenplatz
Zum bauen vom Kernel benötigt sollte man ca. 25GB Plattenplatz einplanen.
Fehlende Firmware
Man sollte nach jedem Kernelupdate mit dmesg
prüfen, ob alles
in Ordnung ist. Bei mir funktionierte nach dem Kernelupdate das
WLAN nicht. Die Ursache war eine zu alte Firmware. Derartige
Probleme lassen sich mitunter recht einfach lösen. Es gibt auf
kernel.org das Repository linux-firmware. Dort findet man die
offiziellen Firmware Blobs.
Entweder man führt make install
aus oder man kopiert die fehlenden
Blobs nach /lib/firmware/
. Ich kopiere die fehlenden Blobs immer per
Hand hin, welche Blobs fehlen verrät dmesg
in der Regel.
andere make targets
Wenn man statt yes '' | make oldconfig
yes '' | make localmodconfig
verwendet
enthält der neue Kernel nur die Module, welche der aktuelle Kernel geladen hat. Dadurch
spart massiv Zeit beim bauen und der Kernel wird auch viel kleiner2.