Yocto2.4.2项目搭建
本文档适用于centos7系统
该项目支持的系统
ubuntu
Ubuntu 14.04 (LTS)、Ubuntu 14.10、Ubuntu 15.04、Ubuntu 15.10Ubuntu 16.04
Fedora
Fedora release 22Fedora release 23、Fedora release 24
CentOS
Centos7.x
Debian
Debian GNU/Linux 8.x (Jessie)、Debian GNU/Linux 9.x (Stretch)
openSUSE
openSUSE 13.2、openSUSE 42.1
依赖软件要求
Git>=1.8.3.1
、tar>=1.27
、Python>=3.4.0
搭建项目之前需要安装的软件点击查询具体信息
Ubuntu and Debian
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
Fedora
sudo dnf install gawk make wget tar bzip2 gzip python3 unzip perl patch \
diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \
ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue perl-bignum socat \
python3-pexpect findutils which file cpio python python3-pip xz SDL-devel xterm
OpenSUSE
sudo zypper install python gcc gcc-c++ git chrpath make wget python-xml \
diffstat makeinfo python-curses patch socat python3 python3-curses tar python3-pip \
python3-pexpect xz which libSDL-devel xterm
CentOS
$ sudo yum install -y epel-release
$ sudo yum makecache
$ sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch \
diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath socat \
perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python34-pip xz \
which SDL-devel xterm
下载poky项目,如下所示:
git clone git://git.yoctoproject.org/poky
Yocto项目搭建
获取对应的分支
cd ~/poky
git checkout -b rocko origin/rocko
初始化编译环境
用法如下
source oe-init-build-env [your_build_path]
其中your_build_path
设置的编译路径,默认为”~/poky/build”
执行之后的输出结果如下所示:
You can now run 'bitbake '
Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
根据提示你可以选址编译对应的对象,点击查询不同镜像的介绍
编辑local.conf文件以及校验文件的正确性
开始编译
命令如下所示:
bitbake core-image-sato
点击查看更多bitbake的用法
用QEMU模拟镜像
使用命令如下所示:
runqemu qemux86
点击查看更多QEMU的用法
退出QEMU
Ctrl-C
或者点击退出图标Yocto项目搭建
创建本地的meta-intel
仓库
进入本地poky目录
cd ~/poky
克隆远程仓库在poky目录下
git clone git://git.yoctoproject.org/meta-intel
进入meta-intel
目录,并且检出8.0-rocko-2.4.2
分支,如下所示:
cd ~/poky/meta-intel
git checkout tags/8.0-rocko-2.4.2 -b meta-intel-rocko-2.4.2
初始化编译环境
用法如下
source oe-init-build-env [your_build_path]
其中your_build_path
设置的编译路径,默认为”~/poky/build”
执行之后的输出结果如下所示:
You can now run 'bitbake '
Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
根据提示你可以选址编译对应的对象,点击查询不同镜像的介绍
配置编译信息,需要编译bblayer.conf
以及local.conf
文件,这两个文件都在build/conf中
添加layer信息
cd ~/poky/build
bitbake-layers add-layer "~/poky/meta-intel"
编辑local.conf文件
MACHINE = "intel-corei7-64"
选择需要编译的基础镜像
bitbake core-image-base
tmp/deploy/images/intel-corei7-64/core-image-base-intel-corei7-64.wic
写入镜像
你可以使用dd
工具将镜像写入到可引导媒体中(如USB、SATA驱动器、SD card等),具体命令如下:
sudo dd if=tmp/deploy/images/intel-corei7-64/core-image-base-intel-corei7-64.wic of=TARGET_DEVICE
其中TARGET_DEVICE
是对应的设备节点(如:/etc/sdc
或者/dev/mmcblk0
)
硬件启动
可以将可引导媒体插入到嵌入式开发板(MinnowBoard Turbot)中并且启动。开发板会自动检测可引导媒体并且加载到引导程序安装系统
如果开发板没有自动引导,可以从EFI shell中引导,具体引导信息如下:
Shell> connect -r
Shell> map -r
Shell> fs0:
Shell> bootx64
Shell> connect -r
Shell> map -r
Shell> fs0:
Shell> bootia32
这里会有更详细的介绍开发流程。下面这张图更好的说明了了在开发中的流程。
通过配置会告诉BitBake 对应的构建镜像中在哪里存储下载的源码以及其他的构建信息的体系结构。
下图显示了Yocto项目开发环境的“User configuration”的结构:
BitBake需要一些基本的*.conf
配置文件来完成编译
meta-poky
中包含了Poky的conf路径的配置文件。这些配置文件是最基本的配置。
当你是环境脚本生效的时候,就会创建编译目录(不存在的则创建,存在就不创建)。BitBake在整个编译期间都会使用这个目录来执行它所有的任务。在编译目录中,会有一个conf
目录,其中会有默认的local.conf
和bblayers.conf
配置文件。
根据脚本来源的不同,调用不同的子脚本以建立构建目录(Yocto或OpenEmbedded)。具体地说,poky目录中的脚本script/oe-setup-builddir设置了构建目录,并为Yocto项目开发环境的配置文件提供了目录。
配置信息可以在conf/local.conf、conf/site.conf、conf/auto/conf文件中
bblayers.conf
site.conf和auto.conf
这两个文件在执行环境初始化的时候,不会创建,需要自己创建
site.conf
可以用于配置多编译路径
auto.cof
功能跟local.conf一样的
执行顺序
点击查看对应的配置文件信息
Policy Configuration:
Machine Configuration: BSP
layer提供machine配置
Metadata:Software layer 包含需要应用的recip文件, patches, and append files.
下面这张如展示了 Metadata, Machine Configuration, and Policy Configuration
所有的layer都有相似的结构,包含许可文件,README文件,配置目录以及recipe 目录
名称 | 示例 | 描述 |
---|---|---|
MACHINE | MACHINE ?= “qemux86” | 选择目标机器更多介绍 |
DL_DIR | 下载目录 | |
SSTATE_DIR | Shared State Directory | |
CORE_IMAGE_EXTRA_INSTALL | CORE_IMAGE_EXTRA_INSTALL += “openssh” | 需要安装的软件 |
EXTRA_IMAGE_FEATURES | EXTRA_IMAGE_FEATURES ?= “debug-tweaks” | 安装软件 |
IMAGE_INSTALL_append | IMAGE_INSTALL_append = ” package-name” | 安装软件 |
TMPDIR | TMPDIR = “${TOPDIR}/tmp” | 构建目录中使用的输出目录 |
PACKAGE_CLASSES | PACKAGE_CLASSES ?= “package_rpm” | OE构建使用哪种打包文件 |
USER_CLASSES | USER_CLASSES ?= “buildstats image-mklibs image-prelink” | |
OE_TERMINAL | OE_TERMINAL = “auto” | 系统终端选择,包括: auto、gnome、xfce、rxvt 、screen、konsole、none |
PATCHRESOLVE | PATCHRESOLVE = “noop” | |
BB_DISKMON_DIRS | BB_DISKMON_DIRS = “ABORT, TMPDIR,1G,100KWARN, T M P D I R , 1 G , 100 K W A R N , {SSTATE_DIR},1G,100K” | 监控硬盘空间以及inodes |
名称 | 描述 |
---|---|
BB_NUMBER_THREADS | 在同一时间BitBake最大任务数。默认为4 |
PARALLEL_MAKE | 执行do_cimpile 任务(完成并发编译)的最大并发 |
PARALLEL_MAKEINST | 执行do_install 任务的最大并发 |
BB_NUMBER_PARSE_THREADS | 设置BitBake使用的线程数 |
镜像名称 | 镜像介绍 |
---|---|
build-appliance-image | 一个示例虚拟机,包含使用构建系统以及构建系统本身运行构建所需的所有片段。 您可以使用VMware Player或VMware Workstation启动并运行镜像 |
core-image-base | 仅支持控制台的镜像,完全支持目标设备硬件 |
core-image-clutter | 支持基于Open GL的工具包Clutter的图像,支持开发丰富和动画的图形用户界面。 |
core-image-full-cmdline | 仅安装了控制台的镜像,其中安装了更多全功能的Linux系统功能。 |
core-image-lsb | 符合Linux标准基础(LSB)规范的图像。 |
core-image-lsb-dev | 适合开发的core-image-lsb镜像 |
core-image-lsb-sdk | 一个core-image-lsb镜像,它包含了cross-toolchain中的所有内容,同时还包含开发头文件和库以形成一个完整的独立SDK。 |
core-image-minimal | 一个小镜像,只是允许设备启动。 |
core-image-minimal-dev | 适合进行开发的core-image-minimal镜像 |
core-image-minimal-initramfs | 它具有最小的基于RAM的初始根文件系统(initramfs)作为内核的一部分,这使得系统可以更高效地找到第一个“init”程序 |
core-image-minimal-mtdutils | 支持Minimal MTD实用程序的core-image-minimal镜像,可让用户与内核中的MTD子系统进行交互,以在闪存设备上执行操作。 |
core-image-rt | |
core-image-rt-sdk | |
core-image-sato | 镜像支持sato,可与移动设备配合使用的移动环境和视觉风格。 该图像支持带有Sato主题的X11以及诸如终端,编辑器,文件管理器,媒体播放器等应用程序。 |
core-image-sato-dev | 适合进行开发的core-image-sato镜像 |
core-image-sato-sdk | 包含cross-toolchain中所有内容的core-image-sato镜像。 该映像还包含开发头文件和库,以形成一个完整的独立SDK,并适合使用目标进行开发。 |
core-image-testmaster | 设计用于自动运行时测试的“master”映像。 提供部署到单独分区的“know good”映像,以便引导其进入并使用它来部署要测试的第二个映像 |
core-image-testmaster-initramfs | 使用core-image-testmaster映像作为基于RAM的初始根文件系统(initramfs)镜像。 |
core-image-weston | 带有终端的基本的 Wayland镜像。该镜像提供Wayland协议库和参考Weston合成器 |
core-image-x11 | 带有终端的非常基础的X11镜像 |
Layer就是针对不同的层或者不同的模块创建对应的配置,如:针对machine以及GUI环境可以配置对应的信息。可以在meta, meta-skeleton, meta-selftest, meta-poky, and meta-yocto-bsp
中查看不同的layer。
创建自己的Layer
可以通过项目中的脚本去创建,可以使用yocto-bsp脚本创建一个BSP layer。查看
方式1
查看是否存在Layer
在创建一个新的layer的时候,应该确认还没有创建一个图层包含你所需要的metadata
创建一个目录
为新的layer创建目录,例如: meta-mylayer、meta-GUI_xyz、meta-mymachine
创建layer配置文件
在新创建的layer文件夹中,创建
conf/layer.conf
文件,你可以直接复制一个存在的layer的conf
目录,在对其修改
使用创建好的layer
将layer的路径添加到构建路径(build Directory)中的
conf/bblayers.conf
文件,如下所示:
BBLAYERS ?= " \
/home/dlm/workspace/test/poky/meta \
/home/dlm/workspace/test/poky/meta-poky \
/home/dlm/workspace/test/poky/meta-yocto-bsp \
"
方式2
利用bitbake-layer
命令创建layer
bitbake-layers create-layer your_layer_name
将创建好的layer添加到配置中(bblayers.conf)
bitbake-layers add-layer your_layer_name
获取更多layer的方式