欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Yocto项目简介

时间:2023-07-23

Yocto简介
一、Yocto项目简介

The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems for embedded products, regardless of the hardware architecture、The project provides a flexible set of tools and a space where embedded developers worldwide can share technologies, software stacks, configurations and best practices which can be used to create tailored Linux images for embedded devices.
上面是官方简介描述和官方框图。简单的说
(1) Yocto项目是一个世界性的开源合作项目
(2) 是用于给设备定制开发嵌入式Liunx操作系统发行版的。
(3) 它支持多种架构,x86、arm、ppc、mips等都没有问题。
(4) 拥有众多商业支持机构,主流芯片厂商、操作系统厂商、软件厂商都是Yocto的会员与支持者,如intel、arm、facebook、xilinux、microsoft、cisco、comcast、TI、wind river等。都会在他们的商业产品中使用yocto项目,并把他们的成果贡献到yocto项目,引领yocto的发展方向。

二、Yocto的历史,为什么会出现Yocto项目

嵌入式 Linux由于其开源、生态强大、好用的优点,广泛应用于各种设备。由于其开源代码可改,各厂商都可以改,你改一个版本、我改一个版本,这样就会出现很多个版本,且兼容性差。就像军阀混战,其实这些版本大同小异,很多部件都是通用的,都是可以共享的。如果把这些通用的部件共享、汇总到一个项目里,就可以减少嵌入式Linux开发的很多重复工作,对整个行业都是有利的。所以开源精英们就在统一的这条路上行动了。

2003年 OpenEmbedded 项目启动,开源的嵌入式linux系统构建环境,包含自动化构建系统bitbake和OpenEmbedded元数据(描述各厂家的bsp以及工具的获取与配置),目标是简化、统一嵌入式LINUX系统的构建。获得了商业团体的支持,产品中使用该系统,其中包括OpenedHand ,基于OpenEmbedded 项目开发了poky Linux发行版。
2008年intel收购了OpenedHand,目的是进一步发展poky Linux发行版作为嵌入式设备的通用发行版。 为了让poky Linux发行版支持多种不同的架构和硬件平台,2010年,intel与Linux基金会接洽,在基金会的赞助下,成立中立管理的协作项目,yocto项目。yocto项目和OpenEmbedded 项目技术alignment,紧密合作,相互支持。

Yocto Project 为解决嵌入式Linux 开发乱象迈出了一大步。芯片、操作系统和设备厂商之间的协作和战略规划有助于实现广泛而一致的行业支持。操作系统厂商可以基于 Yocto Project 内核来开发商业操作系统和其他产品,芯片厂商也可以提供硬件BSP,软件厂商可以提供软件,这样一组合,各取所需,皆大欢喜。

Yocto项目为整个生态系统提供了以下获益:
(1)健壮的构建系统:Yocto Project 支持从其他常用构建系统轻松迁移到 Yocto Project 的经过事实验证的环境,而且新的软件版本更新也十分容易。
(2)灵活的定制能力。开发人员可以自由选择资源的使用,或者完善特定的组件(包括这些组件的特定版本)。
(3)可简单地向商业操作系统迁移:Yocto Project 的设计允许用户使用自主开发的操作系统或商业操作系统,在迁移时不会丢失优化或功能。此外,商业操作系统也可以使用 Yocto Project 作为上游资源,从而确保最大化代码重用。

综上所述,Yocto Project赋予开发人员一个极高的起点,帮助他们避免重复工作以及不必要的维护。事实上,Yocto Project是全球最大的开源项目之一,以此为基础而开发的通用创建系统,可帮助开发人员避免从零开始,转而把时间和资源集中于开发差异化Linux设备,从而实现投资回报最大化。

三、yocto的设计思想,一些专业术语

通过上面的介绍,相信对yocto是用来干什么的,有了简单的认识。yocto在代码层面,对开发者来说,它究竟是什么样的呢?

个人通俗的理解,yocto就是一堆配置文件与脚本,这些配置文件与脚本描述了从哪下载软件包,下载后如何解压、编译、安装软件包,以及一个操作系统发行版,包含的这么多软件、工具如何链接、组合成为一个操作系统发行版image,这些都要通过bitbake构建系统来完成。

Yocto在使用中,会遇到一些专业术语,这些专业术语可以有助于理解它的设计思想。如:层(layer)、BSP layer、菜谱(recipe)、metadata、Poky、上游(upstream 软件的原始作者或发起人)。上面最形象的就是菜谱(recipe),教你怎样做菜。

菜谱(recipe):描述从哪获取软件源码和哪一个patch应该被使用。菜谱(recipe)提供一个特定软件的详细信息,包含菜谱描述符、菜谱版本、package的许可证、上游资源存储库(从哪获取源码),菜谱同时也包括描述package的build过程,如打patch、编译、安装、自动测试等。

元数据(metadata):包含配置文件、软件菜谱以及一些构建相关的其他信息,yocto构建系统通过解析metadata来构建系统。

