Yocto 项目训练 :搞懂 BitBake 的构建流程

【OpenBMC 系列】3.bitbake介绍 BitBake 最初是 OpenEmbedded 项目的一部分。它的灵感来自 Gentoo Linux 发行版使用的 Portage 包管理系统。2004 年,OpenEmbedded 项目被拆分为两个不同的部分: BitBake,一个通用的任务执行器 OpenEmbedded,BitBake 使用的元数据集 今天,BitBake 是基于 OpenEmbedded 的项目(例如 Yocto 项目)的主要构建工具。 用户手册:https://docs.yoctoproject.org/bitbake/inde 阅读详情
AI摘要

本博客聚焦Yocto项目中BitBake的构建流程。介绍了理解该流程的重要性,阐述了Task执行模型,包括Task定义和任务依赖链。通过分析busybox构建流程进行实战演示,还分享了构建失败时查看log和使用devshell手动构建的调试技巧,最后给出练习题及答案。

点击购买《Yocto项目实战教程:高效定制嵌入式Linux系统》

本系列目标:通过每日实训拆解 Yocto 核心机制,从 BitBake 到镜像构建、Layer 管理、Recipe 编写、BSP 支持等,构建系统认知与动手能力。今日聚焦 BitBake 构建流程的理解与剖析。


一、为什么要理解 BitBake 构建流程?

Yocto 构建系统的核心是 BitBake,它控制整个流程:

  • 如何解析一个 recipe?
  • 为什么某些任务失败?
  • 什么是 task 依赖链?

只会 bitbake core-image-minimal 是入门,掌握 BitBake 构建逻辑才能高效排障与扩展。


二、BitBake 构建核心:Task 执行模型

在这里插入图片描述

2.1 Task 是什么?

每个 recipe(.bb 文件)由多个 task 构成,是构建的最小执行单元。常见 task 包括:

Task 名作用
do_fetch获取源码(支持 git、http、file)
do_unpack解压源码
do_patch应用 patch 补丁
do_configure运行配置脚本,如 autotools/cmake
do_compile编译源码
do_install安装到临时根目录(${D})
do_package打包成 ipk/deb/rpm
do_image构建 rootfs 镜像

2.2 任务依赖链

BitBake 构建每个 task 之前,会先解析其依赖。例如:

  • do_compile 会依赖 do_configure
  • do_configure 会依赖 do_patch

BitBake 通过 .bbclass 和 .inc 文件描述默认依赖关系。


三、实战演示:分析 busybox 构建流程

bitbake -c listtasks busybox

输出结果示例(部分):

do_fetch
 do_unpack
  do_patch
   do_configure
    do_compile
     do_install
      do_package

可见,BitBake 会将任务串联为有序构建图。

3.1 查看变量展开

bitbake -e busybox | less

搜索:SRC_URI、S、WORKDIR 可查看源码路径等实际值。


四、调试技巧:如何定位失败原因?

4.1 构建失败时查看 log

路径示例:

tmp/work/<arch>/<recipe>/<ver>/temp/log.do_compile.XXXX

可使用:

bitbake -c compile -f busybox

强制重新执行 do_compile,排查修复错误后继续构建。

4.2 使用 devshell 手动构建

bitbake -c devshell busybox

进入后,直接在构建目录里调试编译。


五、训练小结

  • BitBake 构建过程是“任务有向图”的执行
  • 每个 recipe 都由一组 task 构成,task 之间有依赖链
  • 出现错误时,优先看对应 task 的 log 与环境变量
  • 通过 -e、-c listtasks、-c devshell 等工具,可灵活控制与调试流程

六、今日练习题(含答案)

Q1:BitBake 中的 do_install 的作用是什么?

A: 将编译产物安装到临时根目录 ${D},为后续打包做准备。

Q2:bitbake -e busybox 可以查看哪些关键信息?

A: 可以查看环境变量的实际值,例如 WORKDIR、S、SRC_URI 等。

