当前位置: 首页 > news >正文

buildroot的overlay文件拷贝机制BR2_ROOTFS_OVERLAY

Buildroot在应用多个Overlay目录时,采用的是“顺序拷贝,后者覆盖前者”的简单机制

顺序拷贝与同名覆盖

这个过程的核心可以拆解为两个基本动作:

  1. 顺序处理:当你在BR2_ROOTFS_OVERLAY中指定了多个Overlay目录(例如dirA dirB),Buildroot会严格按照从左到右的顺序去处理它们。

  2. 同名覆盖:对每个Overlay目录,Buildroot会使用rsync命令,将其内容递归地复制到最终的文件系统目录output/target/中。当rsync在复制过程中遇到与目标路径下已存在且文件名相同的文件时,默认行为就是直接覆盖

这个“顺序+覆盖”的机制,确保了后面的Overlay目录拥有最高的定制优先级。

📝 针对你的场景分析

将此原理应用到你的配置 (BR2_ROOTFS_OVERLAY+="board/rockchip/rk3562/fs-optmv-app-scs3/ board/rockchip/rk3562/fs-optmv-scs3/"),执行流程如下:

  1. 先处理fs-optmv-app-scs3:Buildroot会先将fs-optmv-app-scs3目录下的所有内容复制到output/target/根目录中。

  2. 再处理fs-optmv-scs3:紧接着,Buildroot会处理fs-optmv-scs3目录,同样将其内容复制到output/target/

  3. 发生覆盖:如果这两个目录在相同路径下(比如都有/usr/bin/my_app),那么作为后者的fs-optmv-scs3目录中的同名文件,就会覆盖掉前者fs-optmv-app-scs3中已存在的那个文件。最终,在生成的根文件系统中,你将看到fs-optmv-scs3中的那个版本。后者覆盖前者

💡 如何应对覆盖

理解了这个原理,你可以根据需求选择以下策略:

  • 按需调整顺序:让重要文件后出现。如果需要fs-optmv-app-scs3中的文件不被覆盖,可以将其放在后面。

  • 合并同路径文件:如果需要在已有文件基础上追加内容,可先将被覆盖的文件内容提取到fs-optmv-scs3的同名文件中进行整合,或使用更灵活的post-build脚本。

  • 区分独立文件:如果两个目录的内容完全独立且无路径冲突,则无需担心。

💎 总结

BR2_ROOTFS_OVERLAY机制的本质就是一个按顺序执行的rsync复制过程,后处理的目录会覆盖前者的同名文件。在设计你的Overlay目录结构时,深刻理解并利用这个“顺序覆盖”原则,可以帮助你更精确地控制最终的根文件系统。

举个栗子:

合入的bin文件没法同步更新到位,简单理解就是在buildroot下面的overlay拷贝文件的时候,先后顺序问题导致没有拷贝过去。

原本的:

hzs@sr658:~/rk3562-v1.2.0-sdk/buildroot$ git diff ./ diff --git a/configs/rockchip_rk3562_scs3_defconfig b/configs/rockchip_rk3562_scs3_defconfig index 6891ab51cb..ba1664db79 100644 --- a/configs/rockchip_rk3562_scs3_defconfig +++ b/configs/rockchip_rk3562_scs3_defconfig @@ -32,7 +32,7 @@ BR2_PACKAGE_ROCKCHIP_MALI=y BR2_TARGET_GENERIC_HOSTNAME="RK3562" BR2_TARGET_GENERIC_ROOT_PASSWD="1" BR2_ROOTFS_OVERLAY+="board/rockchip/rk3562/fs-optmv-app-scs3/ board/rockchip/rk3562/fs-optmv-scs3/"

原本以为后面的会覆盖前面的,所以尝试修改为:

编译后还是无效,经排查

但实际的打包到的是:board/rockchip/rk3562/fs-optmv-app-scs1/

结合buildroot的提交,那么在原有的基础上增加多一个拷贝目录即可

