【Yocto】OE-Core、Poky、Yocto Project 三者关系梳理

OE-Core、Poky、Yocto Project 三者关系梳理

这三个概念是 Yocto Project 生态中的核心组成部分,它们层层嵌套、互为依赖,不是并列关系。简单来说:OE-Core 是核心元数据,Poky 是可运行的参考系统,Yocto Project 是整个伞状工程。以下从定义、包含关系、功能、实际使用四个维度详细梳理(基于最新 Yocto 5.0+ 版本,2025 年现状)。

1. 定义与定位
名称全称/简称定位仓库/来源
OE-CoreOpenEmbedded Core底层核心元数据仓库:提供 BitBake 构建引擎 + 基本 recipe + 配置模板。是最小化、可独立存在的“构建框架内核”。https://git.openembedded.org/openembedded-core
PokyPokyYocto 的参考发行版(Reference Distribution):OE-Core + 额外配置层 + BSP 示例,形成一个完整、可直接构建的嵌入式 Linux 系统模板https://git.yoctoproject.org/poky(包含 OE-Core 作为子模块)
Yocto ProjectYocto Project伞状开源项目(Umbrella Project):由 Linux Foundation 治理,包括 Poky + 工具链 + 文档 + 测试框架 + 社区标准。不是代码仓库,而是一个工程标准https://www.yoctoproject.org/
  • 一句话总结:OE-Core 是“零件库”,Poky 是“组装好的样车”,Yocto Project 是“汽车标准与生态”。
2. 包含关系(层级结构图)
+--------------------------- Yocto Project (伞状项目) ---------------------------+
|  - 治理:Linux Foundation、发布周期(每6个月,如 scarthgap=5.0)             |
|  - 工具:devtool, Toaster, runqemu                                      |
|  - 测试:Yocto Compatible Layers, OEQA                                 |
|  - 文档:yoctoproject.org                                               |
|                                                                              |
|  +------------------------ Poky (参考发行版) ---------------------------+   |
|  |  - meta-poky:发行版配置(distro/poky.conf)                         |   |
|  |  - meta-yocto-bsp:参考 BSP(QEMU、BeagleBone 等)                   |   |
|  |  - 包含 OE-Core 作为基础                                             |   |
|  |                                                                      |   |
|  |  +--------------------- OE-Core (核心元数据) --------------------+  |   |
|  |  |  - BitBake:构建引擎                                          |  |   |
|  |  |  - recipes-core/:基本包(busybox, glibc)                    |  |   |
|  |  |  - classes/:bbclass(如 kernel.bbclass)                     |  |   |
|  |  |  - conf/:bitbake.conf 等模板                              |  |   |
|  |  +---------------------------------------------------------------+  |   |
|  +----------------------------------------------------------------------+   |
+--------------------------------------------------------------------------------+
          ↑
          └─ 实际项目扩展(如 OpenBMC 添加 meta-phosphor、meta-aspeed 等 layer)
  • 关键嵌套
    • Yocto Project 包含 Poky:Poky 是 Yocto 的“官方参考实现”。
    • Poky 包含 OE-Core:Poky 的 meta/ 目录就是 OE-Core 的克隆/子模块。
    • OE-Core 不包含 Poky/Yocto:OE-Core 可以独立使用(但很少这么做)。
3. 功能对比
功能OE-CorePokyYocto Project
构建引擎✅ BitBake✅(继承)✅(标准化)
基本 recipe✅(核心包)✅ + 扩展✅ + 兼容层
可直接构建镜像❌(需额外配置)✅(bitbake core-image-minimal✅(通过 Poky)
BSP 支持❌(无硬件示例)✅(QEMU、ARM 等参考板)✅ + 社区 BSP
版本发布无固定周期与 Yocto 同步✅(scarthgap、nanbield 等)
在 OpenBMC 中的角色基础层(poky/meta/)环境初始化(source oe-init-build-env整体标准(OpenBMC 跟踪 Yocto 分支)
  • OE-Core:最小化(~100MB),焦点是“如何构建软件包”。
  • Poky:可开箱即用(~500MB+),添加了 local.conf 默认模板、MACHINE=qemux86-64 等。
  • Yocto Project:确保一切“兼容”(层必须通过兼容性测试)。
4. 实际使用与 OpenBMC 示例
  • 克隆与初始化(OpenBMC 典型流程):

    git clone https://github.com/openbmc/openbmc.git
    cd openbmc
    source setup romulus  # 内部会 source poky/oe-init-build-env → 初始化 Poky 环境
    
    • 这里 poky/ 目录 = Poky 仓库(包含 OE-Core)。
    • 查看关系:
      ls poky/meta/              # OE-Core 结构
      cat poky/meta-poky/conf/distro/poky.conf  # Poky 配置
      
  • 构建镜像

    bitbake obmc-phosphor-image  # 基于 Poky(OE-Core + OpenBMC layer)
    
  • 版本查看(确认三者版本一致):

    # Yocto 版本(代号)
    cat poky/meta-poky/conf/distro/poky.conf | grep DISTRO_CODENAME  # e.g., scarthgap
    # OE-Core 版本(与 Poky 同步)
    git -C poky/meta/ log -1  # OE-Core 子模块 commit
    
  • OpenBMC 的扩展:在 Poky/OE-Core 基础上添加 meta-phosphor(应用)、meta-aspeed(BMC 硬件),形成完整 BMC 镜像。

常见误区澄清
  • 不是三个独立工具:你不会“单独用 OE-Core 构建 OpenBMC”,总是通过 Poky(Yocto 标准)初始化。
  • 版本同步:OpenBMC 主线跟踪最新 Yocto(如 scarthgap),OE-Core/Poky 自动匹配。
  • 为什么有三层:OE-Core 保持纯净,Poky 提供参考,Yocto 确保生态健康。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一如既往の

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值