Q3:bitbake -c listtasks busybox 输出了什么?

A: 输出 busybox recipe 所定义的所有 task,包括默认任务和用户自定义任务。


下一篇将继续深入 BitBake 的 Task 自动注册、类机制(bbclass)、函数继承结构等高级特性。

Yocto 项目训练 · Day 1:搞懂 BitBake 的构建流程(上)

本系列目标:通过每日实训拆解 Yocto 核心机制,从 BitBake 到镜像构建、Layer 管理、Recipe 编写、BSP 支持等,构建系统认知与动手能力。今日聚焦 BitBake 构建流程的理解与剖析。


一、为什么要理解 BitBake 构建流程?

Yocto 构建系统的核心是 BitBake,它控制整个流程:

  • 如何解析一个 recipe?
  • 为什么某些任务失败?
  • 什么是 task 依赖链?

只会 bitbake core-image-minimal 是入门,掌握 BitBake 构建逻辑才能高效排障与扩展。


二、BitBake 构建核心:Task 执行模型

2.1 Task 是什么?

每个 recipe(.bb 文件)由多个 task 构成,是构建的最小执行单元。常见 task 包括:

Task 名作用
do_fetch获取源码(支持 git、http、file)
do_unpack解压源码
do_patch应用 patch 补丁
do_configure运行配置脚本,如 autotools/cmake
do_compile编译源码
do_install安装到临时根目录(${D})
do_package打包成 ipk/deb/rpm
do_image构建 rootfs 镜像

2.2 任务依赖链

BitBake 构建每个 task 之前,会先解析其依赖。例如:

  • do_compile 会依赖 do_configure
  • do_configure 会依赖 do_patch

BitBake 通过 .bbclass 和 .inc 文件描述默认依赖关系。


三、实战演示:分析 busybox 构建流程

bitbake -c listtasks busybox

输出结果示例(部分):

do_fetch
 do_unpack
  do_patch
   do_configure
    do_compile
     do_install
      do_package

可见,BitBake 会将任务串联为有序构建图。

3.1 查看变量展开

bitbake -e busybox | less

搜索:SRC_URI、S、WORKDIR 可查看源码路径等实际值。


四、调试技巧:如何定位失败原因?

4.1 构建失败时查看 log

路径示例:

tmp/work/<arch>/<recipe>/<ver>/temp/log.do_compile.XXXX

可使用:

bitbake -c compile -f busybox

强制重新执行 do_compile,排查修复错误后继续构建。

4.2 使用 devshell 手动构建

bitbake -c devshell busybox

进入后,直接在构建目录里调试编译。


五、训练小结

  • BitBake 构建过程是“任务有向图”的执行
  • 每个 recipe 都由一组 task 构成,task 之间有依赖链
  • 出现错误时,优先看对应 task 的 log 与环境变量
  • 通过 -e、-c listtasks、-c devshell 等工具,可灵活控制与调试流程

六、今日练习题(含答案)

Q1:BitBake 中的 do_install 的作用是什么?

A: 将编译产物安装到临时根目录 ${D},为后续打包做准备。

Q2:bitbake -e busybox 可以查看哪些关键信息?

A: 可以查看环境变量的实际值,例如 WORKDIR、S、SRC_URI 等。

Q3:bitbake -c listtasks busybox 输出了什么?

A: 输出 busybox recipe 所定义的所有 task,包括默认任务和用户自定义任务。


点击购买《Yocto项目实战教程:高效定制嵌入式Linux系统》

bitbake使用详解 本文详细介绍了BitBake构建工具的核心概念和使用方法。BitBake是嵌入式Linux开发中Yocto项目的核心组件,负责解析元数据、管理依赖并高效执行构建任务。文章首先阐述了BitBake的基本功能,包括任务执行、依赖管理和并行处理等特性。随后深入解析了关键概念如recipes、tasks、layers和配置文件的结构与作用。重点说明了BitBake的命令行调用方式,包括通用选项、任务控制选项和执行控制选项的详细参数及使用示例。最后通过memtester、内核模块等具体案例,演示了单独编译recipe 阅读详情

