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