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