相关推荐

Jetson边缘AI开发:从Yocto定制固件到SoC级安全控制

Jetson不是简化版PC,而是基于Tegra SoC的嵌入式AI计算系统,其开发本质是软硬协同的系统工程。理解CUDA与DLA/PVA共享内存、BCT引导配置、Secure Boot签名链等底层原理,是实现低延迟推理与高可靠部署的前提。技术价值在于构建可复现、可审计、可量产的交付固件——这直接决定工业场景下的热稳定性、安全合规性与长期运维能力。典型应用场景包括智能巡检、车载视觉、电力无人机等对功耗、温度、功能安全(ASIL-B)有严苛要求的边缘终端。本文聚焦Jetson平台的Yocto定制化构建、SoC级

weixin_33829657的博客 238

BitBake概述

BitBake概述翻译自官方文档,该章节可细读,多读几遍可加深对 配方、元数据、层等概念的理解。

u013921164的博客 4415

JetPack 7.2深度解析:Orin平台性能跃迁与Yocto可编程底座实践

JetPack 是 NVIDIA 面向边缘 AI 推理的系统级软件开发套件,其核心价值在于打通从 CUDA 加速、TensorRT 推理到嵌入式 Linux 构建的全链路。理解 JetPack 的演进逻辑,需回归其本质——它并非单纯工具集合,而是以 GPU 微架构(如 Orin 的 Ampere GA10B)为物理锚点,通过驱动层调度优化、内存协议重构和编译时可编程性,实现算力释放的系统工程。技术价值体现在三方面:降低 kernel launch 开销、提升 NVLink 带宽利用率、增强 TensorRT

weixin_30781433的博客 374

yocto(二)——bitbake工作流程

本文参考yocto官方手册,如有理解不当之处,欢迎留言指出。 项目概述和概念手册:https://docs.yoctoproject.org/overview-manual/index.html 项目参考手册:https://docs.yoctoproject.org/ref-manual/index.html yocto项目的厨师——bitbake ​ bitbake是OpenEmbedded构建系统的引擎,通过解析一系列配置文件(主要为recipes,即bb/bbappend文件)来创建任务列表,并根据

zz2633105的博客 4万+

Yocto 系列讲解 - BitBake 全过程

本文介绍了 BitBake 的全过程,包括配置文件的编写、任务的调度和执行。通过编写 recipe 文件,我们可以定义软件包的构建规则和任务的执行命令。对于每个任务,BitBake 会执行相应的 shell 命令,完成特定的构建操作。每个软件包都有一个对应的 recipe 文件,其中包含了构建该软件包所需的所有信息。的 Python 脚本来解析 recipe 文件,并根据依赖关系调度和执行不同的任务。本文将详细介绍 BitBake 的全过程,包括配置文件的编写、任务的调度和执行。目录中找到所需的构建结果。

weixin_50547796的博客 1778

数字IC物理验证实战 | 从Calibre LVS报告到Innovus定位的Debug全链路解析

本文详细解析了数字IC物理验证中Calibre LVS报告的Debug全流程,从INCORRECT NETS错误的初探到Innovus定位技巧,提供了实战案例和高效工具的使用方法。重点介绍了Calibre高亮功能、Innovus验证命令以及前后端工具联动的关键策略,帮助工程师快速定位和解决LVS问题,提升物理验证效率。

weixin_30919429的博客 127

bitbake编译流程

整个流程是:‌配置定范围 -> 解析定依赖 -> 分层编译(BSP驱动 + Connectivity协议栈 + 自定义应用) -> 组装根文件系统 -> 打包最终镜像‌。其中,你之前关注的层通过.bbappend和专属 recipes,在第二步和第三步中精准介入了驱动补丁和应用集成。

