首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >怎么使用 Yocto 构建文件系统?

怎么使用 Yocto 构建文件系统?

作者头像
韦东山
发布2022-05-05 16:20:12
发布2022-05-05 16:20:12
3.3K0
举报
文章被收录于专栏:韦东山嵌入式韦东山嵌入式

1. 简介

Yocto项目使用更强大和定制化的方法,来构建出适合嵌入式产品的Linux系统。Yocto不仅仅是一个制做文件系统工具,同时提供整套的基于Linux的开发和维护工作流程,使底层嵌入式开发者和上层应用开发者在统一的框架下开发,解决了传统开发方式下零散和无管理的开发形态。

yocto是一个开源的“umbrella”项目,意指它下面有很多个子项目,Yocto只是把所有的项目整合在一起,同时提供一个参考构建项目Poky,来指导开发人员如何应用这些项目,构建出嵌入式Linux系统。它包含Bitbake、 OpenEmbedded-Core, 板级支持包,各种软件包的配置文件。可以构建出不同类需求的系统,如带Qt5.14图形库的100ask-image-qt系统,全功能命令行系统100ask-image-core,基于ST官方weston系统及100ask-image-weston的系统。

100ASK_STM32MP157提供了符合Yocto的配置文件,帮助开发者构建出可烧写在100ASK_STM32MP157_PRO板上的Linux系统像。Yocto还提供了丰富的开发文档资源,让开发者学习并定制自己的系统。由于篇幅有限,不能完整介绍Yocto的使用,请用户自行上网搜索。

本节适合需要对文件系统进行深度定制的开发者,希望从Yocto构建出符合100ASK_STM32MP157系列开发板的文件系统,同时基于它的定制需求。初次体验使用或无特殊需要的开发者可以直接使用MYD-YA157C已经提供的文件系统。由于Yocto构建前需要下载文件系统中所有软件包到本地,为了快速构建,100ASK_STM32MP157已经把相关的软件打包好,可以直接解压使用,减少重复下载的时间。 注意:构建Yocto不需要加载工具链环境变量,请创建新shell或打开新的终端窗口。

注意:编译yocto系统以主频为2.5Ghz 4核处理器 DDR4 8GB内存 200GB磁盘空间大小的主机配置为例,编译100ask-image-core 可能最少需要5个小时,编译带QT或者weston界面的系统镜像可能需要10个小时以上,yocto最小支持配置建议在2GB内存2核2.5Ghz 100G空间磁盘上。

注意:执行一键配置环境脚本安装部分依赖包,否则会在编译时报错。

2. 配置编译

代码语言:javascript
复制
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell$ DISTRO=openstlinux-eglfs MACHINE=100ask source layers/meta-100ask-st/scripts/envsetup.sh

由于yocto所需软件包大部分都在国外网站上保存,国内下载很慢,所以需要单独拷贝资料光盘“07_Bsp_sdk (BSP包)/YoctoDunfell_Downloads.tar.gz” 到“/home/book/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/buildopenstlinuxeglfs-100ask ”目录下,之后执行 “tar -xvf YoctoDunfell_Downloads.tar.gz “等待解压缩完成,会出现一个dowloads文件夹,里面包含了所有yocto下载必需软件包。

继续执行编译命令:

代码语言:javascript
复制
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake  100ask-image-core

编译完成后生成的目录镜像在”book@100ask:~/100ask_stm32mp157_prosdk/Yocto_Dunfell/build openstlinuxeglfs-100ask/tmp-glibc/deploy/images/100ask “目录内。

3. 扩展命令

3.1 单独编译某个包

比如单独编译内核,需要先清除之前的编译缓存再进行编译。

代码语言:javascript
复制
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake virtual/kernel -c cleansstate
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake virtual/kernel

编译某个包需要执行如下命令,启动pkg为包名,一般以.bb为后缀,加上-v参数输出编译详细信息。

代码语言:javascript
复制
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake <pkg> -v

3.2 编译 sdk

编译完系统后可以执行如下命令生成 sdk 包,用以后续针对系统的应用开发。

代码语言:javascript
复制
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake meta-toolchain

编译完成生成的压缩包一般在” DISTRO/tmp-glibc/deploy/sdk “目录内。

3.3 其它命令

使用多线程编译,需要修改DISTRO 里面的conf/local.conf配置项,新增如下两个参数

代码语言:javascript
复制
BB_NUMBER_THREADS ?= "8"
PARALLEL_MAKE ?= "-j 8"

4. 深入学习 yocto

由于目前国内针对于yocto的教程比较稀缺,可以参考yocto官方提供的英文教程进行学习,其中资料网 址是https://www.yoctoproject.org/docs/ 可以优先阅读学习,如下图红框所示的两份在线资料。

其中有几本基于yocto 项目开发的书籍,推荐阅读:

国内有个作者针对于上面左边的 Embedded Linux Projects Using Yocto Project Cookbook 翻译为中文版本,国内可以在各大图书网站直接购买阅读。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
  • 2. 配置编译
  • 3. 扩展命令
    • 3.1 单独编译某个包
    • 3.2 编译 sdk
    • 3.3 其它命令
  • 4. 深入学习 yocto
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档