Patchen eines Kernels Beipiel: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 4: Zeile 4:
 
*Man wollte weniger Daten herunterladen.
 
*Man wollte weniger Daten herunterladen.
 
;Beides ist obsolet.
 
;Beides ist obsolet.
=Sie haben diesen Kernel=
+
=Der alte Weg=
 +
==Sie haben diesen Kernel==
 
*wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.4/linux-2.4.14.tar.gz
 
*wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.4/linux-2.4.14.tar.gz
;Der kernel liegt entpackt mit tar -C /usr/src -xvJf linux-2.4.14.tar.gz
+
;Der kernel liegt entpackt mit tar -C /usr/src -xvzf linux-2.4.14.tar.gz
;unter /usr/src/linux-6.3.8#
+
;unter /usr/src/linux#
;Sie wollen einen Kermelupdate auf 6.3.9 machen.
+
;Sie wollen einen Kermelupdate auf 2.4.15 machen.
;Nun haben sie die Möglichkeit den Kompleten 6.3.9 kernel runter zuladen oder einen Patch auf 6.3.9
+
;Nun haben sie die Möglichkeit den Kompleten 2.4.15 Kernel runter zuladen oder einen Patch auf 2.4.15
 +
==Runterladen des Patches==
 +
*wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.4/patch-2.4.15.gz
  
=Runterladen des Patches=
+
=In Kernel Verzeichnis wechseln=
*wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/patch-6.3.9.xz
+
*cd linux
 +
==Eine Trockenübung==
 +
*zcat  ../patch-2.4.15.gz | patch -p 1 --dry-run
 +
=Der Patch=
 +
*zcat  ../patch-2.4.15.gz | patch -p 1
 +
=Der neue Weg=
 +
*Diese Patches sind nicht inkrementell, das bedeutet, dass beispielsweise der Patch 5.7.3 nicht auf den Patch 5.7.2 angewendet wird.
 +
*Er wird angewendet auf die Grundversion des Kernel-Quellcodes 5.7.
 +
*Um den Patch 5.7.3 auf den vorhandenen Kernel-Quellcode 5.7.2 anzuwenden, musst du zuerst den Patch 5.7.2 rückgängig machen.
 +
*Dann hast du den Ausgangszustand des Kernel-Quellcodes 5.7
 +
*Auf diesen kann man dann den neuen Patch 5.7.3 anwenden.
 +
=Vorgehensweise=
 +
 
 +
==Ins Verzeichnis wechseln==
 +
*cd ~/linux-5.7.2
 +
==Auf Version 5.7 zurück patchen==             
 +
*xzcat  ../patch-5.7.2.xz | patch -p1 -R
 +
==Auf Version 5.7.3 patchen==
 +
*xzcat  ../patch-5.7.3.xz | patch  -R   
 +
*cd ..
 +
==Verzeichnis umbenennen==
 +
*mv linux-5.7.2 linux-5.7.3
 +
=Aufgaben=
 +
*[[Aufgaben Kernelpatch]]

Aktuelle Version vom 24. Juni 2023, 14:13 Uhr

Geschichte

Man hat früher Kernel aus 2 Gründen gepatcht
  • Man wollte eine Funktion hinzufügen.
  • Man wollte weniger Daten herunterladen.
Beides ist obsolet.

Der alte Weg

Sie haben diesen Kernel

Der kernel liegt entpackt mit tar -C /usr/src -xvzf linux-2.4.14.tar.gz
unter /usr/src/linux#
Sie wollen einen Kermelupdate auf 2.4.15 machen.
Nun haben sie die Möglichkeit den Kompleten 2.4.15 Kernel runter zuladen oder einen Patch auf 2.4.15

Runterladen des Patches

In Kernel Verzeichnis wechseln

  • cd linux

Eine Trockenübung

  • zcat ../patch-2.4.15.gz | patch -p 1 --dry-run

Der Patch

  • zcat ../patch-2.4.15.gz | patch -p 1

Der neue Weg

  • Diese Patches sind nicht inkrementell, das bedeutet, dass beispielsweise der Patch 5.7.3 nicht auf den Patch 5.7.2 angewendet wird.
  • Er wird angewendet auf die Grundversion des Kernel-Quellcodes 5.7.
  • Um den Patch 5.7.3 auf den vorhandenen Kernel-Quellcode 5.7.2 anzuwenden, musst du zuerst den Patch 5.7.2 rückgängig machen.
  • Dann hast du den Ausgangszustand des Kernel-Quellcodes 5.7
  • Auf diesen kann man dann den neuen Patch 5.7.3 anwenden.

Vorgehensweise

Ins Verzeichnis wechseln

  • cd ~/linux-5.7.2

Auf Version 5.7 zurück patchen

  • xzcat ../patch-5.7.2.xz | patch -p1 -R

Auf Version 5.7.3 patchen

  • xzcat ../patch-5.7.3.xz | patch -R
  • cd ..

Verzeichnis umbenennen

  • mv linux-5.7.2 linux-5.7.3

Aufgaben