Yocto Project开发(二):快速构建

这篇简短的文档将引导您完成使用Yocto Project进行典型镜像构建的过程。你将使用Yocto Project构建一个名为Poky的参考嵌入式操作系统。

构建主机配置

构建主机要符合如下要求:

  • 50 GB的磁盘空间
  • 运行一个主流的Linux发行版(Fedora, openSUSE, CentOS, 或者 Ubuntu),我们这里运行Ubuntu 16.04
  • Git 1.8.3.1或者更高版本
  • tar 1.27或者更高版本
  • Python 3.4.0或者更高版本

另外还需要按照如下软件包:

 $ 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

使用Git下载Poky

使用下面的命令克隆Poky仓库

     $ git clone git://git.yoctoproject.org/poky
     Cloning into 'poky'...
     remote: Counting objects: 428632, done.
     remote: Compressing objects: 100% (101203/101203), done.
     remote: Total 428632 (delta 320463), reused 428532 (delta 320363)
     Receiving objects: 100% (428632/428632), 153.01 MiB | 12.40 MiB/s, done.
     Resolving deltas: 100% (320463/320463), done.
     Checking connectivity... done.

进入poky目录,看一下所有的tags

$ cd poky
$ git fetch --tags
$ git tag
1.1_M1.final
1.1_M1.rc1
.
.
.
yocto-2.5.2
yocto-2.6
yocto-2.6.1
yocto_1.5_M5.rc8

基于yocto-2.6.1版本创建分支:

 $ git checkout tags/yocto-2.6.1 -b my-yocto-2.6.1
Switched to a new branch 'my-yocto-2.6.1'

构建镜像

使用以下步骤构建镜像,构建过程创建整个Linux发行版,包括工具链。

  1. 初始化构建环境:在poky目录中,运行 oe-init-build-env 环境设置脚本以在构建主机上定义Yocto Project的构建环境。
$ cd ~/poky
$ source oe-init-build-env 

### Shell environment set up for builds. ###

You can now run 'bitbake '

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'

除此之外,该脚本还创建了 构建目录build,它位于源目录poky中。脚本运行后,您当前的工作目录将设置为构建目录。稍后,当构建完成时,构建目录包含构建期间创建的所有文件。

  1. 检查本地配置文件:在新设置的构建环境里面,该脚本增加了一个conf并且把一个名为local.conf的配置文件放在里面,他是构建环境的主要配置文件。
  2. 启动构建:继续使用以下命令为目标构建操作系统镜像,在此示例中使用core-image-sato
$ bitbake core-image-sato
  1. 使用QEMU模拟镜像:构建此特定镜像后,您可以启动QEMU,它是Yocto项目附带的Quick EMUlator
$ runqemu qemux86
  1. 退出QEMU: 通过单击关闭图标或键入Ctrl-C退出QEMU

为特定硬件定制化构建

到目前为止,我们只是快速构建一个仅适用于仿真的镜像。本节介绍如何通过在Yocto Project开发环境中添加硬件层来自定义特定硬件的构建。

通常,图层(layer)是包含相关指令集和配置的存储库,这些指令和配置告诉Yocto Project要执行的操作。将相关元数据隔离到功能特定的层中有助于模块化开发,并且更容易重用层元数据。

注意
按照惯例,图层名称以字符串“meta-”开头。

请按照以下步骤添加硬件层:

  • 查找图层:Yocto项目源存储库有许多硬件层。此示例添加了 meta-altera 硬件层。
  • 克隆图层: 使用Git在您的计算机上制作图层的本地副本。
$ cd ~/poky
$ git clone https://github.com/kraj/meta-altera.git
Cloning into 'meta-altera'...
remote: Enumerating objects: 92, done.
remote: Counting objects: 100% (92/92), done.
remote: Compressing objects: 100% (62/62), done.
remote: Total 1225 (delta 48), reused 56 (delta 23), pack-reused 1133
Receiving objects: 100% (1225/1225), 170.46 KiB | 0 bytes/s, done.
Resolving deltas: 100% (576/576), done.
Checking connectivity... done.
  • 将配置更改为特定硬件平台的构建:local.conf文件中的MACHINE变量指定构建的硬件平台,将MACHINE变量设置为"cyclone5",使用的配置是:https://github.com/kraj/meta-altera/blob/master/conf/machine/cyclone5.conf.

  • 将图层添加到图层配置文件: 在使用图层之前,必须将其添加到bblayers.conf文件中,该文件位于构建目录的conf目录中。使用bitbake-layers add-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.

完成这些步骤后,meta-altera层已添加 到Yocto Project开发环境中,可以查看bblayers.conf文件查看:

POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/h310588/yocto_project/poky/meta \
  /home/h310588/yocto_project/poky/meta-poky \
  /home/h310588/yocto_project/poky/meta-yocto-bsp \
  /home/h310588/yocto_project/poky/meta-altera \
  "

创建自己的通用图层

您可以使用该bitbake-layers create-layer命令创建自己的常规图层 。

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

该命令自动创建了如下图层目录结构:

$ tree meta-mylayer 
meta-mylayer
├── conf
│   └── layer.conf
├── COPYING.MIT
├── README
└── recipes-example
    └── example
        └── example_0.1.bb

3 directories, 4 files

参考链接:Yocto Project Quick Build

你可能感兴趣的:(Yocto)