博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Yocto Project Quick Build
阅读量:6119 次
发布时间:2019-06-21

本文共 4325 字,大约阅读时间需要 14 分钟。

hot3.png

Yocto Project Quick Build

  1. 使用Yocto Project构建典型的image镜像
  2. 配置特定硬件的build

Compatible Linux Distribution

确定编译机器配置满足如下要求:

  • 50G的空闲硬盘
  • 运行有一个支持的Linux 发行版(Fedora, openSUSE, CentOS, Debian, or Ubuntu)。
  • 软件版本要求
    • Git 1.8.3.1 or greater
    • tar 1.27 or greater
    • Python 3.4.0 or greater.

Build Host Packages

在编译机器上安装必要的编译软件,Ubuntu系统可使用如下的命令进行安装:

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \     build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \     xz-utils debianutils iputils-ping libsdl1.2-dev xterm

Use Git to Clone Poky

编译机器配置完成以后,使用git 命令从Poky上下载代码,当前以yocto-2.5为例:

$ git clone git://git.yoctoproject.org/poky     Cloning into 'poky'...     remote: Counting objects: 361782, done.     remote: Compressing objects: 100% (87100/87100), done.     remote: Total 361782 (delta 268619), reused 361439 (delta 268277)     Receiving objects: 100% (361782/361782), 131.94 MiB | 6.88 MiB/s, done.     Resolving deltas: 100% (268619/268619), done.     Checking connectivity... done.     $ git checkout tags/yocto-2.5 -b my-yocto-2.5

Building Your Image

使用如下命令来构建一个image。这个生成过程是从源代码构建一个包含工具链的完整的Linux发行版。

Note:编译过程中会下载一些东西,如果编译机器没有配置代理,那么在编译过程中会报 Git 或 Fetch的问题。

初始化编译环境:Initialize the Build Environment

运行oe-init-build-env脚本在编译机器上构建Yocto项目的编译环境。

$source oe-init-build-env

执行这个脚本的时候,远在源代码路径(the Source Directory)下创建构建目录(the Build Directory)。脚本执行完,当前的工作目录就被设置成了构建目录。然后,在之后的编译过程中,构建目录保存和编译过程中生成的所有文件。

测试本地配置文件:Examine Your Local Configuration File

在设置完编编译环境之后,会在构建目录的conf文件夹下生成一个local.conf文件。默认,是去编译一个qemux86的target,这个target适用于当前的模拟器。这里面所使用的包管理器是RPM包管理器。

Tip

通过使用镜像,可以显著加快编译时间病防止fetch问题。在构建目录的local.conf中加上如下几行,就可以使用镜像。

SSTATE_MIRRORS = "\     file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \     file://.* http://sstate.yoctoproject.org/2.4/PATH;downloadfilename=PATH \n \     file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH \n \     "

这个事例只展示了如何在Yocto项目2.4,2.5和development area中添加sstate path,更详细的介绍参考:

开始编译:Start the Build

继续执行如下的命令,为我们制定的target编译一个OS镜像,这个例子中,我们编译的是:core-iamge-sato

$bitbake core-image-sato

使用QEMU模拟镜像:Simulate Your Image Using QEMU

一旦镜像编译完成,就可以启动QEMU。(QEMU是可一个和Yocto 项目一起的快速模拟器)

$runqemu qemux86

如果像学习更多的QEMU,可以查看( the Yocto Project Development Tasks Manual)如下内容: "".

退出QEMU:Exit QEMU

点击QEMU窗口的关闭按钮或 Ctrl-C就可以退出QEMU。

为特定硬件定制编译:Customizing Your Build for Specific Hardware

一般来说,layers是包含相关指令集和配置的库,他告诉Yocto Project要做什么。将相关的元数据隔离在功能特定的层中有助于模块化开发,并更容易重用层中的元数据。

Note 方便起见,layers通常以“meta-”命名。

按照如下步骤可以新增一个硬件层。

找一个Layer:Find a Layer

Yocto Project的中有很多硬件层.当前以为例。

复制这个Layer:Clone the Layer

通过git命令,将这个git库clone到本地。放在之前poky库的顶层。

$ cd ~/poky     $ git clone https://github.com/kraj/meta-altera.git     Cloning into 'meta-altera'...     remote: Counting objects: 25170, done.     remote: Compressing objects: 100% (350/350), done.     remote: Total 25170 (delta 645), reused 719 (delta 538), pack-reused 24219     Receiving objects: 100% (25170/25170), 41.02 MiB | 1.64 MiB/s, done.     Resolving deltas: 100% (13385/13385), done.     Checking connectivity... done.

这时,这个硬件层,就和其他层一样存在编译机器的Poky库下面了,并且包含了altera硬件所需要的全部元数据。Altera是归Intel所有的。

为特定机器配置编译:Change the Configuration to Build for a Specific Machine

local.conf文件中的“MACHINE”变量,指定了编译生成的机器。这个例子中,“MACHINE”是"cyclones“。现在这个配置在:conf/machine/cyclone5.conf.

将你的层添加到层配置文件中:Add Your Layer to the Layer Configuration File

在编译过程你使用一个层之前,必须将这个层添加到构建路径的bblayers.conf文件中。

使用bitbake-layers add-layer命令将这个layer添加到配置文件中。

$ cd ~/poky/build     $ bitbake-layers add-layer ../meta-altera     NOTE: Starting bitbake server...     Parsing recipes: 100% |##################################################################| Time: 0:00:32     Parsing of 918 .bb files complete (0 cached, 918 parsed). 1401 targets, 123 skipped, 0 masked, 0 errors.

添加layer的详细信息在如下位置:

按照这些步骤完成之后,你当前的Yocto Project开发环境中就添加了meta-altera层,并可以执行cyclone5的编译。

查看Altera的README可以帮助你编译一个cyclone5的image。

创建自己的Layer:Creating Your Own General Layer

也许你有一个应用程序或者你需要隔离一组特定的行为,你可以使用bitbake-layers create-layer来创建自己的通用层。这个工具自动创建一个包含layer.conf配置文件的目录,这个recipes-example子目录里面包含example.bb recipes文件,licensing文件和README。

命令如下:

$cd ~/poky     $bitbake-layers create-layer meta-mylayer     NOTE: Starting bitbake server...     Add your new layer with 'bitbake-layers add-layer meta-mylayer'

更多详细信息可以参考

转载于:https://my.oschina.net/muyusen/blog/1827056

你可能感兴趣的文章
Linux中环境变量文件及配置
查看>>
从0开始学Flutter
查看>>
mysql操作入门基础之对数据库和表的增删改查
查看>>
IIS负载均衡
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
Linux下的CPU性能瓶颈分析案例
查看>>
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>
【Android】 TextView设置个别字体样式
查看>>
python svn
查看>>
raise语句
查看>>
sequence2(高精度dp)
查看>>
ABP实战--集成Ladp/AD认证
查看>>
存储过程
查看>>
phpcms v9栏目列表调用每一篇文章内容方法
查看>>
python 自定义信号处理器
查看>>
luov之SMTP报错详解
查看>>
软件概要设计做什么,怎么做
查看>>
dwr
查看>>
java的特殊符号
查看>>