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

时间:2015-12-15 13:16:14

标签: init yocto bitbake openembedded

我正在尝试编写一个.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
}

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

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

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

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

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

1 个答案:

答案 0 :(得分:8)

FILESEXTRAPATH_prepend := "${THISDIR}/files:"应为FILESEXTRAPATHS_prepend := "${THISDIR}/files:"。请注意FILESEXTRAPATHS中的最后一个S.

这应该让它适合你。

另一项改进是将文件文件从init.sh重命名为init-live.sh。即使用与原始initramfs-live-boot配方中的文件相同的名称。这样您就可以从bbappend中删除do_install_append() - 函数以及SRC_URI += "file://init.sh"。配方本身会为您处理这些。因此,您实际需要的唯一一行是FILESEXTRAPATHS_prepend := "${THISDIR}/files:"