Debian ist eine schöne Sache. Wirklich. Ich mag Debian – aber ab und an ist mir der alte, gut gereifte Kernel etwas zu alt. Aktuell liegt es an fstrim und da ich ohnehin schon einen eigenen Gentoo-Kernel für Debian baue, habe ich beschlossen das Ganze vernünftig zu machen und mir gleich noch einen Vanilla-Kernel zu bauen. Unschön ist dabei nur, jede deb-Datei händisch installieren zu müssen.
Damit dieses einzeln Installieren ein Ende hat, hilft nur ein sogenanntes Meta-Paket – ein Debian-Paket, das nur aus Abhängigkeiten besteht. Diese bauen wir mit dem Tool ‚Equivs‘, welches wir uns erstmal installieren müssen:
apt install equivs
Ist das Paket installiert, folgt das Erstellen der Paketkonfiguration:
equivs-control my-kernel-package
Dieser Befehl gibt uns eine Datei, die es anzupassen gilt – Augenmerk liegt dabei auf der Zeile „Depends:“, da wir dort unsere Abhängigkeiten, die gebauten Debian-Pakete, eintragen. Für den heute aktuellen Kernel sieht diese Datei wie folgt aus:
### Commented entries have reasonable defaults. ### Uncomment to edit them. # Source: <source package name; defaults to package name> Section: misc Priority: optional # Homepage: <enter URL here; no default> Standards-Version: 5.9.10 Package: vanilla-kernel Version: 5.9.10 Maintainer: Viktoria Rei Bauer <debian@example.com> # Pre-Depends: <comma-separated list of packages> Depends: linux-image-5.9.10,linux-headers-5.9.10,linux-libc-dev # Recommends: <comma-separated list of packages> # Suggests: <comma-separated list of packages> # Provides: <comma-separated list of packages> # Replaces: <comma-separated list of packages> Architecture: amd64 # Multi-Arch: <one of: foreign|same|allowed> # Copyright: <copyright file; defaults to GPL2> # Changelog: <changelog file; defaults to a generic changelog> # Readme: <README.Debian file; defaults to a generic one> # Extra-Files: <comma-separated list of additional files for the doc directory> # Links: <pair of space-separated paths; First is path symlink points at, second is filename of link> # Files: <pair of space-separated paths; First is file to include, second is destination> # <more pairs, if there's more than one file to include. Notice the starting space> Description: <short description; defaults to some wise words> Meta-Package for vanilla kernel built based on debian .config
Nachdem die Datei geschrieben ist, gilt es das Debian-Paket zu bauen:
equivs-build my-kernel-package
Das Ergebnis ist eine schicke deb-Datei, die man dann in sein Repository hinzufügen kann. Ich selbst nutze dafür den Sonatype Nexus.
Auf den Client-PCs muss dann nur das Repository in die sources.list aufgenommen und der PGP Key importiert werden und schon steht der Installation nichts mehr im Wege.