注意,在编译的时候,最好先在buildroot的output目录工程下面target执行rm -rf 删除执行的先,再去编译确保更新到位

最后解决方案为在buildroot的配置文件中修改如下:

/buildroot$ vim configs/rockchip_rk3562_scs3_defconfig

#BR2_ROOTFS_OVERLAY+="board/rockchip/rk3562/fs-optmv-app-scs3/ board/rockchip/rk3562/fs-optmv-scs3/" BR2_ROOTFS_OVERLAY+="board/rockchip/rk3562/fs-optmv-app-scs3/ board/rockchip/rk3562/fs-optmv-scs3/ board/rockchip/rk3562/fs-optmv-app-scs1/

http://www.jsqmd.com/news/893838/

相关文章:

  • 模块化太空巡检机器人设计与在轨维护技术解析
  • 告别WebGL!用Unity Embedded Browser插件在PC游戏里无缝嵌入你的数据可视化大屏(ECharts实战)
  • C166中断向量重定向技术及双镜像系统实现
  • 智能驾驶的“眼睛”与“大脑”:环境感知系统深度解析与实战指南
  • 从运维视角看字体管理:如何用脚本在CentOS/Windows服务器上批量部署企业字体库
  • 写学术论文时,文献综述应该怎么写才出彩?
  • 神泣纷争|5 月 26 日三服连开 S231 巨蛇环世 / S232 寒熊巡原 / S233 渡鸦寻野
  • 别再为批次效应头疼了!手把手教你用scVI整合10x Genomics单细胞数据(附完整Python代码)
  • C语言goto语句的正确使用与替代方案
  • Lovable招聘系统搭建资源包限时开放:含Terraform部署脚本、候选人漏斗埋点规范、HR SSO集成文档(仅限前200名技术负责人领取)
  • 从比特币到以太坊:手把手教你用Python实现Merkle树验证交易
  • 如何快速优化鸣潮游戏体验:免费开源工具箱的完整指南
  • 观察taotoken在多模型聚合调用时的自动路由与故障转移效果
  • 计算机视觉技术驱动的马铃薯病害识别【附代码】
  • 嵌入式C语言中断函数静态化设计与优化实践
  • 别再死记硬背了!用Python(NumPy/SciPy)可视化理解离散与连续概率分布
  • 从理论到实战:用Python复现一篇边缘计算顶会论文的完整流程(以任务卸载为例)
  • Lovable写作助手开发实战:3天快速集成LLM+RAG+用户反馈闭环的5个关键步骤
  • 最好用的开源问卷系统:调问DWSurvey二次开发自由,一站式搞定调研与系统集成
  • 别再傻傻重装系统了!Win10下eNSP AR启动报错40的保姆级清理修复指南
  • 2026婚宴定制玻璃酒瓶:泸州玻璃酒瓶公司、泸州玻璃酒瓶厂、泸州玻璃酒瓶定制、玻璃酒瓶公司哪家好、玻璃酒瓶公司哪里有选择指南 - 优质品牌商家
  • 合规性倒逼重构?Lovable平台GDPR+国内《个人信息保护法》双达标开发 checklist,仅剩23家团队已落地
  • 用Python爬虫+数据分析,量化《新概念英语》里的‘教育’话题演变(附代码)
  • 昇腾CANN集合通信库HCCL:分布式训练的数据并行通信原理与性能调优
  • 2026年近期山东有名的平面研磨抛光机销售厂家盘点:邢台欧邦机械制造有限公司深度解析 - 2026年企业资讯
  • 从GNSS观测方程到RTK实战:手把手教你推导伪距与载波相位的核心模型
  • 抖音小游戏在线玩网站推荐,无需广告直接玩H5小游戏合集
  • AI 术语通俗词典:Token
  • 为什么92%的翻译平台在V3迭代时崩溃?Lovable平台稳定性架构设计,48小时上线零回滚
  • 规范驱动开发:从OpenAPI到契约测试的API设计实战