【Yocto学习入门】01 - Yocto简介
一、什么是yocto?
yocto
是一个开源合作项目,能帮助开发者为不同的硬件架构制作基于
Linux
的系统
Image
镜像,
yocto
提供了提供了很多工具和一个开放空间帮助开发者直接共享技术,软件栈,配置和良好的开发习惯, 这些工具和交流的空间能让开发者们制做各种量身定制的
Linux
镜像.
简单来说,
Yocto
是一个能让开发者制作自定义
Linux
镜像的项目。
如果你想在有限的硬件资源上运行
Linux
,或者添加新的功能,有必要对
Linux
进行 裁剪或者更改,比如改写
uboot
,添加新驱动或应用 ,裁剪无用的系统功能等,
Yocto
能让这个开发过程更新简单高效。
二、openembedded,poky和yocto的关系
OpenEmbedded
包含核心元数据层和BitBake
构建工具BitBake
是任务执行程序和调度程序,它是OpenEmbedded
构建系统的核心。OpenEmbedded-Core(OE-Core)
元数据,其中包括共享配置,全局变量定义,共享类,包装和配方。其中,类定义了构建逻辑的封装和继承。配方是要构建的软件和图像的逻辑单元。Poky
既是Yocto
的构建示例也是一套构建工具,Poky
是位于OE-Core
之上的集成层。meta-poky
,这是特定于Poky
的元数据。meta-yocto-bsp
,这是Yocto
项目特定的basic
支持包(BSP
)。
三、BitBake 是什么
BitBake
是一个通用的任务执行引擎,它允许
Shell
和
Python
任务在复杂的任务间相关性约束内工作时高效且并行地运行。
BitBake
的主要用户之一
OpenEmbedded
以此内核为基础,并使用面向任务的方法构建嵌入式
Linux
软件堆栈。
从概念上讲,
BitBake
在某些方面类似于
GNU Make
,但有很大的区别:
BitBake
根据提供的构成任务的元数据执行任务。 元数据存储在配方(.bb
)和相关的配方“追加”(.bbappend
)文件,配置(.conf
)和基础包含(.inc
)文件以及类(.bbclass
)文件中。 元数据向BitBake
提供有关要运行哪些任务以及这些任务之间的依赖关系的说明。BitBake
包含一个提取程序库,用于从各个地方(例如本地文件,源代码控制系统或网站)获取源代码。- 每个要构建的单元的指令(例如,一个软件)被称为“配方”文件,其中包含有关该单元的所有信息(依赖项,源文件位置,校验和,描述等)。
BitBake
包括客户端/服务器抽象,可以从命令行使用,也可以通过XML-RPC用作服务,并且具有多个不同的用户界面。
四、yocto的工作流程
了解
Yocto Project
工作流非常重要,因为它可以帮助您查明发生问题的位置以及构建的中断方式。
工作流分为以下步骤:
- 开发人员指定架构,策略,补丁和配置详细信息。
- 构建系统从指定的位置获取并下载源代码。该项目支持标准方法(例如
tarball
)或源代码存储库系统(例如git
)。 - 将源提取到本地工作区中,在该工作区中将应用补丁,并且将运行用于配置和编译软件的常见步骤。
- 将软件安装到临时暂存区域,在该区域中,您选择的二进制软件包格式(
deb
,rpm
或ipk
)将用于汇总软件。 - 在整个构建过程中都会运行不同的质量检查和健全性检查。
- 创建二进制文件后,将生成二进制程序包提要,然后将其用于创建最终的根文件映像。
- 生成文件系统映像。
五、Yocto 专业术语
- 配置文件:包含全局定义变量,用户定义变量和硬件配置信息。 配置文件告诉构建系统需要构建什么,什么需要放入镜像,以支持哪个特定平台。
- 配方
Recipe
:Recipe
可以包含一列用来构建二进制镜像文件的设定和任务(指令)。Recipe
描述了你从哪获取代码,需要应用哪个(代码)补丁。同时Recipe
还描述了对于其他Recipe
或库的依赖,以及配置和编译选项。Recipe
存放在Layer
中。 - 层Layer:相关Recipe的集合 Layer允许你将元数据(metadata)集合在一起,自定义你的构建。有时候你的构建是可以支持多种不同架构的,那么这种数据,可以通过Layer方式将它们独立出来。
- 元数据
Metadata
:Yocto Project
在构建Linux
发行版本时,构建系统会解析的文件(数据),Metadata
是Yocto Project
中很关键的一个元素。通常来说,元数据包含recipe
,配置文件,,其他参考构建指令的信息,以及控制构建什么/如何构建(what and how
)的数据。元数据也包括命令(command
),软件版本信息,从何处获取,其他用来做补丁的文件或是特定场景下需要自定义软件的信息。OpenEmbedded Core
是重要的一组被验证过的元数据。 OpenEmbedded-Core
:OE-Core
是基础recipe
,类文件,和相关文件的元数据组合,在基于OpenEmbedded
的系统中很常用,Yocto Project
也使用它。OE-Core
由OpenEmbedded
社区将其开发的原始仓库取其核心,充分验证过的recipe
的集合而形成的关键核心。Poky
: 一个参考嵌入式发行版本,同样也用来作为提供基本功能的发行,可以用来说明(学习)如何自定义发行版本,可以测试Yocto Project
组件,还可以为用户下载Yocto Project
。Poky
不是产品级的,但它是一个很好的定制化工作起点。Poky
是在OE-Core
上层的一个Layer
集成。- 构建系统 - “
Bitbake
”:调度表和执行引擎,用来解析指令(recipe
)和配置数据 然后它创建依赖树,安排编译,调度编译,最后执行定制化Linux镜像/发行版本的构建。BitBake
是类似Make
的一个构建工具。BitBake recipe
指定一个特定包是如何被构建的,包括所有包的依赖,源代码路径,配置,编译,构建,安装,和移除指令。Recipe
也在标准变量中存储包的元数据。相关Recipe
形成一个Layer
。构建过程中,追踪依赖,执行编译或交叉编译。作为交叉构建的第一步,矿界首先创建适用于目标平台的eSDK
套装。 - 包
Packages
:构建系统的输出,用来创建最终的镜像。 Extensible Software Development Kit (ESDK)
:一个自定义的SDK
,应用开发者可以用来将他们的库和代码改动写入镜像,为其他应用开发者提供代码。- 镜像
image
:加载到设备上的Linux
发行版本(操作系统)的二进制形式。
参考文章链接:
- 《yocto 教程》
- 《怎么开始学习yocto?》
- 《文档阅读:Yocto项目总览和术语手册第一章和第二章》
- 《文档阅读:Yocto项目总览和术语手册第三章和第四章》
- 《【Yocto学习系列(一)】Yocto简介》
- 《【Yocto学习系列(二)】Yocto术语》
- 《Yocto Project Overview and Concepts Manual》
- 《yocto开发嵌入式内核固件合集视频》
版权归原作者 "小夜猫&小懒虫&小财迷"的男人 所有, 如有侵权,请联系我们删除。