Yocto използва .bbappend файл, за да замени писането на скриптове за стартиране по подразбиране за initramfs

Опитвам се да напиша .bbappend файл, който ще се добави към initramfs-live-boot_1.0.bb, който има израз вътре в do_install(), който записва съдържанието на init-live.sh, шел скрипт, който управлява процедурата за зареждане, към init, инициализиращ скрипт, който се изпълнява при зареждане. Целта на моя .bbappend файл е да препраща към модифицирана версия на стартиращия скрипт, която да бъде копирана на мястото на оригинала, без да се променят базовите openembedded-core и/или poky среди. Следователно файлът .bbappend и моята версия на скрипта са поставени в моята директория на проекта с останалите мои собствени рецепти, които трябва да бъдат изградени.

Моят initramfs-live-boot_1.0.bbappend изглежда така:

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

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

Имам папка files в същата директория като файла .bbappend, която съдържа скрипта init.sh, от който трябва да чете.

Проблемът е, че когато се опитам да създам изображението, то избълва тази грешка:

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

и след това се опитва да търси в директорията poky за липсващите файлове, а не в директорията на моя проект.

Грешно ли съм написал моя .bbappend файл? Как да редактирам скриптовете initramfs с помощта на файла .bbappend?


person Shiri    schedule 15.12.2015    source източник


Отговори (1)


FILESEXTRAPATH_prepend := "${THISDIR}/files:" трябва да бъде FILESEXTRAPATHS_prepend := "${THISDIR}/files:". Обърнете внимание на последното S в FILESEXTRAPATHS.

Това трябва да го накара да работи за вас.

Друго подобрение би било да преименувате файловия файл от init.sh на init-live.sh. т.е. използвайте същото име като файла в оригиналната initramfs-live-bootrecipe. Това ще ви позволи да премахнете вашата do_install_append()-функция, както и SRC_URI += "file://init.sh" от bbappend. Самата рецепта ще се справи с тях вместо вас. Следователно единственият ред, от който всъщност ще се нуждаете, е FILESEXTRAPATHS_prepend := "${THISDIR}/files:".

person Anders    schedule 15.12.2015
comment
И така, за да поясня, всичко, което ми трябва в моя .bbappend е FILESEXTRAPATHS_prepend := "${THISDIR}/files:"? - person Shiri; 15.12.2015
comment
Да, ако приемем, че именувате файла init-live.sh, точно като оригиналния файл. - person Anders; 15.12.2015
comment
Страхотно! Благодаря за отговора, просто го изпробвах и не изведе грешката. - person Shiri; 15.12.2015