一、主机环境
Ubuntu 16.04 64位,Windows主机上的VMware14虚拟机。
目标板:ZC702
二、下载安装Yocto
1、虚拟机基本条件
- 最少 4-6 GB 内存
- 最新版的 Ubuntu 系统(本文使用了 16.04 LTS)
- 磁盘剩余空间至少 60-80 GB
2、安装Yocto所需依赖
执行如下命令:
apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop
3、下载安装Poky(note:切换到个人用户下执行,否则需要各种改权限,很麻烦!!!)
执行如下命令:
git clone -b morty git://git.yoctoproject.org/poky.git
4、下载完成之后在Poky文件夹目录下由如下内容:
下面我们来简单说以下这些目录里面都是些什么东西。
三、Poky目录结构介绍
1、Bitbake目录:
此目录包含BitBake的副本,以方便使用。该副本通常与BitBake项目中当前稳定的BitBake版本匹配。BitBake是一种元数据(Metadata)解释器,它读取Yocto项目元数据并运行由该数据定义的任务。失败通常来自元数据,而不是来自BitBake本身。因此,大多数用户不需要担心BitBake。
运行该bitbake
命令时,将bitbake/bin/
启动驻留在目录中的主BitBake可执行文件 。获取环境设置脚本(即 oe-init-build-env
)将scripts
和 bitbake/bin
目录(按此顺序)放入shell的PATH
环境变量中。执行bitbake其实就是执行bitbake/bin下的东西。
2、build目录
此目录是构建输出目录,输出的内核镜像、根文件系统等通过bitbake编译出来的东西都会在次目录下,此目录在下载完poky之后刚开始是没有的,在编译之前需要初始化环境变量(即 source oe-init-build-env),如果不指定输出目录,则系统会自动生成一个build目录,在 系统默认生成的目录下会有conf配置目录,在conf/local.conf中配置机型信息,在conf/bblayers.conf中写入编译所需要的层的路径,这些内容在上一篇博客中有所介绍,就不多说了。
3、documentation目录
此目录包含Yocto项目文档的源代码以及手册的PDF和HTML版本的模板和工具。每个手册都包含在子文件夹中。
4、meta目录
该目录包含OpenEmbedded-Core元数据。该目录包含模拟目标(qemux86
, qemuarm
等等)的配方,公共类和机器配置。
5、meta-poky目录
poky发行版本的配置数据(这个具体是些什么内容,手册上还没翻到,之后再补充吧)。比如:构建系统使用模板配置文件,默认情况下,在meta-poky/conf
。
6、meta-yocto-bsp目录
yocto工程包含的一些参考的BSP配置,通常厂商自己会增加自己的bsp目录(比如meta-xilinx)。
7、meta-selftest目录
OE自测的recipes和append 文件,此目录添加其他配方并附加OpenEmbedded selftests使用的文件,以验证构建系统的行为。
bblayers.conf
除非要运行自我测试,否则 不必将此图层添加到 文件中。
8、meta-skeleton目录
该目录包含BSP和内核开发的模板配方。
9、scripts目录
脚本文件,用来提供一些特性的功能。该路径会被添加到环境变量中。
10、oe-init-build-env
此脚本设置OpenEmbedded构建环境。source
使用shell中的命令运行此脚本会PATH
根据当前工作目录更改并设置其他核心BitBake变量。需要在运行BitBake命令之前运行环境设置脚本。该脚本使用scripts
目录中的其他脚本 来完成大部分工作。
运行此脚本时,将设置Yocto Project环境, 创建输出目录,工作目录将成为Build Directory,并显示常见BitBake目标列表。比如这样
该脚本从conf-notes.txt
文件中获取其默认的公共目标列表,meta-poky
。如果有自定义poky,则可以修改此配置文件以包含自己的分发目标。详细信息,可以参阅Yocto项目开发任务手册中的“ 创建自定义模板配置目录 ”部分。
默认情况下,在没有BuildDirectory参数的情况下运行此脚本会build
在当前工作目录中创建该目录。如果source
在脚本时提供Build Directory参数 ,则指示OpenEmbedded构建系统创建您选择的构建目录。例如,以下命令创建一个名为mybuilds
“ 源目录”之外的 构建目录:
<span style="color:#333333"> $ source oe-init-build-env~ / mybuilds
</span>
OpenEmbedded构建系统使用模板配置文件,默认情况下,这些 meta-poky/conf
文件位于源目录中的目录中。
四、下载目标板的BSP
在如下地址可以下载到:http://git.yoctoproject.org/cgit/cgit.cgi/
此处我们用到-meta-xilinx,所以我们找到它的下载地址,然后切换到poky目录下执行如下命令:
git clone https : / / github .com / Xilinx / meta - xilinx .git
五、配置(简易发行版基础配置)
1、切换分支(十分重要!!!)
cd poky
git checkout morty
确保meta-Xilinx也要和主目录同一分支
cd meta-xilinx
git checkout morty
2、环境初始化
返回poky目录,首先执行 source oe-init-build-env 命令初始化bitbake的环境,并且生成构建输出目录,下一步就是根据自己的需求修改输出目录中conf中的配置文件。
3、在构建输出目录中修改配置文件(poky/build/conf/)
自动进入〜 / poky / build目录。 告诉bitbake关于新的meta-xilinx层:
将meta-xilinx路径加到bblayer.conf中
屏蔽默认的机型,将以下行添加到conf / local.conf文件中:
MACHINE ?? = "zc702-zynq7"
六、执行编译
执行如下命令行开始编译:
bitbake core-image-minimal
此处第一次编译需要等待几个小时,因为会自动下载安装一些必备的软件包,有时会出现网络连接中断退出的情况,不用担心,再次执行同样的命令,它会接着之前下载的继续下载。