dev*_*v j 1 linux recipe rootfs yocto
我是新的,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
}
Run Code Online (Sandbox Code Playgroud)
您需要扩展提供要替换的文件的配方。
使用/etc/network/interfaces
作为一个例子,第一个步骤是找出哪些配方安装该文件。
从 bitbake 提示:
$ oe-pkgdata-util find-path /etc/network/interfaces
init-ifupdown: /etc/network/interfaces
Run Code Online (Sandbox Code Playgroud)
所以这告诉我们这/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
Run Code Online (Sandbox Code Playgroud)
现在,由于您需要修改 的输出init-ifupdown
,您需要通过在您自己的层中创建一个类似命名的来进行扩展 。init-ifupdown
.bbappend
您可以.bbappend
在
my-layer/receipes-core/init-ifupdown/init-ifupdown_%.bbappend
Run Code Online (Sandbox Code Playgroud)
这%
是一个通配符,可确保.bbappend
将应用于init-ifupdown
配方的所有未来版本,这可能是您想要的。
将您的自定义interfaces
文件放在以下文件夹中.bbappend
:
my-layer/receipes-core/init-ifupdown/files/interfaces
Run Code Online (Sandbox Code Playgroud)
该.bbappend
则仅需要包含一个单行bitbake的启用拿起新的interfaces
文件:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
Run Code Online (Sandbox Code Playgroud)
最后,对要替换的每个系统文件重复上述操作。
归档时间: |
|
查看次数: |
2304 次 |
最近记录: |