Ich arbeite an einem eingebetteten System, das buildroot als Werkzeug zum Erstellen des Kernels und des Root-Dateisystems verwendet. Ich möchte einige Patches auf diesen Kernel-Quellcode-Baum anwenden. Kann mir jemand sagen, wie buildroot Patches anwendet?
Nachdem ich die buildroot-Architektur studiert hatte, erfuhr ich, dass buildroot ein Quilt-Tool zum Anwenden der Patches verwendet. Quilt verfolgt alle Patches in der Datei "series", die sich im Verzeichnis "patches" befindet. Sie müssen Ihre Patches in diesem Verzeichnis behalten. Und fügen Sie Ihren Patch-Eintrag in der Reihendatei in der Reihenfolge hinzu, in der die Patches angewendet werden sollen, wobei der Patch zuerst oben angelegt wird.
Wenn Sie das Buildroot-Makefile ausführen, werden automatisch die in der Reihendatei aufgeführten Patches angewendet.
Um auf @ Pradeepchhentris Antwort zu erweitern. Quilt sucht nach einer Datei, die sich im selben Ordner wie die * .mk-Datei befindet. Um die entsprechende Datei zu erstellen:
Teilen Sie das Quellpaket vom Original in eine Datei mit dem Namen
Paketname - Nummer - Beschreibung .patch
wo
Paketname - muss identisch mit dem Paketnamen sein
Nummer - ist die Reihenfolge, in der die Patches angewendet werden sollen, wenn Sie mehr als einen Patch anwenden müssen (andernfalls wird er in alphabetischer Reihenfolge angewendet)
Beschreibung - kann ein beliebiger freier Text sein
Fügen Sie diese Datei in das Paket auf derselben Ebene ein wie die Dateien [Paketname] .mk und die Datei package / Config.in.
Vergiss nicht, deine Build-Dateien wegzublasen oder mach ein [Paket] -rebuild, wenn du das tust. Sie sollten eine "Patchen ..." Nachricht sehen, wenn dies richtig gemacht wird.
BR2_GLOBAL_PATCH_DIR
Out-of-Tree-Patches
Verzeichnisstruktur:
.git/
buildroot/
Buildroot Submodul wie unter Ссылка erwähnt
global_patch_dir/packagename/0001-my-test.patch
Zur Konfiguration hinzufügen:
%Vor%Dann build mit:
%Vor% Der Patch sollte vor dem Build auf output/build/packagename-1.0.0/
angewendet werden.
Generiere die Patches mit *_OVERRIDE_SRCDIR
Wenn Sie die Pakete direkt unter output/build/
hacken, haben Sie nichts zu tun.
Verwenden Sie stattdessen den *_OVERRIDE_SRCDIR
-Mechanismus, mit dem Sie auf ein Git-Repo Ihrer Wahl verweisen können: Wie ändere ich die Quelle von Buildroot-Paketen für die Paketentwicklung? , die Sie dann als git-Submodul verfolgen sollten.
einige Details zu Patch-Dateien im buildroot -Projekt:
Sie müssen
%Vor%steht genau über dem extrahierten Speicherort Ihres Pakets tar.gz , das in
definiert ist %Vor%bedeutet, dass Ihr Pfad zu der Datei den Namen des extrahierten Paketordners enthalten muss.
falls Sie sich fragen, ob der "old_file" Pfad von dem ursprünglichen Pfad abweicht - keine Sorge, der wichtigste ist der "neue_Datei" Pfad und Name - es sollte mit Ihrem Paket übereinstimmen.
Benennungskonvention für die bereits in buildroot verwendeten / definierten Patches (alle Teile sind durch '-' -Zeichen getrennt):
Beispiel:
%Vor%Es ist nicht notwendig, Konfigurationsdateien zu ändern, alle Patches werden automatisch für die Anwendung ausprobiert.
Tags und Links embedded linux-kernel buildroot