首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Yocto Project 构建自定义嵌入式 Linux 发行版简介

使用 Yocto Project 构建自定义嵌入式 Linux 发行版简介

概述Yocto Project 是一个开源协作项目,它提供了一些模板、工具和方法来支持面向嵌入式产品的自定义 Linux 系统,不管硬件架构是什么。我想要告诉那些对 yocto 这个名称不甚理解的用户的是,术语 yocto 是最小的 SI 单元。最为一个前缀,yocto 表示 10^-24。
本文将提供一个分步指导,向您介绍如何使用 Yocto Project 的行业标准开源工具为嵌入式设备创建自定义的 Linux 操作系统,并使用 QEMU 在一台虚拟机中启动操作系统。Yocto Project 是由大型硬件公司和操作系统供应商资助的、由 Linux 基金会赞助的开源项目,提供了一些行业领先的工具、方法和元数据来构建 Linux 系统。
Yocto Project 的两大主要组件由 Yocto Project 和 OpenEmbedded 项目一起维护,这两个组件是 BitBake 和 OpenEmbedded-Core,前者是构建引擎,后者是运行构建过程所使用的一套核心配方 (recipe)。下一节会介绍所有项目组件。
Yocto Project 简介作为一个协作项目,Yocto Project 有时也称为 “umbrella” 项目,它吸纳了许多不同的开发流程部分。在整个 Yocto Project 中,这些部分被称为项目,包括构建工具、称为核心配方 的构建指令元数据、库、实用程序和图形用户界面 (GUI)。
PokyPoky 是 Yocto Project 的一个参考构建系统。它包含 BitBake、OpenEmbedded-Core、一个板卡支持包 (BSP) 以及整合到构建过程中的其他任何程序包或层。Poky 这一名称也指使用参考构建系统得到的默认 Linux 发行版,它可能极其小 (core-image-minimal),也可能是带有 GUI 的整个 Linux 系统 (core-image-sato)。
您可以将 Poky 构建系统看作是整个项目的一个参考系统,即运行中进程的一个工作示例。在下载 Yocto Project 时,实际上也下载了可用于构建默认系统的这些工具、实用程序、库、工具链和元数据的实例。这一参考系统以及它创建的参考发行版都被命名为 Poky。您还可以将此作为一个起点来创建您自己的发行版,当然,您可以对此发行版随意命名。
所有构建系统都需要的一个项目是工具链:一个编译器、汇编程序、链接器以及为给定架构创建二进制可执行文件所需的其他二进制实用程序。Poky 使用了 GNU Compiler Collection (GCC),不过您也可以指定其他工具链。Poky 使用了一种名为交叉编译 的技术:在一个架构上使用工具链为另一个架构构建二进制可执行文件(例如,在基于 x86 的系统上构建 ARM 发行版)。开发人员常常在嵌入式系统开发中使用交叉编译来利用主机系统的高性能。
元数据集元数据集按 进行排列,这样一来每一层都可以为下面的层提供单独的功能。基层是 OpenEmbedded-Core 或 oe-core,提供了所有构建项目所必需的常见配方、类和相关功能。然后您可以通过在 oe-core 之上添加新层来定制构建。
OpenEmbedded-Core 由 Yocto Project 和 OpenEmbedded 项目共同维护。将 Yocto Project 与 OpenEmbedded 分开的层是 meta-yocto 层,该层提供了 Poky 发行版配置和一组核心的参考 BSP。
OpenEmbedded 项目本身是一个独立的开源项目,具有可与 Yocto Project 交换的配方(大部分)以及与 Yocto Project 类似的目标,但是两者具有不同的治理和范围。
板卡支持包BSP 包含为特定板卡或架构构建 Linux 必备的基本程序包和驱动程序。这通常由生产板卡的硬件制造商加以维护。BSP 是 Linux 操作系统与运行它的硬件之间的接口。注意,您也可以为虚拟机创建 BSP。
BitBakeBitBake 是一个构建引擎。它读取配方并通过获取程序包来密切关注它们、构建它们并将结果纳入可引导映像。BitBake 由 Yocto Project 和 OpenEmbedded 项目共同维护。
Hob为了让嵌入式 Linux 开发更容易,Yocto Project 提供了几种不同的图形工作方法。项目的一个较新的添加项叫作 Hob,它向 BitBake 和构建过程提供一个图像前端。两者的开发工作仍在继续,包含社区用户研究。
开源许可证合规性遵守开源许可证是任何 Linux 开发工作的一个极其重要的部分。Yocto Project 的一个目标是尽可能容易地实现合规性。可以极为轻松地使用 Yocto Project 工具来创建清单(甚至构建整个源存储库)和过滤构建过程,用它们排除使用特定许可证的程序包。该项目使用了 Linux 基金会的 “开放遵守计划” (Open Compliance Program),该计划包含一个 Software Package Data Exchange® (SPDX™) 规范。
EGLIBC嵌入式 GLIBC (EGLIBC) 是 GNU C Library (GLIBC) 的一个变体,旨在能够在嵌入式系统上运行。EGLIBC 的目标包括减少内存占用、让组件可配置、更好地支持交叉编译和交叉测试。EGLIBC 是 Yocto Project 的一部分,但在它自己的治理结构内加以维护。
应用程序开发工具包应用程序开发工具包 (ADT) 能够让系统开发人员为他们使用 Yocto Project 工具创建的发行版提供软件开发工具包 (SDK),为应用程序开发人员提供了一种针对系统开发人员提供的软件栈进行开发的方法。ADT 包含一个交叉编译工具链、调试和分析工具,以及 QEMU 仿真和支持脚本。ADT 还为那些喜欢使用集成开发环境 (IDE) 的人提供了一个 Eclipse 插件。
Yocto Project 旗下的其他工具属于 Yocto Project 一部分的若干其他工具:
  • Autobuilder:不断自动构建 Yocto Project 工具,启用自动化的 Quality Assurance (QA) 活动。
  • Cross-Prelink:为交叉编译开发环境提供预链接,并改进性能。
  • Pseudo:模拟 root 访问,是构建可引导最终映像的一个不可或缺的部分。
  • Swabber:检测交叉编译版本何时会受到主机组件影响而无法使用。
  • Build Appliance:是一台运行 Hob 的虚拟机,使那些使用非 Linux 版本主机的人能亲眼看到 Yocto Project 进程。(注意:Yocto Project 构建工具目前仅在 Linux 上受支持。)
治理和社区对于任何开源项目来说,一个重要部分是开发和支持其组件的社区。Yocto Project 有一个活跃社区,部分由组织机构组成,包括硬件制造商、操作系统提供商、工具提供商和电子器件制造商,全方位覆盖了嵌入式开发,部分由个人组成,其中许多人为这些组织机构工作。
该项目由有一个首席架构师和一系列维护人员和技术主管(制定所有技术决策)管理。成员组织(很多通常是彼此竞争的)共同协作成立了一个顾问小组,顾名思义,他们的工作是顾问性质的。该小组管理项目资源,包括基础架构、宣传、推广和财务。
返回列表