qq_30531921的博客 217

Android AudioFlinger实战:如何用FastMixer优化低延迟音频流(附调试技巧)

本文深入解析了Android AudioFlinger的FastMixer线程机制,指导开发者如何利用该技术优化低延迟音频流。通过实战配置AAudio API、调整硬件缓冲区及线程优先级,并结合adb、Systrace等调试技巧,可将音频延迟显著降低至10毫秒以下,适用于音乐制作、游戏音效等实时音频处理场景。

weixin_29230901的博客 334

i.MX8M Plus从零到一:Yocto编译、UUU烧录与eMMC启动全流程解析

嵌入式Linux系统开发中,从源码编译到板端运行往往涉及交叉编译工具链、引导加载程序、内核与根文件系统的复杂协作。理解启动链路的原理,是高效完成底层开发的关键。i.MX8M Plus作为NXP新一代异构多核处理器,集成4核Cortex-A53与Cortex-M7,并内置NPU和双ISP,适合边缘AI、工业视觉及实时网络等场景。其BSP构建基于Yocto项目,通过repo同步源码后,使用bitbake生成U-Boot、内核及完整镜像,再借助UUU工具将flash.bin与.wic镜像烧录至eMMC,或制作SD

weixin_34293059的博客 463

记二开金蝶云星空动态表单艰辛历程

整个过程,开发接近一周,期间也有做其他事,遇到不会的第一时间也是找金蝶社区,搜索有无相关的解决问题经历。再就是问同事,最终还不能解决就提工单给供应商。响应一般都要大半天(我们公司是有vip,相对大半天能够响应是算好了),虽然有时候有响应,但是会转到其他研发老师,期间可能会是几天!如果是经常开发云星空的二开功能,熟练了速度回很快,但是对于接触不多的,或者刚入门的,会是个漫长的折磨过程。1、重新生产模块的dll.2、退出客户端3、重启iis4、等待五六分钟5、附加到进程6、登录客户端进去操作。

修炼中 3936

Stata:手动安装ivreghdfe包的完整指南与常见问题解决

本文提供了Stata中手动安装ivreghdfe包的完整指南,包括准备工作、详细安装步骤及常见问题解决方案。ivreghdfe作为处理高维固定效应模型的强大工具,依赖ftools、reghdfe和ivreg2三个核心组件,手动安装可避免版本冲突问题。文章还分享了进阶使用技巧,如并行计算加速和保存固定效应估计值,助力用户高效完成工具变量回归分析。

weixin_29251131的博客 926

嵌入式工程师的边缘AI部署实战:Jetson与Rockchip选型及Yocto系统构建

边缘计算将AI推理下沉到数据产生端,以低延迟、低带宽、高隐私保障实时决策。其核心原理是在资源受限硬件上通过模型量化与推理框架实现高效计算,技术价值在于毫秒级响应与离线可用性。典型应用包括工业质检、机器人避障与智能监控。嵌入式工程师凭借底层系统能力,可快速掌握Jetson与Rockchip平台的边缘AI部署,并利用Yocto构建定制化Linux系统,打通从模型转换到端侧落地的完整链路。

weixin_33770878的博客 294

【箱子之字形摆放】python实现-附ChatGPT解析

箱子之形摆放有一批箱子(形式为宁符串,设为str) ,要求将这批箱子按以之形的顺序摆放在宽度为n的空地,请输出箱子的摆放结果。例如:箱子为ABCDEFG,空地宽度为3,摆放结果如图:则输出结果为:AFGBECD输入一行字符串,通过空格分制,前面部分为字母或数字组成的字符串str,表示;后面部分为一个数字n,表示。ABCDEFG 3箱子摆放结果,如题目示例所示AFGBECD。

sinat_29950703的博客 370

Jetson嵌入式AI开发:从硬件约束到Yocto定制实战

