当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Yocto使用.bbappend文件来覆盖initramfs的默认init脚本的编写》经验,为你挑选了1个好方法。

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

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:".

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有