Yocto构建同一机器不同镜像时部署目录旧产物被删除问题咨询
Yocto同一机器多镜像构建时部署目录产物保留方案
问题根源
部署目录旧产物被清理和rm_work无关——你已经通过RM_WORK_EXCLUDE排除了镜像相关工件。真正原因是Yocto默认在构建镜像时,会清理对应机器目录下的旧部署文件,确保只保留当前构建产物。
解决办法
1. 直接禁用部署清理
在local.conf中添加以下配置,阻止构建时清理部署目录的旧文件:
DEPLOYMENT_CLEAN_BY_MACHINE = "0"
该变量默认值为1,会清理当前机器对应部署目录下的旧内容,设为0即可保留之前的镜像产物。
2. 为不同镜像分配独立部署子目录
如果不想完全禁用清理,可以给每个镜像设置单独的部署路径,避免互相覆盖。在镜像的.bb文件(或local.conf中针对镜像单独配置)添加:
DEPLOYDIR = "${DEPLOY_DIR_IMAGE}/${PN}"
这样每个镜像的产物会被放到deploy/images/<machine>/<image-name>子目录下,彼此独立,不会被互相清理。
3. 确认RM_WORK_EXCLUDE配置有效性
虽然你已经添加了排除规则,但可以手动明确指定所有需要保留的镜像名称,避免变量展开问题导致排除失效。例如你的镜像为core-image-minimal和core-image-sato,则配置应为:
RM_WORK_EXCLUDE += " core-image-minimal core-image-sato"
内容的提问来源于stack exchange,提问作者Umar Farooq
相关产品推荐
相关产品推荐