嵌入式AI是指在资源受限的边缘设备上部署实时、低功耗、高鲁棒性AI模型的技术范式。其核心原理在于协同优化算力、内存带宽、功耗与散热等物理约束,而非单纯提升算法精度。技术价值体现在端侧实时推理、断网自治和工业级可靠性,广泛应用于智能机器人、车载视觉、工业质检等场景。实践中,Jetson平台并非通用Linux电脑,而是深度耦合NVIDIA Tegra SoC特性的AI引擎;Yocto Linux则提供可确定性构建的轻量级系统能力,支撑从功能验证到量产部署的全周期开发。本文聚焦Jetson硬件抽象层本质与Yoct

weixin_33841722的博客 190

Camunda 7.x 系列【62】启动流程实例源码解析

为了更好的了解Camunda,接下来我们简单分析下启动流程实例相关源码

记录知识、锤炼自我 1171

【微服务】Java 对接飞书多维表格使用详解

Java 对接飞书多维表格使用详解

congge_study的博客 1万+

Yocto构建与Secure Boot:Jetson嵌入式系统底层实践

嵌入式Linux系统构建本质上是软硬件协同的可信交付过程。Yocto Project作为主流定制化构建框架,通过Metadata、Layer、Recipe三层机制实现从内核到根文件系统的全栈可控编译;Secure Boot则依托ARM TrustZone信任链,在BootROM、U-Boot、Kernel等层级逐级签名验证,保障固件完整性与启动可信。其技术价值在于支撑AI边缘设备(如Jetson Orin)的量产部署——满足低启动时延、硬件加速适配、OTA安全升级等关键需求。典型应用场景包括定制MIPI摄像

weixin_34080571的博客 394

超临界二氧化碳发电技术深度解析

超临界二氧化碳发电技术正在突破传统热电转换的物理边界。作为新一代发

硬核科技 601

Buildroot与Yocto选型建议:VibeThinker帮你做技术决策

针对边缘AI设备开发,深入对比Buildroot与Yocto在构建轻量系统中的适用场景。Buildroot适合快速原型和固化产品,简洁高效;Yocto则凭借分层架构和包管理能力,支撑长期演进与多版本维护。结合VibeThinker-1.5B模型部署实例,解析两者在镜像大小、构建效率、OTA升级和系统可维护性上的关键差异,帮助团队根据项目规模与生命周期做出合理决策。

weixin_42522857的博客 573

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Jetson系统级故障排查:Secure Boot与Yocto构建深度解析

Jetson并非普通ARM开发板,而是硬件-固件-软件深度耦合的边缘AI平台。其核心在于Secure Boot构建的RSA信任链与L4T定制内核的物理约束,而Yocto构建则需严格匹配分区结构、layer叠加顺序及密钥签名体系。技术价值体现在避免‘烧录即变砖’、实现自定义镜像稳定启动,并支撑YOLOv5、Qwen等AI模型在受限内存与带宽下的高效部署。典型应用场景包括工业视觉终端、移动机器人SLAM系统及车载边缘推理设备。本文聚焦Jetson开发者最常遭遇的invalid signature detecte

weixin_34218579的博客 238

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Jetson嵌入式开发三大支柱:Secure Boot、L4T/Yocto、JetPack运行时契约

嵌入式Linux系统构建与部署的核心在于理解硬件信任链、系统构建范式和运行时环境契约。Secure Boot并非简单开关,而是贯穿BootROM到RootFS的逐级签名验证机制,决定设备启动可信边界;L4T提供经硬件验证的BSP能力,Yocto实现软件定义的确定性构建,二者协同保障跨平台兼容性;JetPack则定义了GPU/VPU/ISP加速路径的ABI稳定性与API调用契约。这些底层机制共同支撑YOLOv5部署、Qwen大模型推理、AirSLAM算法集成等典型AI边缘场景。本文聚焦Jetson平台,深入解

