这篇简短的文档将引导您完成使用Yocto Project
进行典型镜像构建的过程。你将使用Yocto Project
构建一个名为Poky
的参考嵌入式操作系统。
构建主机要符合如下要求:
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发行版,包括工具链。
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
中。脚本运行后,您当前的工作目录将设置为构建目录。稍后,当构建完成时,构建目录包含构建期间创建的所有文件。
conf
并且把一个名为local.conf
的配置文件放在里面,他是构建环境的主要配置文件。core-image-sato
:$ bitbake core-image-sato
QEMU
模拟镜像:构建此特定镜像后,您可以启动QEMU
,它是Yocto
项目附带的Quick EMUlator
:$ runqemu qemux86
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