Was ist der Zweck von Patches des Linux-Kernels?

21

Für jede Linux-Kernelversion steht eine Patch-Datei zum Download zur Verfügung. Zum Beispiel hat Linux-3.12.22 einen entsprechenden Patch-3.12.22 .

Was ist der Zweck dieses Patches? Um den entsprechenden Kernel vor dem Kompilieren immer zu patchen oder um eine frühere Kernel-Version auf den neuesten Stand zu bringen (in diesem Fall 3.12.22)?

Elena
quelle

Antworten:

31

Der Zweck ist es, viel Verkehr zu sparen.

Der Linux-Tarball ist ungefähr 75 MB groß, während die Patches normalerweise nur wenige KB groß sind.

Wenn Sie also Ihren eigenen Kernel kompilieren und an dem Tag, an dem er veröffentlicht wird, auf jede neue Minor-Version aktualisieren, anstatt für jedes Minor-Update einen neuen 75-MB-Tarball herunterzuladen, müssen Sie (zum Beispiel) nur einmal den Haupt-Tarball für eine bestimmte Version herunterladen den Patch für die Version, die Sie tatsächlich wollen. Bei einem Update verwenden Sie den bereits heruntergeladenen Haupttarball erneut.

linux-3.14.tar.xz+ patch-3.14.{1..n}.xzliegt insgesamt unter 100 MB.

linux-3.14.tar.xz+ linux-3.14.{1..n}.tar.xzist mehrmals 100MB.

Das Patchen hat keine Nachteile, das Endergebnis ist identisch, es sei denn, Sie machen etwas falsch.

Frostschutz
quelle
9
Wie geschrieben, ist die Frage damit nicht ganz beantwortet. Der Zweck des Patches besteht darin, ihn explizit auf Version n-1 der Quelle anzuwenden und auf Version n zu "upgraden". Der Vorteil ist, dass viel Verkehr gespart wird, wie die Antwort beschreibt.
David Richerby
1
Ich bin kein Muttersprachler. Aber der Vorteil klingt mir irgendwie zu schwach. Das Sparen von Bandbreite / Verkehr ist für jeden Server wichtig. Es hat einen Zweck.
Frostschutz
Der Teil, den Sie nicht explizit beantwortet haben, ist: "Um den entsprechenden Kernel vor dem Kompilieren immer zu patchen oder um eine frühere Kernelversion mit dem Kernel zu aktualisieren, zu dem der Patch passt (in diesem Fall 3.12.22)? " Patch-3.12.22 muss von Version 3.12.21 auf .22 aktualisiert werden und darf vor dem Kompilieren nicht auf die 3.12.22-Quellen angewendet werden.
David Richerby
Patches sind in der Regel für .0z VERSION = 3 PATCHLEVEL = 12 -SUBLEVEL = 0 +SUBLEVEL = 22. Es wäre ärgerlich, 20 Patches
durchzuarbeiten
Wie wäre ein solches Traffic-Spar-Schema besser, als z. B. einen Git-Klon des Repositorys zu haben und zu tun, git pullwenn eine neue Version veröffentlicht wird?
Ruslan
5

Diese werden als "Patchset" bezeichnet. Patchset sind Gruppen von Patches, die die gleiche Funktionalität haben, verwandt sind oder eine Funktion in Schritten implementieren. Dies sind insbesondere die Unterschiede zwischen einer Hauptversion des Kernels (XY) und nachfolgenden Neben- / Wartungsversionen (XY Z ) mit mehreren Vorschlägen:

  • Sparen Sie Platz auf den Servern.
  • Bandbreite sparen.
  • Einfach anwendbar und verteilbar sein

Denken Sie daran, dass diese Patchsets inkrementell sind. Sie müssen zuerst Patch .1 vor Patch .2 anwenden, und danach können Sie .3 anwenden.

Braiam
quelle