weixin_33933118的博客 486

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

嵌入式工程师的边缘AI实战:Jetson、Rockchip与Yocto技术栈解析

边缘AI将推理能力下沉到设备端,在算力、内存、功耗和散热受限条件下实现低延迟、高能效的智能处理。其核心原理在于通过模型量化、算子融合和内存复用减少数据搬运,从而提升每瓦性能。技术价值在于让嵌入式系统具备本地实时决策能力,广泛应用于智能安防、机器人和工业视觉等场景。Jetson与Rockchip提供了不同算力与成本的硬件平台,而Yocto则支撑系统镜像的深度定制。嵌入式工程师的系统级调优与驱动适配能力,成为边缘AI落地的关键。

weixin_33898876的博客 426

Jetson边缘嵌入式系统开发:L4T与Yocto协同构建可量产AI镜像

嵌入式AI系统是指在资源受限的边缘设备上部署具备实时推理能力的智能应用,其核心在于软硬协同的确定性构建。原理上需穿透硬件抽象层(如L4T)、定制化构建框架(如Yocto)与AI运行时(如TensorRT)的深度耦合,技术价值体现在功耗可控、启动可靠、OTA安全与长期维护可追溯。典型应用场景包括工业质检、智能巡检、车载视觉等对稳定性与量产一致性要求严苛的领域。本文聚焦Jetson平台,深入解析Linux for Tegra与Yocto构建体系的不可替代性,揭示设备树定制、内核裁剪、固件集成与模型固化等关键工程

weixin_33842304的博客 406

边缘AI部署实战:Jetson与RK3588选型及Yocto构建指南

边缘AI将模型推理从云端迁移至终端设备,核心是在功耗、延迟、成本等约束下实现高效计算。其原理依赖异构计算架构,通过NPU、GPU等加速器协同工作,并借助模型量化与算子融合提升推理效率。技术价值在于降低带宽依赖、增强数据隐私与实时响应能力,广泛应用于工业质检、智能安防、机器人等场景。嵌入式工程师需掌握模型部署与系统级优化,结合Jetson或RK3588平台及Yocto构建系统,实现从原型到产品的落地。

weixin_34124651的博客 347

Jetson嵌入式AI落地:L4T、Yocto与Secure Boot全链路实践

嵌入式AI系统不是模型跑通即交付,而是从芯片启动到长期稳定运行的全生命周期工程。理解L4T底层启动流程,是掌握Jetson硬件信任根的前提;Yocto不仅是Linux定制工具,更是构建可信执行环境(TEE)与Secure Boot签名体系的核心载体;Secure Boot也非简单开关,而是贯穿bootloader、kernel、rootfs乃至OTA更新的策略引擎。本文聚焦Jetson平台在工业视觉、边缘推理等真实场景中的产线级落地难点,深入解析JetPack工具链四层协同机制、Yocto构建对ATF/OP

weixin_34326429的博客 250

Jetson边缘AI开发:从底层启动链到可量产Yocto定制

边缘AI开发不是简单部署模型,而是构建端到端可信执行链的系统工程。理解SoC级异构架构(CPU+GPU+DLA+PVA)、Linux内核与设备树协同机制、CUDA/TensorRT版本强耦合关系,是突破调试瓶颈的关键。Jetson平台本质是为功能安全与实时性重构的嵌入式AI芯片,其开发需直面热设计功耗、内存带宽争抢、Secure Boot签名验证等物理约束。通过Yocto定制最小化根文件系统、裁剪90%非必要内核模块、实操eMMC RPMB安全分区,并在目标设备本地序列化TensorRT引擎,才能交付符合A

weixin_34080571的博客 361
上一篇: 国内首部Yocto项目图书:高效定制嵌入式Linux系统
下一篇: Runtime Suspend 专项训练
嵌入式孙老师
博客等级 码龄7年 5686粉丝 898原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值