我是新的,yocto建立在imx6q
嵌入式系统。
我想do_rootfs后覆盖linux系统文件。例如,目标系统文件如下。
所以,我提出定制层和定制的配方。的HelloWorld二进制文件副本确定。 但是,do_mytask功能不叫。
有什么错我的代码?或者我的目的的任何其他方法。
#
# This file was derived from the 'Hello World!' example recipe in the
# Yocto Project Development Manual.
#
SUMMARY = "Simple helloworld application"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file://helloworld.c"
S = "${WORKDIR}"
do_compile() {
${CC} helloworld.c -o helloworld
}
do_install() {
install -d ${D}${bindir}
install -m 0755 helloworld ${D}${bindir}
}
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += " \
file://interfaces \
file://issue \
file://mytest.sh \
"
addtask mytask after do_rootfs before do_image
do_mytask() {
install -d ${D}/etc/network
cp -af ${WORKDIR}/interfaces ${D}/etc/network/interfaces
cp -af ${WORKDIR}/issue ${D}/etc/issue
}
这取决于修改文件。例如,如果你在狭小的目录搜索 '接口',你会在' - $ {PV} /元/食谱核心/ INIT-ifupdown的/ INIT-ifupdown的找到它。你只需要创建一个名为配方INIT-ifupdown的 - 在你的元$ {} PV .bbappend,重建在狭小看到的路径(配方核/ INIT-ifupdown的/)。这个配方可以包含一行:
FILESEXTRAPATHS_prepend: = "${THISDIR}/files:"
然后,您创建一个“接口”文件,你想有一个“文件”文件夹。
对于“问题”,就像在/ etc目录(配置文件,fstab文件,...),这是同样的方法,在狭小/元/食谱核心/基本的文件/来源发现别人。
对于的init.d脚本,使用“更新-RC”级。
你的食谱是不是“形象配方”(它不应该是世界您好),因此你不能用任务do_rootfs和do_image在这种情况下。澄清一下:像食谱是用于构建图像bitbake的带或devtool的.bb文件(在你的情况下,一些含imx6q,你可以用bitbake-layers show-recipes "*-image-*"
找到它们)。
它看起来像你正在寻找真的是覆盖do_install一些配方可安装在提档的方式。然后找什么秘方安装这些文件,并在顶层创建bbappend文件。这bbappend文件可能包含do_install_append任务,您可以将您的install <file> <dir>
线(注意,使用cp
不推荐,一切都应该与安装工具来完成)。
你需要扩展提供要替换文件的食谱。
使用/etc/network/interfaces
作为一个例子,第一个步骤是找出哪些配方安装该文件。
从提示bitbake的:
$ oe-pkgdata-util find-path /etc/network/interfaces
init-ifupdown: /etc/network/interfaces
因此,这告诉我们,qazxsw POI是由qazxsw POI配方安装。
文件搜索显示/etc/network/interfaces
是狭小部分:
init-ifupdown
现在,因为你需要修改init-ifupdown
的输出,你就必须建立在自己的层类似命名的$ find . -name init-ifupdown*.bb
./poky/meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb
延长init-ifupdown
。
你可能会在创建新init-ifupdown
.bbappend
该.bbappend
是确保my-layer/receipes-core/init-ifupdown/init-ifupdown_%.bbappend
将适用于%
配方,这可能是你想要的所有未来版本的通配符。
将您的自定义.bbappend
文件init-ifupdown
以下文件夹中:
interfaces
然后.bbappend
只需要包含一个单行bitbake的启用拿起新my-layer/receipes-core/init-ifupdown/files/interfaces
文件:
.bbappend
最后,重复上面的你想替换每个系统文件。