Yocto Project 为定制 Linux 系统提供工具、元数据和协作方式。使用它时,开发者描述目标硬件、软件版本、功能和打包规则,构建系统据此生成工具链、软件包、镜像及应用开发 SDK。它适合需要持续维护板卡配置和产品软件组合的项目;构建出的系统仍需要在目标硬件上验证。
核心组件如何配合
跳转到“核心组件如何配合”| 名称 | 职责 | 常见形式 |
|---|---|---|
| BitBake | 解析元数据、计算任务依赖并执行任务 | bitbake <目标> |
| OpenEmbedded-Core(OE-Core) | 提供通用核心元数据和构建基础 | 基础配方、类和配置 |
| Recipe(配方) | 描述源码、补丁、依赖、编译、安装与打包规则 | .bb,补充修改常用 .bbappend |
| Class(类) | 复用构建和打包行为 | .bbclass |
| Configuration(配置) | 描述机器、发行版策略和构建选项 | .conf |
| Layer(层) | 组织可组合的元数据 | 常见目录名为 meta-* |
| Poky | 用于学习和验证工作流程的参考集成 | 包含多个相关组件与参考配置 |
配方和二进制软件包是不同对象:一个配方可能生成多个包,镜像再选择需要的包。镜像生成也不保证每个平台都输出同一种完整磁盘 .img;实际产物由机器配置、镜像配方和 BSP 决定。Yocto 5.0.9 概念文档 给出了这些组件的关系。
从硬件配置到镜像
跳转到“从硬件配置到镜像”一次典型构建依次涉及获取源码、打补丁、配置与编译、安装到构建暂存区域、生成软件包,最后组合根文件系统和镜像。工具链以及构建时所需的主机工具也由依赖关系管理。
需要先确定三个层次:
- 机器:CPU 架构、板卡、设备树、内核和启动程序等。
- 发行版策略:软件版本选择、初始化系统、功能与包格式等。
- 镜像内容:产品需要哪些用户空间软件和服务。
ARM、x86、PowerPC 等架构是否可用,最终取决于选定版本与对应 BSP、工具链和配方的支持。新建一层只是在组织元数据,不会自动完成硬件适配。
两条入门命令的前提
跳转到“两条入门命令的前提”原记录中的 source oe-init-build-env 和 bitbake core-image-minimal 是入口,但它们需要一套已经准备好的源码和主机环境。先按所选 Yocto 发布版或厂商 BSP 文档准备 Linux 构建主机,并把 Poky、BitBake 和各层固定到兼容的分支或提交。原生 Windows 或 macOS 终端不等价于该 Linux 构建环境。
在已经检出并核对过版本的 Poky 源码目录中,示例流程是:
# 当前目录:已经准备好的 poky 源码根目录source oe-init-build-env build
# 查看实际启用的层;先核对 conf/local.conf 与 conf/bblayers.confbitbake-layers show-layers
# MACHINE 等配置正确之后,构建最小镜像目标bitbake core-image-minimal初始化脚本会设置当前 shell 的环境并进入构建目录。conf/bblayers.conf 决定参加构建的层,conf/local.conf 包含本次构建配置;MACHINE 必须匹配 BSP 已定义的机器。使用厂商自己的环境初始化脚本时,应遵循该 BSP 的步骤,不能机械替换为通用命令。官方快速入门 展示了这一流程。
本文的命令用于解释调用顺序,未据此完成一套 Yocto 镜像构建。第一次构建可能下载大量源码并占用较多磁盘、内存和时间,具体要求应查询选定发布版。
适用场景与交付检查
跳转到“适用场景与交付检查”路由器、工业网关、图形终端和其他定制设备可以通过层复用公共部分,再用产品层管理差异。CI 可以保存源码版本、配置和构建日志,重建指定软件组合;缓存可以缩短重复构建时间,但不能代替版本固定和产物测试。
交付时至少保留 BSP 与各层提交、镜像配置、工具链或 SDK 版本、产物校验值及板上验证记录。烧录成功只证明写入流程完成;串口启动、根文件系统、驱动和实际应用仍需要逐项验证。
原始记录:CSDN 原文,首次发布于 2025-02-25。