2015-12-15 5 views
5

Ich versuche, eine .bbappend Datei zu schreiben, die an die initramfs-live-boot_1.0.bb anhängen wird, die eine Aussage in der do_install() hat, die den Inhalt von init-live.sh, ein Shell-Skript schreibt, die verwaltet Die Boot-Prozedur, zu init, ein Initialisierungsskript, das beim Booten ausgeführt wird. Der Zweck meiner .bbappend Datei besteht darin, auf eine modifizierte Version des Startskripts zu verweisen, die anstelle des Originals kopiert werden soll, ohne die Basisumgebung openembedded-core und/oder poky zu ändern. Die Datei .bbappend und meine Version des Skripts werden daher in meinem Projektverzeichnis abgelegt, und der Rest meiner eigenen Rezepte wird erstellt.Yocto mit .bbappend Datei Schreiben von Standard-Init-Skripte außer Kraft zu setzen für initramfs

Mein initramfs-live-boot_1.0.bbappend sieht wie folgt aus:

SUMMARY = "Replacement recipe" 
FILESEXTRAPATH_prepend := "${THISDIR}/files:" 
SRC_URI += "file://init.sh" 

do_install_append() { 
     install -m 0755 ${WORKDIR}/init.sh ${D}/init 
} 

Ich habe einen Ordner files im selben Verzeichnis wie die .bbappend Datei, die das init.sh Skript enthält, sollte es aus der Lektüre werden.

Das Problem ist, wenn ich versuche, das Bild zu bauen, spuckt es diesen Fehler aus:

WARNING: Failed to fetch URL file://init.sh, attempting MIRRORS if available 

und versucht dann, durch das poky Verzeichnis für die fehlenden Dateien zu suchen, anstatt in meinem Projektverzeichnis.

Habe ich meine .bbappend Datei falsch geschrieben? Wie würde ich die initramfs Skripte mit der Datei .bbappend bearbeiten?

Antwort

5

FILESEXTRAPATH_prepend := "${THISDIR}/files:" sollte FILESEXTRAPATHS_prepend := "${THISDIR}/files:" sein. Beachten Sie das letzte S in FILESEXTRAPATHS.

Das sollte es für Sie arbeiten lassen.

Eine weitere Verbesserung wäre das Umbenennen der Datei von init.sh zu. I.e. Verwenden Sie den gleichen Namen wie die Datei im ursprünglichen initramfs-live-boot Rezept. Damit können Sie Ihre do_install_append()-Funktion sowie SRC_URI += "file://init.sh" aus dem bbappend entfernen. Das Rezept selbst würde diejenigen für Sie behandeln. Daher ist die einzige Linie, die Sie tatsächlich benötigen, die FILESEXTRAPATHS_prepend := "${THISDIR}/files:".

+0

Um zu verdeutlichen, alles, was ich brauche in meinem '.bappend' ist' FILESEXTRAPATHS_prepend: = "$ {THISDIR}/files:" '? – Shiri

+0

Ja, vorausgesetzt, Sie benennen die Datei 'init-live.sh', genau wie die Originaldatei. – Anders

+0

Super! Danke für deine Antwort, habe es einfach ausprobiert und es hat den Fehler nicht ausgelöst. – Shiri