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

标签 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 的脚本文件?

最佳答案

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

那应该让它为你工作。

另一个改进是从 init.sh 重命名您的文件文件至 init-live.sh . IE。使用与原始文件相同的名称 initramfs-live-boot食谱。这将允许您删除您的 do_install_append() -功能以及SRC_URI += "file://init.sh"来自 bbappend。食谱本身会为你处理这些。因此,您实际需要的唯一一行是 FILESEXTRAPATHS_prepend := "${THISDIR}/files:" .

关于init - Yocto 使用 .bbappend 文件覆盖 initramfs 的默认初始化脚本的编写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290289/

相关文章:

python - __init__ 中的 UnboundLocalError

linux-kernel - Yocto 内核模块路径

带有二维数组问题的 C 游戏板

loadConfig 中的 Python/YAML : How to initialize additional objects not just from the YAML file,?

embedded-linux - 如何不用 i2cget 命令读取 i2c?

opencv - Yocto构建中OpenCV中的Gsteamer冲突声明

yocto - 使用 yocto 的 softfp 工具链配置

yocto - 获取 yocto 镜像中包的描述

python - 在 __init__() python 中打开文件