如何覆盖linux系统文件到文件系统yocto?

问题描述 投票:1回答:3

我是新的,yocto建立在imx6q嵌入式系统。

我想do_rootfs后覆盖linux系统文件。例如,目标系统文件如下。

  • 的/ etc /网络/接口
  • 在/ etc /问题
  • /etc/init.的/RCS
  • /home/root/没有test.是

所以,我提出定制层和定制的配方。的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
}
linux yocto recipe rootfs
3个回答
1
投票

这取决于修改文件。例如,如果你在狭小的目录搜索 '接口',你会在' - $ {PV} /元/食谱核心/ INIT-ifupdown的/ INIT-ifupdown的找到它。你只需要创建一个名为配方INIT-ifupdown的 - 在你的元$ {} PV .bbappend,重建在狭小看到的路径(配方核/ INIT-ifupdown的/)。这个配方可以包含一行:

FILESEXTRAPATHS_prepend: = "${THISDIR}/files:"

然后,您创建一个“接口”文件,你想有一个“文件”文件夹。

对于“问题”,就像在/ etc目录(配置文件,fstab文件,...),这是同样的方法,在狭小/元/食谱核心/基本的文件/来源发现别人。

对于的init.d脚本,使用“更新-RC”级。


1
投票

你的食谱是不是“形象配方”(它不应该是世界您好),因此你不能用任务do_rootfs和do_image在这种情况下。澄清一下:像食谱是用于构建图像bitbake的带或devtool的.bb文件(在你的情况下,一些含imx6q,你可以用bitbake-layers show-recipes "*-image-*"找到它们)。

它看起来像你正在寻找真的是覆盖do_install一些配方可安装在提档的方式。然后找什么秘方安装这些文件,并在顶层创建bbappend文件。这bbappend文件可能包含do_install_append任务,您可以将您的install <file> <dir>线(注意,使用cp不推荐,一切都应该与安装工具来完成)。


0
投票

你需要扩展提供要替换文件的食谱。

使用/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

最后,重复上面的你想替换每个系统文件。

© www.soinside.com 2019 - 2024. All rights reserved.