gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:10 26 4
gpt4 key购买 nike

我是新手,yocto 在 imx6q 嵌入式系统上构建。

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

  • /etc/网络/接口(interface)
  • /etc/问题
  • /etc/init.d/rcS
  • /home/root/mytest.sh

因此,我制作了自定义层和自定义配方。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
}

最佳答案

您需要扩展提供您要替换的文件的配方。

/etc/network/interfaces 为例,第一步是找出哪个配方安装了该文件。

从 bitbake 提示:

$ oe-pkgdata-util find-path /etc/network/interfaces
init-ifupdown: /etc/network/interfaces

所以这告诉我们 /etc/network/interfaces 是由 init-ifupdown receipe 安装的。

文件搜索显示 init-ifupdown 是 poky 的一部分:

$ find . -name init-ifupdown*.bb
./poky/meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb

现在,由于您需要修改 init-ifupdown 的输出,因此您需要通过创建一个 extend init-ifupdown在您自己的图层中类似地命名为 .bbappend

您可以在

创建新的 .bbappend
my-layer/receipes-core/init-ifupdown/init-ifupdown_%.bbappend

% 是一个通配符,确保 .bbappend 将应用于 init-ifupdown 配方的所有 future 版本,这可能是你想要什么。

将自定义 interfaces 文件放在 .bbappend 下的文件夹中:

my-layer/receipes-core/init-ifupdown/files/interfaces

.bbappend 然后只需要包含一行以使 bitbake 能够获取新的 interfaces 文件:

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

最后,对要替换的每个系统文件重复上述操作。

关于linux - 如何将 linux 系统文件覆盖到 yocto 文件系统中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54605656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com