You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto中如何用独立Recipe安装第三方部署文件并处理依赖?

解决方案:通过独立Recipe将部署文件加入RootFS

完全可以通过独立Recipe实现将部署目录中的boot.scr打包到rootfs镜像中,具体实现步骤如下:

1. 创建独立配方文件

在自定义meta层中新建配方(例如recipes-bsp/u-boot/u-boot-zynq-scr-image.bb),内容如下:

LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

# 声明依赖原配方
DEPENDS += "u-boot-zynq-scr"

# 关键:强制依赖原配方的do_deploy任务,确保boot.scr已部署到DEPLOYDIR
do_install[depends] += "u-boot-zynq-scr:do_deploy"

do_install() {
    # 创建目标目录(根据需求调整,示例为/boot)
    install -d ${D}/boot
    # 从部署目录复制文件到rootfs镜像路径
    install -m 0644 ${DEPLOYDIR}/boot.scr ${D}/boot/
}

# 指定该配方要打包的文件路径
FILES_${PN} += "/boot/boot.scr"

2. 配置镜像安装该配方

在local.conf或者自定义的image配方中添加:

IMAGE_INSTALL_append += " u-boot-zynq-scr-image"

3. 任务依赖说明

默认情况下,DEPENDS仅确保依赖配方完成do_build任务,但我们需要等待do_deploy任务完成(boot.scr是在do_deploy阶段输出到DEPLOYDIR的)。通过do_install[depends] += "u-boot-zynq-scr:do_deploy"可以明确指定:当前配方的do_install必须等待原配方的do_deploy执行完成后再运行。

参考实现示例

Yocto Project/OpenEmbedded社区中有不少类似场景的实现:

  • 部分内核相关配方会将生成的镜像文件部署到DEPLOYDIR,再由独立配方将其打包到rootfs;
  • 固件类配方(如某些FPGA固件)也常采用这种“先部署、再由独立配方整合”的模式,核心都是通过任务依赖机制确保文件生成顺序。

内容的提问来源于stack exchange,提问作者davidA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:31:00