Yocto简介

Yocto是什么?

Yocto是最小的计量单位,幺(科托),10^-24[1]

Yocto Project概述

Yocto Project由开源代码组合而成,旨在帮助开发者开发嵌入式产品的定制化Linux系统,无论是什么样的硬件架构。[2]

Yocto Project提供了一系列的工具,以及分享(包括继续,软件,配置,最佳实践)社区用来为嵌入式设备创建(裁剪的)Linux系统。

Yocto Project 对以下三个关键组成进行组合,维护和验证:

  1. 一套用来使嵌入式Linux成功工作的集成工具,包括自动构建和测试的工具,板卡支持和符合许可的流程,以及定制化嵌入式Linux操作系统的组件信息。
  2. 一个参考嵌入式发行版本(称作为Poky)
  3. OpenEmbedded构建系统,和OpenEmbedded Project共同维护

Poky使用它所包含的构建系统(BitBake:构建引擎; OpenEmbedded-Core, 核心构建系统元数据)可以构建出一个很小的嵌入式操作系统。

下载构建系统时使用Poky构建指导‘文件’被称作为recipe(配方)和layer(层)。你可以修改,赋值,或者任何你需要的方式,来创建属于你的定制化嵌入式Linux。

关于Recipe(配方)和Layer(层)的介绍,将放到之后的教程中说明。

为什么使用Yocto Project[3]

  • 行业广泛采用:半导体,操作系统,软件及服务提供商采用并支持Yocto Project生产产品和提供服务。阅读Yocto Project首页"COMMUNITY" 和 "ECOSYSTEM" 标签了解Yocto Project 社区和使用Yocto Project的公司。
  • 架构无关:Yocto Project支持Intel,ARM,MIPS,AMD,PPC和其他架构。大多数ODM, OSV和芯片提供商为它们的硬件创建并提供BSP。如果你有自己的芯片,你可以创建支持它架构的BSP. Yocto Project也通过Quick EMUlator(QEMU)为广泛的设备模拟提供支持。
  • 移植镜像和代码容易:Yocto Project的输出可以很容易地在不同架构之间移植,而不需要使用新的开发环境。如果你使用Yocto Project创建了一个镜像或应用但是无法对它进行支持,诸如Wind River, Mentor Graphics, Timesys和ENEA这样地商业Linux供应商可以承担这个工作并提供支持。这些供应商有很多使用Yocto Project的产品。
  • 灵活性:在公司内可以创建一个内部Linux发行版本作为基础,在多个产品组之间使用。通过自定义和分层,项目组可以利用作为基础的Linux发行版本为它们的产品需要定制一个版本。
  • 适合资源有限的嵌入式和物联网设备:和一个完整的Linux发行版本不同,你可以使用Yocto Project为嵌入式设备创建精简版的版本。你只需要添加必要的功能支持和软件包。如果设备有显示部分,你可以使用X11, GTK+, Qt, Clutter, 和SDL这样的系统组件创建一个用户体验更好的发行版本。
  • 工具链扩展:如果标准工具链不足以满足硬件某些功能,你可以自定义工具链。
  • Mechanism Rules Over Policy: Focusing on mechanism rather than policy ensures that you are free to set policies based on the needs of your design instead of adopting decisions enforced by some system software provider.
  • 使用分层模型:Yocto Project分层架构将相关联功能组合到分隔的bundle中,你可以根据项目需求增加层,这样做的好处是降低项目复杂性和重复性,方便系统扩展,定制化,保持功能有组织地管理
  • 支持部分构建:你可以根据需要构建独立的软件包。Yocto Project通过sstate机制实现。
  • 严格的发布计划:每隔六个月(十月和四月)释放主要版本。
  • 丰富的个人及组织生态:支持论坛,专家,活跃开发者都在推动Yocto Project发展。
  • 再生产性:允许指定依赖,可以达到很高的binary再生产性(e.g. 99.8% for core-image-minimal)
  • 许可清单:方便了解开源代码许可

参考

  1. ^数量级 https://baike.baidu.com/item/%E6%95%B0%E9%87%8F%E7%BA%A7
  2. ^Software Overview https://www.yoctoproject.org/software-overview/
  3. ^Yocto Features https://www.yoctoproject.org/docs/2.7/overview-manual/overview-manual.html