Yocto项目日常练 Day 1:基础架构概述与最小镜像实战

🔍

B站相应的视屏教程
📌 内核:博文+视频 - 总线驱动模型实战全解析
在这里插入图片描述
敬请关注,记得标为原始粉丝。


目标:完成 Yocto 环境搭建,构建 core-image-minimal 镜像,了解 Yocto 应用系统的核心架构和基本构建流程


1. Yocto 构建环境快速上手

1.1 环境准备

Yocto 项目依赖于稳定的 Linux 环境以及一系列构建工具和库,因此我们需要在受支持的系统中配置构建主机。建议使用 Ubuntu 22.04(LTS)并安装必要的依赖包:

  • 操作系统:Ubuntu 22.04 (LTS)
  • 硬件:90GB 磁盘空间,8GB RAM
  • 必备软件:
sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat \
    cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git \
    python3-jinja2 python3-subunit zstd liblz4-tool file locales libacl1

1.2 下载 Poky 和初始化

Poky 是 Yocto 官方提供的参考发行版,集成了 BitBake 构建引擎、OE-Core 元数据层及基本配置脚本。

git clone git://git.yoctoproject.org/poky
cd poky
git checkout -b scarthgap origin/scarthgap
source oe-init-build-env

运行 source 脚本后,将自动创建名为 build 的构建目录,其中包含:

  • local.conf:用于配置目标平台(如 MACHINE)和基础参数
  • bblayers.conf:用于定义参与构建的元数据 layer

1.3 构建 core-image-minimal 镜像

core-image-minimal 是 Yocto 提供的最基础镜像,适合用于验证构建流程是否正确。

bitbake core-image-minimal

该构建命令会依次执行以下任务:
Fetch → Unpack → Patch → Configure → Compile → Install → Package → Image

构建完成后,输出文件位于:

tmp/deploy/images/qemux86-64/

1.4 验证镜像

Yocto 提供了 runqemu 工具,可以使用 QEMU 虚拟机快速验证构建出的镜像功能。

runqemu qemux86-64

如能进入 shell 或看到启动界面,说明构建成功且镜像正常运行。


2. Yocto 框架概述

2.1 Layer 模型概念

在 Yocto 项目中,Layer 是组织元数据的基本单位。每个 Layer 是一组功能集合,可以包含菜谱、类、配置文件等。Layer 支持按需组合与重写,提升系统模块化和可维护性。

常见 Layer 类型:

Layer作用
metaOE-Core,基础元数据层,提供常用软件包和构建逻辑
meta-pokyPoky 的默认配置层
meta-yocto-bsp提供参考硬件平台的 BSP 层
meta-custom用户自定义的扩展层

layer 的启用通过 bblayers.conf 文件管理,支持灵活添加、覆盖、替换已有逻辑。


2.2 BitBake 构建流程

BitBake 是 Yocto 的核心工具之一,类似于 make,它根据 .bb 菜谱定义的规则,自动执行构建任务。

常见构建任务(task):

  • do_fetch:下载源码(如 Git、tar.gz)
  • do_unpack:解压源码
  • do_patch:应用补丁
  • do_configure:执行配置脚本,如 autoconf
  • do_compile:编译源码
  • do_install:复制安装文件到临时根文件系统
  • do_package:将构建结果打包为 ipk/rpm 等
  • do_image:生成最终 rootfs 镜像文件

BitBake 支持自动分析依赖关系,并可并行构建多个 package,提高构建效率。


3. Yocto 构建目录分析

3.1 build 目录结构

构建目录由 oe-init-build-env 初始化生成,包含所有构建配置、缓存和结果。其主要结构如下:

目录用途
conf/配置文件目录,包含 local.conf 和 bblayers.conf
downloads/存储所有下载的源码包和文件
sstate-cache/共享状态缓存,加速重复构建过程
tmp/所有中间产物和最终输出的主目录

3.2 tmp/ 根目录分析

tmp 是 BitBake 的主要输出区域,几乎所有构建数据都集中于此。关键子目录包括:

  • work/:每个菜谱的工作目录,包含源码解压、编译、中间结果等
  • deploy/images/:最终生成的镜像文件、启动配置、压缩包等

理解这些目录对于分析构建错误、查找结果文件具有重要意义。


四、实战总结

关键名词说明
BitBake构建引擎
Poky参考发行版,基于 OE-Core
core-image-minimal最小功能 rootfs 镜像
QEMU虚拟式硬件环境验证工具

五、问答与练习

问题练习

1. 说明 Poky 和 OE-Core 之间的关系?
2. 解释 BitBake 构建流程中皈 do_compile 和 do_install 的区别
3. 一个自定义层 layer 最基本的目录结构是什么?
4. 如果需要构建 Raspberry Pi 镜像,应修改哪些文件?
5. 如何查看构建成功后 core-image-minimal 里裡包含了哪些软件?

标准答案

1. Poky 是以 OE-Core 为基础,合并了 BitBake + 基本 layer + 参考 BSP 和配置 layer ,形成一个完整参考构建平台。
2. do_compile 负责编译源码,do_install 负责把编译的结果处理安装到目标根文件系统目录下。
3. 最基本含 conf/,recipes-类目录,例如:

meta-mytest/
|-- conf/
|   `-- layer.conf
|-- recipes-example/
|   `-- helloworld/
|       `-- helloworld_1.0.bb

4. 需要修改 conf/local.conf 中的 MACHINE ,例如:

MACHINE ?= "raspberrypi4-64"

并确保 bblayers.conf 加入 meta-raspberrypi 层。
5. 运行:

cat tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.manifest

可以查看包含软件清单。


六、小结

Day 1 我们打通了 Yocto 环境搭建、构建流程、层结构、实战 core-image-minimal 镜像构建。这是全部 Yocto 实战的基础,后续我们将一步步深入 BitBake 、菜谱编写、实际 BSP 应用。

下一篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值