Kleines Downloadskript für Mainline-Kernel

Da ich wegen meines Notebooks immer eine aktuelle stabile Vanilla-Version von Linux einsetze, habe ich mir in der Vergangenheit angewöhnt regelmäßig bei „www.kernel.org“ nachzuschauen, welches gerade die aktuellste stabile Linux-Version ist. Danach führte der Weg immer zum Mainline-PPA um dort dann die die Debian-Pakete des Kernels herunterzuladen. Diese sind in der Regel kurz nach der Freigabe einer neuen Version verfügbar. Da ich ein bequemer Mensch bin und mir vor allem das händische Herunterladen irgendwann auf den Geist ging, habe ich ein kleines Skript geschrieben, welches diese Schritte automatisiert:

Das Skript schaut auf der Kernel-Webseite nach, welches die aktuellste stabile Version ist und lädt dann aus dem Mainline-PPA die passenden Dateien herunter für den eingesetzten CPU-Typ herunter. Das Skript hat noch drei Parameter, welche für alle selbsterklärend sind, die schon einmal einen Kernel aus dem Mainline-PPA heruntergeladen haben. Das Skript prüft selbstständig ob die CPU und der Kerneltyp zusammenpassen (z.B. macht es keinen Sinn zu versuchen einen „i386“-Kernel vom Typ „snapdragon“ herunterzuladen. Letzteren gibt es nur für den CPU-Typ „arm64“) und lässt nur den Download einer verfügbaren Kombination zu.

Das Skript ist in Python3 geschrieben und benötigt zwei Python-Module, welche aber in allen noch unterstützten Ubuntu und Debian-Versionen vorhanden sind:

sudo apt install python3-urllib3 python3-lxml

Das Skript habe ich auf Github gehostet: https://github.com/glasen/download_kernel

Direkter Download des Skripts: download_kernel.py

4 Kommentare

  1. Da ich seit Jahren auch Mainline-Kernel (im jeweils aktuellen Lubuntu) verwende, das Script mal getestet.

    In einer noch vorhandenen LXenial-x86-Test-VM (mit Liquorix-Kernel) werden mit download_kernel.py statt i386- amd64-Pakete gezogen.
    python3-html5-parser gibt’s in Xenial nicht (kann man manuell installieren), sondern nur python-html5-parser (vll. ist das, sprich Python 2 statt 3, die Ursache für den ersten Punkt).

    Xenial und 32 bit haben zwar keine Bedeutung mehr, aber Du sprichst nur von Ubuntu ohne Versionsangabe und erwähnst i386, amd64, arm64…Dann sollte es auch funktionieren. 😉

    Vorschläge:

    Sinnvoll wäre eine Abfrage direkt vor dem Ziehen mit Ausgabe der Paketnamen, ob nun oder nicht (wer dann noch das Falsche zieht, hat nicht aufgepaßt, grin).
    Wünschenswert wäre die Möglichkeit des Ziehens des aktuellen RCs (für die, die damit umgehen können, insbesondere ewigen Inkompatibilitäten proprietärer Treiber).
    Timestamps werden anders als mit wget durch wget.py unschönerweise nicht beibehalten. Vielleicht gibt’s dort eine Option.

    • Danke für die Vorschläge. Ich habe gestern eine Option eingebaut, welches es ermöglicht sich alle auf „www.kernel.org“ aktuellen Kernelversionen anzeigen zu lassen. Grundsätzlich lässt sich über „–version“ auch jede andere Version herunterladen. Per „–cpu“ lässt sich auch der CPU-Typ angeben. Ich habe das Skript aber so verändert, dass es vor dem Download den CPU-Typ selbst ermittelt und dann die passende Version herunterlädt. Zusätzlich habe ich es auf das normale „wget“ und auf „python3-lxml“ umgestellt, um die Abhängigkeiten kleiner zu halten. Die aktuelle Version liegt im Git-Repo.

  2. > dass es vor dem Download den CPU-Typ selbst ermittelt und dann die passende Version herunterlädt.

    Architektur wird jetzt korrekt gewählt, freilich wird 4.16.9 gezogen (eben), seit gestern Mittag ist jedoch 4.16.10 aktuell. Vermutlich wird „.10“ mit der „1“ als niedriger interpretiert als „.9“.

    Btw., Dir hat wohl meine schöne Listensyntax nicht gefallen? 😉

  3. Da das Skript die aktuelle Version über die Webseite „www.kernel.org“ ermittelt und dort noch die Version 4.16.9 die aktuellste Version ist, lädt es auch nur diese herunter. Das ist das erste Mal, dass das Mainline-PPA vor der offiziellen Kernel-Webseite eine neue Version ausliefert.

    > Btw., Dir hat wohl meine schöne Listensyntax nicht gefallen? 😉
    ?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.