Skip to content

构建系统进阶教程

前言:我们到了哪一步

经过前面基础教程的折腾,你已经能够成功编译 U-Boot、Linux 内核和 BusyBox,并且把它们整合成一个可以启动的系统。恭喜你,这是嵌入式 Linux 开发的一个重要里程碑!

但是!当你真正开始做项目时,你会发现还有很多"进阶"问题需要解决:

  • 构建产物散落在各个目录,想要找那个能烧录的镜像文件得翻半天
  • 想给内核加个自定义补丁,结果改了子模块代码,下次 git submodule update 全没了
  • 同一套代码要适配不同环境(开发/生产),每次改配置都改得心惊胆战

这一章的三个教程,就是来解决这些问题的。我们会带你走通构建系统的进阶用法,让你不仅能"跑起来",还能"用得爽"。


教程列表

1. out/ 目录结构完全指南

构建一次系统后,你会发现 out/ 目录下冒出来一堆子目录和文件:uboot/linux/busybox/release-YYYYMMDD-HHMMSS/release-latest/……这些都是什么东西?

这一章会彻底搞清楚构建产物的组织方式:

  • 开发构建目录和 Release 构建目录有什么区别
  • release-latest 软链接指向哪里,为什么需要它
  • 快速定位你要烧录的镜像文件
  • 验证构建产物是否完整
  • 清理构建输出的正确姿势(别手滑把辛辛苦苦编译的成果删了)

预计阅读时间: 15 分钟


2. Patch 工作流实战指南

直接修改子模块代码?千万别!这样改出来的代码,一旦执行 git submodule update --remote,你的修改瞬间灰飞烟灭。别问我是怎么知道的(血压拉满)。

这一章会教你正确的补丁管理姿势:

  • 为什么要用补丁系统,而不是直接修改子模块
  • 补丁生成:从修改代码到导出 .patch 文件的完整流程
  • 补丁应用:自动应用和手动应用两种方式
  • 补丁冲突的处理方法
  • CI/CD 如何自动应用你的补丁
  • 补丁管理的最佳实践(7条实战经验)

预计阅读时间: 20 分钟


3. RootFS Overlay 使用指南

同一个 Rootfs,开发环境要加调试工具,生产环境要加监控服务,手动改配置文件改得头大?Overlay 模式就是为这种场景设计的。

这一章会带你玩转 RootFS 定制:

  • 为什么需要 Overlay,直接修改 Rootfs 有什么问题
  • Overlay 的合并机制(cp --remove-destination 做了什么)
  • 使用 merge_overlay_rootfs.sh 脚本合并 Overlay
  • 创建自定义 Overlay 的三个实战示例
  • 不同环境(开发/生产/Qt6)的 Overlay 组织方式
  • 调试和验证 Overlay 应用结果

预计阅读时间: 15 分钟


前置知识

在开始这些教程之前,建议你已经掌握:

  1. 基础构建流程 (../practical/02_build_system.md)

    • 熟悉 U-Boot、内核、BusyBox 的编译过程
    • 了解构建脚本的用法
  2. Git 基础操作

    • 分支管理、提交、推送等基本命令
    • Git Submodule 的工作原理
  3. Linux 文件系统基础

    • 目录结构和文件权限
    • 软链接和硬链接的区别

学习路径建议

基础构建教程 → out/ 目录结构 → Patch 工作流 → RootFS Overlay
    (已掌握)       (第1章)         (第2章)          (第3章)

三个教程是相对独立的,你可以按需阅读:

  • 如果你经常搞不清构建产物在哪,直接看第1章
  • 如果你需要修改 U-Boot/内核代码,重点看第2章
  • 如果你需要定制不同环境的 Rootfs,第3章是为你准备的

但如果你时间充裕,按顺序阅读一遍会更好,因为它们之间有一些关联(比如补丁会影响构建产物)。


实战环境说明

本教程基于以下环境编写:

  • 项目: IMX-Forge (i.MX6ULL 嵌入式 Linux 发行版)
  • 硬件: 正点原子阿尔法开发板 (i.MX6ULL)
  • 主机: Ubuntu/Debian Linux
  • 工具链: arm-none-linux-gnueabihf (15.2.x)
  • 构建日期: 2026年5月

如果你的环境有所不同,命令路径和输出可能会有细微差异,但核心原理是一样的。


写在最后

这些教程不是"官方文档",而是我们在折腾 IMX-Forge 项目时的实战经验总结。我们踩过的坑、吃过的亏、犯过的错,都写在这里了,希望能帮你少走弯路。

如果教程中有任何错误或遗漏,欢迎提 issue 或 PR —— 一起让这个项目变得更好!

准备好了吗?让我们开始吧!

Built with VitePress