【发布时间】:2020-12-24 17:57:15
【问题描述】:
我对这三个术语感到非常困惑:Yocto、OpenEmbedded 和 Poky。我将引用文档中的一些引用,注意我的理解并提出一些问题:
什么是 Yocto?
我将首先尝试了解 Yocto 项目究竟是什么是。这是来自Yocto Project Overview and Concepts Manual的第一段:
Yocto 项目是一个开源协作项目,可帮助开发人员创建基于 Linux 的定制系统,这些系统专为嵌入式产品而设计,无论产品的硬件架构如何。 Yocto Project 提供了一个灵活的工具集和开发环境,允许世界各地的嵌入式设备开发人员通过共享技术、软件堆栈、配置和用于创建这些定制 Linux 映像的最佳实践进行协作。
好的,我知道 Yocto 是一个帮助开发人员......并提供......但确实如此的项目?是软件吗?是 只是一群人? “项目”一词可以有多种理解。
OpenEmbedded 和 Poky:
这是来自Reference Manual,第 2 章的 OpenEmbedded 构建系统的定义:
特定于 Yocto 项目的构建系统。 OpenEmbedded 构建系统基于另一个名为“Poky”的项目,该项目使用 BitBake 作为任务执行器。
OpenEmbedded 似乎是基于另一个名为“Poky”的项目(在什么意义上这是一个项目?它是一个软件吗?等等),而 Poky 使用 BitBake。从我读到的其他来源,我了解到 BitBake 是完成所有构建的实际软件。
现在让我们来看看 Poky 的定义。这也来自参考手册:
Poky,读作 Pock-ee,是参考嵌入式发行版和参考测试配置。 Poky 提供以下...
Poky 到处都被解释为“参考分布”,你可以从它开始。我从这个定义中理解的是:让我们以 Visual Studio 作为比较:你有 Visual Studio,它是一个工具,你可以(可能)有一些由 Visual Studio 构建和运行的“参考代码”。
回到我们的业务:看起来,Poky 是一种“参考代码”,在我们的例子中:OpenEmbedded,可以构建该工具。但话又说回来,在 OpenEmbedded 的定义中,它说 OpenEmbedded 基于 Poky。
情况只会变得更糟:这来自 Yocto 项目概述和概念手册,2.3.4:
Poky 是 Yocto 项目的参考发行版。它包含开放嵌入式构建系统(BitBake 和 OE-Core)以及一组元数据,可帮助您开始构建自己的发行版。
所以现在 Poky 包含 OpenEmbedded,它基于 Poky。怎么回事??
如果有人能向我解释所有这些术语,关于描述所有这些之间关系的famous figure,我会非常高兴。
【问题讨论】:
-
尝试(很可能是错误的,因为它实际上也让我感到困惑):Poky 是一个从源代码构建的 linux 发行版,使用 openembedded build-linux-from-source 系统。可以说,Bitbake 是那里的实际“制作程序”,而 openembedded 添加了“制作文件”(食谱),作为类比。 Yocto 是总括项目。
-
因为 Poky 需要 openembedded 配方,所以当您克隆 Poky 存储库时,您还会在工作树中获得一份 openembedded 配方(最重要/稳定,称为“核心”)和 bitbake。也许这就是混乱的来源。
-
参考手册中关于“Poky”的历史注释解释说,OpenHands 最初是基于 OpenEmbedded 创建 Poky,后来当 Intel 收购 OpenHands 时,Poky 被用于更新基于 Poky 代码的 OpenEmbedded 构建系统。这会解决你的困惑。
标签: embedded-linux yocto openembedded