【Yocto】OpenEmbedded简介

综述

OpenEmbeded是嵌入式Linux的构建框架,它提供了一个可用于交叉编译的方案,通过该方案开发者可以编译出用于嵌入式系统的Linux发行版。

OpenEmbeded解决的痛点有以下的几个:首先是嵌入式系统构建的交叉编译的问题,因为通常我们在x86的环境下做开发,但是目标对应的嵌入式硬件架构却可能是五花八门的;其次是一个可用的Linux系统包含引导模块、内核、文件系统,以及很多必要的应用程序,如果手动编译上述的这些东西(LFS就是一个例子),需要花费很大的力气而且容易出错,而使用OpenEmbeded只需要几个简单的命令即可自动完成整个构建的过程。

使用

在开始之前需要准备编译环境,这里使用Ubuntu 18.04。需要安装一些工具,如下所示,其中有些工具是已经安装了的,不过也没有关系。

sudo apt 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

之后就是下载OpenEmbedded环境(包括各类的配置文件,称为元数据)和bitbake工具:

git clone git://git.openembedded.org/openembedded-core oe-core
cd oe-core
git clone git://git.openembedded.org/bitbake bitbake

这里创建了一个oe-core目录来存放OpenEmbedded环境,并在该目录下增加bitbake工具。由于外网下载困难,这里选择使用另外的一套代码,称为Poky。Poky是基于OpenEmbedded的,它将bitbake和需要的元数据放在了一起,不需要分开下载,且以后介绍的Yocto项目也要用到Poky。Poky的代码可以在gitee上直接下载到,对应的命令:

git clone https://gitee.com/mirrors/poky.git 

代码会下载到poky目录下,之后在该目录下执行环境配置:

source ./oe-init-build-env build

这里的build是执行目录,是可选的,如果不选,也会默认在当前目录下创建一个名为build的目录。执行操作之后显示信息如下(下图跟实际情况稍有出入):

【Yocto】OpenEmbedded简介_第1张图片

从这里可以看到,后续就是通过bitbake进行目标编译了,这里使用的目标是core-image-sato,执行命令如下:

bitbake core-image-sato

之后bitbake会接管后续的所有操作,包括下载、解压、打补丁、配置、编译,生成,等等。该过程及其漫长,跟网络环境和电脑性能有关,下面是过程显示:

【Yocto】OpenEmbedded简介_第2张图片

操作完成之后,显示如下:

【Yocto】OpenEmbedded简介_第3张图片

如果运行结束之后没有报错,就可以通过QEMU来启动创建的镜像,命令如下:

runqemu qemux86-64

这样创建的系统就运行起来了,结果如下:

【Yocto】OpenEmbedded简介_第4张图片

本文到这里结束,这里只是简单介绍OpenEmbedded的下载和使用,后面将详细说明整个流程以及使用到的各种数据和工具。

你可能感兴趣的:(Linux,BMC,linux)