层(layer):是一系列菜谱(recipe)的组合。层(layer)模型,是区别于其他简单的构建系统的特点之一,开发者根据逻辑区分不同的层(layer),如bsp layer负责处理器相关的板级支持、gui layer负责图像界面方面的软件支持、中间软件layer负责中间软件方面的支持、应用软件layer负责应用软件的支持,Yocto的层模型思想促进功能的协作、分享、定制、重复使用。通过layer模型的设计保证了yocto构建的模块化、灵活、代码可复用。

Poky:是一个嵌入式参考发行版和一系列测试的配置,不是一个产品级的发行版,但是是用户自定义的好的开始。Poky就是yocto给的一个参考示例,是一个经过验证的比较通用的参考示例,开发者可以基于poky添加自己的定制功能。

通过对上面yocto专业术语的学习,可以形象的把yocto比喻成一个跨国连锁饭店,饭店生产的一大桌子饭就相当于yocto输出的操作系统image。每道菜相当于image中的每个软件。一大桌子饭里,每道菜的制作都需要菜谱,菜谱描述了如何做这道菜。为了方便管理菜谱,又分为安徽菜、广东菜、北京菜等,这就对应于yocto中的layer。为了方便预定,饭店推出了参考版满汉全席套餐,对应于yocto中的poky。比如里面包含几个安徽菜、几个广东菜、几个北京菜,以这个为标准,客人可以减菜、加菜、提要求。上游(upstream 软件的原始作者或发起人)就相当于菜市场,饭店根据菜单区菜市场买菜,对应于yocto中去github或者其他网址中下载源码。跨国连锁饭店的比喻对应于yocto是世界性的开源协作项目,世界各国的饭店、厨师会不断的研发新的菜谱并测试,最后把测试好的菜谱发布给全世界用。

个人总结, Yocto的设计思想统一化、自动化、灵活易定制性、开源协作性。

四、yocto的特点
(1)广泛的被行业支持:半导体厂商、操作系统厂商、软件厂商、服务供应商
(2)支持多种架构:Intel, ARM, MIPS, AMD, PPC and other architectures,大部分ODM、OSV、芯片供应商创建支持各自硬件运行的bsp,支持qumu仿真运行。
(3)镜像和代码迁移容易:换一套开发环境,可以方便的把之前的成果迁移。
(4)灵活:公司可以基于yocto创建一个发行版作为基础,给各种产品定制发行版
(5)根据硬件能力定制系统,不同于完整的linux发行版,如没有显示屏,则可以不要X11, GTK+, Qt, Clutter, and SDL
(6)广泛的编译工具链支持:通用的不通用的都支持
(7)使用层模型:使用层来隔离和归类功能,减少项目复杂度和冗余,使更加容易的扩展系统,做定制化,使得功能有组织。
(8)支持局部构建:你可以单独编译安装包
(9)严格的发布时间:每六个月发布一次,一般在十月和四月
(10)丰富的个人和组织生态系统。有活跃的开源社区支持
(11)二进制重现性:yocto允许里了解各组件的依赖与实现。

五、yocto使用的挑战

(1)陡峭的学习曲线(Steep Learning Curve):yocto工程有很多中方式完成你的目标系统,当有很多中方式供你选择时,是比较难的。
(2)理解如何修改去适配目标设备,需要做一些调查研究:超越了简单的教程级别,理解如何给你的特殊设备做yocto发行版需要进行大量的研究与调查
(3)项目的工作流程容易让人迷惑:和传统的桌面开发和服务软件开发不一样
(4)交叉编译方式可能让人感觉不熟悉:在开发主机上开发目标板卡的代码,yocto会在开发主机上构建一套交叉编译环境。
(5)初始创建时间会比较长

六、Yocto的工作流程:

(1) 开发者指定目标硬件架构、策略、补丁、和配置的细节
(2) yocto构建系统下载源代码从指定的位置,通过git或者源码包下载
(3) 源码下载完成后,构建系统提取或解压到本地工作区,然后进行打patch和配置、编译
(4) 邮件系统安装编译好的软件到一个临时的工作区,软件的打包格式可以选择,DEB, RPM, or IPK
(5) 不同的QA和健全检查在整个构建过程中运行,保证各软件的正确性
(6) 在创建各种软件的二进制文件之后,构建系统创建最终的根文件映像。
(7) 构建系统生成最终的操作系统镜像和一套用于应用程序开发的sdk。

七、yocto的版权问题

In general, the Yocto Project is broadly licensed under the Massachusetts Institute of Technology (MIT) License。Yocto中用到的所有上游资源,在yocto中都会检查其license,如果一个模块需要的license不在基础开源协议中,yocto会报告警。即使有这样的工具,解决开源协议问题,还是依赖于开发人员。
也就是说,yocto本身是(MIT) License。MIT是和BSD一样宽松的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。
虽然yocto是MIT协议,但是在yocto中使用的上游资源具有各种各样的开源协议。在使用的时候还是要注意,要遵循对应的规范。这些开源协议有些要求你公开你的改动源码,有的不需要公开。

参考文档:
https://www.yoctoproject.org/ 官方文档

感兴趣的同学加关注,欢迎一起交流学习

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。