Yocto使用.bbappend文件来覆盖initramfs的默认init脚本的编写

Shi*_*iri 11 init openembedded bitbake yocto

我正在尝试编写一个.bbappend文件,该文件将附加到initramfs-live-boot_1.0.bb其中有一个语句,该语句do_install()init-live.sh管理引导过程的shell脚本的内容写入启动时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
}
Run Code Online (Sandbox Code Playgroud)

files在与.bbappend包含init.sh应该从中读取的脚本的文件所在的目录中有一个文件夹.

问题是当我尝试构建图像时,它会吐出这个错误:

WARNING: Failed to fetch URL file://init.sh, attempting MIRRORS if available
Run Code Online (Sandbox Code Playgroud)

然后尝试在poky目录中搜索缺少的文件,而不是在我的项目目录中.

.bbappend写错了文件吗?我如何initramfs使用该.bbappend文件编辑脚本?

And*_*ers 12

FILESEXTRAPATH_prepend := "${THISDIR}/files:"应该是FILESEXTRAPATHS_prepend := "${THISDIR}/files:".注意最后的S in FILESEXTRAPATHS.

这应该让它适合你.

另一项改进是将文件文件重命名init.shinit-live.sh.即使用与原始initramfs-live-boot配方中的文件相同的名称.这将允许您删除do_install_append()功能以及SRC_URI += "file://init.sh"bbappend.配方本身会为您处理这些.因此,你真正需要的唯一一条就是FILESEXTRAPATHS_prepend := "${THISDIR}/files:".