14

我正在尝试编写一个.bbappend文件,该文件将附加到initramfs-live-boot_1.0.bb其中有一个语句,该语句将管理启动过程的 shell 脚本do_install()的内容写入启动时运行的初始化脚本。我的文件的目的是在不更改基础和/或环境的情况下引用要复制的启动脚本的修改版本来代替原始版本。因此,该文件和我的脚本版本被放置在我的项目目录中,其余的我自己的配方将被构建。init-live.shinit.bbappendopenembedded-corepoky.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的文件相同的目录中有一个文件夹。.bbappendinit.sh

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

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

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

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

4

1 回答 1

19

FILESEXTRAPATH_prepend := "${THISDIR}/files:"应该是FILESEXTRAPATHS_prepend := "${THISDIR}/files:"。注意 中的最后一个FILESEXTRAPATHSS。

那应该使它对您有用。

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

于 2015-12-15T13:40:01.817 回答