2015-12-15 12 views
5

Sto cercando di scrivere un file .bbappend che aggiungerà al initramfs-live-boot_1.0.bb che ha un'istruzione all'interno del do_install() che scrive il contenuto di init-live.sh, uno script di shell che gestisce la procedura di avvio, a init, uno script di inizializzazione che viene eseguito all'avvio. Lo scopo del file .bbappend è di fare riferimento a una versione modificata dello script di avvio da copiare al posto dell'originale senza modificare gli ambienti di base openembedded-core e/o poky. Il file .bbappend e la mia versione dello script vengono quindi inseriti nella directory del mio progetto con il resto delle mie ricette da costruire.Yocto utilizzando il file .bbappend per ignorare la scrittura di script di init di default per initramfs

mio initramfs-live-boot_1.0.bbappend assomiglia a questo:

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

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

Ho una cartella files nella stessa directory del file .bbappend che contiene lo script init.sh si dovrebbe essere la lettura da.

Il problema è quando provo a costruire l'immagine, sputa fuori questo errore:

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

e quindi tenta per la ricerca in directory poky per i file mancanti, piuttosto che nella mia directory del progetto.

Ho scritto il mio file .bbappend errato? Come faccio a modificare gli script initramfs utilizzando il file .bbappend?

risposta

5

FILESEXTRAPATH_prepend := "${THISDIR}/files:" deve essere FILESEXTRAPATHS_prepend := "${THISDIR}/files:". Notare l'ultima S in FILESEXTRAPATHS.

Questo dovrebbe farlo funzionare per voi.

Un altro miglioramento sarebbe quello di rinominare il file di file da init.sh a init-live.sh. Cioè utilizzare lo stesso nome del file nella ricetta originale initramfs-live-boot. Ciò consentirebbe di rimuovere la tua funzione do_install_append() e SRC_URI += "file://init.sh" dalla bbappend. La ricetta stessa dovrebbe gestirli per te. Pertanto, l'unica linea effettivamente necessaria è la FILESEXTRAPATHS_prepend := "${THISDIR}/files:".

+0

Quindi per chiarire, tutto ciò di cui ho bisogno nel mio '.bbappend' è' FILESEXTRAPATHS_prepend: = "$ {THISDIR}/files:" '? – Shiri

+0

Sì, supponendo che tu denunci il file 'init-live.sh', proprio come il file originale. – Anders

+0

Fantastico! Grazie per la tua risposta, l'ho appena provato e non ha generato l'errore. – Shiri

Problemi correlati