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

自定义Yocto Recipe未在.bin镜像中生成指定文件夹问题排查

问题描述

在自定义meta文件夹的不同目录下创建了2个.bb文件,可通过bitbake正常编译,但生成的.bin镜像中找不到指定的/opt/twin-scripts文件夹。多次构建镜像后执行find / -name "twin-scripts"无任何结果,查看编译日志及编译后的临时镜像时该文件夹存在,但最终.bin镜像中缺失。

相关Recipe代码

SRCREV_FORMAT = "twin_ditto"

S = "${WORKDIR}/twin-process"

DEPENDS = "python3 python3-requests python3-psutil python3-setuptools"

do_compile() {
    :
}

do_install() {
    install -d ${D}/opt/twin-scripts/

    echo "#!/bin/sh" > ${D}/opt/twin-scripts/automate-twin-docker-setup
    echo "docker pull eclipse-mosquitto" >> ${D}/opt/twin-scripts/automate-twin-docker-setup
    echo "cd ${S}/iwatch/dockerfile && docker build --no-cache -t iwatch_image -f Dockerfile.iwatch ." >> ${D}/opt/twin-scripts/automate-twin-docker-setup
    chmod +x ${D}/opt/twin-scripts/automate-twin-docker-setup
}

FILES:${PN} = "${bindir}/* ${sysconfdir}/init.d/* /opt/twin-scripts/*"
排查与解决办法
  • 确认Recipe已被加入镜像构建
    单独编译成功不代表镜像会自动包含该包。打开你的镜像Recipe(如core-image-*.bb),添加IMAGE_INSTALL:append = " your-recipe-name",替换your-recipe-name为你的.bb文件对应的包名(PN)。

  • 调整FILES变量配置
    当前FILES:${PN}仅指定了目录下的文件,尝试显式包含目录本身:

    FILES:${PN} = "${bindir}/* ${sysconfdir}/init.d/* /opt/twin-scripts /opt/twin-scripts/*"
    

    确保打包时同时包含目录及其中的文件。

  • 检查镜像裁剪机制
    若镜像启用了ROOTFS_POSTPROCESS_COMMAND或使用了包裁剪工具,可能会移除未被依赖的内容。检查IMAGE_FEATURES和ROOTFS_POSTPROCESS_COMMAND的配置,确认没有触发不必要的裁剪逻辑。

  • 排查多Recipe冲突
    两个.bb文件若存在PN重名,或其中一个覆盖了另一个的安装内容,会导致文件缺失。检查两个.bb的PN变量,确保名称唯一,且没有相互覆盖的操作。

  • 验证包内内容
    执行bitbake your-recipe-name单独构建,然后查看生成的包文件(如.ipk/.rpm),确认其中包含/opt/twin-scripts目录和脚本。若包本身正常,再确认镜像构建时是否正确引入了该包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:33:18