Yocto(一)-介绍
1. 背景
在嵌入式产品开发中,通常都会定制自己公司的Linux发行版,所谓发行版,即根据自家产品的功能和特性定制bootloader、kernel、rootfs,最后得到这三个的镜像文件。
定制Linux发行版是一件耗时耗力、技术含量比较高的一项大工程,对于很多公司来说,是没有这个人力和财力来做这件事的,所以大多数公司会选择现有的开源工具来定制自己家的 Linux 发行版。
据我所知,当前比较主流的开源工具有两款,分别是 Buildroot 和 Yocto,它们都是开源的工程,思想也大体相同,就是将很多的开发包集成到开源工具中,然后根据自家产品的功能和特性进行配置,配置完成后进行编译时就会只编译并集成被配置的开发包,没被配置的开发包不会下载或者不会被集成到最终的镜像文件中。
在汽车电子行业,Yocto 是主流,至于为啥我也不知道,Buildroot 和 Yocto 我都有研究过一点点,但是在工作中目前只接触过 Yocto,所谓“没有实践就没有发言权”,所以本章就只介绍一下Yocto。
2. 官方资源
官网:https://www.yoctoproject.org/
yocto项目快速开始手册:https://www.yoctoproject.org/docs/2.1/yocto-project-qs/yocto-project-qs.html
yocto项目开发参考手册:https://www.yoctoproject.org/docs/1.5/ref-manual/ref-manual.html
3. 组成
Recipes:.bb/.bbappend文件,即配方文件,描述了从哪获取软件源码,如何配置,如何编译。bbappend和bb的区别主要在于bbappend是基于bb的,功能是对相应的bb文件作补充和覆盖,有点类似于“重写”的概念。
Class:.bbclass文件,即类文件,包含在配方文件之间共享的有用信息。比如autotools该类,其中包含Autotools使用的任何应用程序的常用设置。Yocto项目参考手册中的“ 类 ”一章提供了有关类及其使用方法的详细信息。https://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#ref-classes
Configuration:.conf文件,即配置文件,我们可以用它来改变构建方式,比如conf/local.conf可以配置机器配置选项,分发配置选项,编译器调整选项,常规通用配置选项和用户配置选项 。
conf/bblayers.conf中可以添加用到的layer层路径,从而在编译时将他们添加进去。层是组织文件和目录结构的元数据(配置文件、配方)集合。
4. 配置
Yocto的目的很简单,它要经过一级一级配置,逐步缩小配方,直至得到uboot、kernel、rootfs这三个image。每一级需要哪些配方,由该级对应的配置文件(conf/bb)决定。越上级的配置是越笼统的,越下级的配置越细致。如果下级的配置项相对于上级有补充或者冲突,则以下级的内容为准,可以认为下级会对上级进行“重写”。
有关构建的路线和流程:对于整个发行版构建,虽然每一级的配方由(conf/bb)决定,但是每一级路线和方向的选择,是由我们最终bitbake的对象决定的,BitBake需要一些基本配置文件才能完成构建。这些文件是*.conf文件。最低限度必需的文件作为示例文件驻留 在build/conf。比如我们最终bitbake avi-image-core,我们想要获得rootfs.img,那么:
第一步Poky就会从local.conf开始,一路向下,一级一级配置,直到配置到和rootfs有关的那一堆bb,最终形成完整完全的配方
第二步获取配方需要的资源,比如各种软件包,比如kernel的源码
第三步把所有的资源编译出我们需要的镜像
在conf/local.conf文件提供了许多定义构建环境的基本变量:
Target Machine Selection(目标机器选择): 由 MACHINE 控制
Download Directory(下载目录): 由 DL_DIR 控制
Shared State Directory(共享状态目录): 由 SSTATE_DIR 控制
Build Output(构建输出): 由 TMPDIR 控制
Distribution Policy(分配策略): 由 DISTRO 控制
Packaging Format(打包格式): 由 PACKAGE_CLASSES 控制
SDK Target Architecture(SDK目标架构): 由 SDKMACHINE 控制
Extra Image Packages(额外的image包): 由 EXTRA_IMAGE_FEATURES 控制
5. 构建工具
Bitbake:BitBake是OpenEmbedded构建系统的核心工具,负责解析元数据,从中生成任务列表,然后执行这些任务。【BitBake是一种类似make的构建工具】
5.1 要查看BitBake支持的选项列表,请使用以下命令之一
bitbake -h
bitbake --help
5.2 显示所有可以bitbake的包
bitbake -s
5.3 仅对某组配方文件执行任务(比如需要构建的配方的名称为matchbox-desktop_1.2.3.bb)
bitbake matchbox-desktop
5.4 完成某项特定任务清除该任务
bitbake matchbox-desktop -c clean
5.5 使用“-k”忽略错误,继续执行其它任务:最常用场景,在您构建系统时,使用 -k 选项,可忽略某个出错任务,继续执行其它构建任务
bitbake -k core-image-staoBitBake
5.6 一次性编译所有内容,内核、文件系统等
bitbake core-image-minimal
5.7 生成内核镜像和设备树文件
bitbake linux-xlnx -C compile
5.8 单独编译u-boot,u-boot-imx(指定编译生成的u-boot镜像到deploy)
bitbake -c compile -f u-boot-imx;bitbake -c deploy -f
5.9 单独编译交叉开发工具链(可扩展SDK)
bitbake -c populate_sdk_ext imagename
5.10 单独编译交叉开发工具链(标准SDK)
bitbake -c populate_sdk imagename
5.11 执行某个任务的编译
bitbake optee_example -c compile
5.12 在构建系统时,先下载不构建
bitbake -c fetchall core-image-stao
Yocto(一)-介绍相关推荐
- YOCTO项目介绍:通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统
目录 YOCTO项目介绍 配置内核 build配套 Yocto ,是一个开源社区.它通过提供模版.工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (3 ...
- (一)Yocto的介绍
一.概念及介绍 Yocto项目是一个开源协作项目,可帮助开发人员创建基于Linux的定制系统,这些系统专为嵌入式产品而设计,无论产品的硬件架构如何.Yocto Project提供灵活的工具集和开发环境 ...
- 《嵌入式Linux系统开发:基于 Yocto Project》笔记
写在前面 这本书的"译者序"里面有这么一句话: 市面上不缺乏适用于各种开发语言的开发.编译和打包工具,但在Yocto项目出现前,这些零散的工作需要嵌入式开发者自己串起来以交付最终的 ...
- IMX6Q yocto工程
1简介 1.1 yocto工程介绍 摘抄自维基百科:https://zh.wikipedia.org/wiki/Yocto%E8%A8%88%E5%8A%83 Yocto计划(英语:Yocto Pro ...
- Yocto基本概念及介绍
Yocto详解 参考:http://www.yoctoproject.org/docs/2.1/mega-manual/mega-manual.html#creating-a-general-laye ...
- 利用Yocto构建嵌入式Linux教程02--Yocto的一些基本概念介绍
本教程选用的Yocto版本为3.0.4,使用的Linux发行版为Ubuntu 18.04 (LTS),图中所有示例为实际测试截图,有问题请给我留言.微信公众号:嵌入式Linux那些事儿 在Yocto项 ...
- yocto recipe构建流程介绍
yocto recipe构建流程介绍 1.recipe构建过程简介 2.查找日志和工作文件 3.设置配置参数 4.recipes间共享文件 5.打包 1.recipe构建过程简介 在使用devtool ...
- yocto Extensible SDK介绍
yocto Extensible SDK介绍 使用yocto Extensible SDK 1.1 为什么使用yocto Extensible SDK及其包含了什么 1.2 安装 Extensible ...
- Yocto系列讲解[理论篇] 3 - meta layer recipe class概念介绍
By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...
- yocto(一)——yocto介绍
本文参考yocto官方手册,如有理解不当之处,欢迎留言指出. 项目概述和概念手册:https://docs.yoctoproject.org/overview-manual/index.html 项目 ...
最新文章
- va_start() va_end()函数应用
- 拿什么兜住网络信息安全网底
- 业务系统设计之一:系统菜单设计
- jvmti_从javaagent迁移到JVMTI:我们的经验
- 如何恢复matlab关联,恢复matlab文件关联
- 蓝桥杯大学组python试题_第十届蓝桥杯2019年C/C++ 大学A组省赛试题
- bindService执行成功后,低概率出现onServiceConnected没有被调用
- SAP UI5 应用开发教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍
- java按钮陷下去_付费?广告?捐款?如何让开源软件活下去?
- 信息学奥赛一本通(1171:大整数的因子)
- 关于GDAL180中文路径不能打开的问题分析与解决
- Spark Streaming的介绍和IDEA操作
- 结构化编程 —— 顺序、分支(选择)、循环
- Linux命令之shutdown
- ubuntu16.04下编译安装Autoware
- 2018汪文君Google Guava实战
- 4G的小程序与5G的Chromium OS?
- ZUI————对话框闪退问题
- Mysql报错1055
- 戴尔寄希望于区块链在印度服务器市场保持竞争力
热门文章
- xp系统怎么查看计算机共享文件夹,xp系统提升查看局域网共享文件速度方法分享...
- 计算机Word2010在线做题,Word2010试题练习题库(答案).doc
- Python四舍五入保留两位小数
- 自动html5视频播放插件,视频自动转HTML5播放器插件
- 运维团队(OPS)与技术团队有效沟通配合探讨
- matlab三角二倍角公式,数学三角函数常用的二倍角公式
- ASP.NET文档管理系统(功能强大且实用)
- 校赛题解(部分)+反思
- 在配置DNS后服务器启动失败问题的排查
- 都说web前端开发薪资高,入行就有上万月薪,转行难吗?