Yocto(二)-构建一个qemu版的Linux发行版

1. 发行版的定制流程

1.1 开发人员指定体系结构,策略,补丁和配置详细信息;
1.2 构建系统从指定位置获取并下载源代码。构建系统支持标准方法,如tarball或源代码存储库系统,如Git;
1.3 下载源代码后,构建系统将源提取到应用修补程序的本地工作区,并运行配置和编译软件的常用步骤;
1.4 然后,构建系统将软件安装到临时暂存区域,在该区域中,您选择的二进制包格式(DEB,RPM或IPK)用于汇总软件;
1.5 在整个构建过程中运行不同的QA和健全性检查;
1.6 创建二进制文件后,构建系统会生成二进制包源,用于创建最终的根文件映像;
1.7 构建系统生成文件系统映像和用于并行应用程序开发的自定义可扩展SDK(eSDSK)。

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. 执行构建脚本

构建脚本会在build/conf目录下生成默认用户配置文件,包含local.conf和bblayers.conf

source poky/oe-init-build-env ./poky/build/    该脚本会设置yocto的编译环境,设置并生成默认输出目录build
source oe-init-build-env			           这样在poky/路径下直接执行脚本会报错,原因我也不清楚

5. 修改local.conf文件进行配置

DL_DIR、SSTATE_DIR、TMP_DIR这三个目录请存放在和构建项目Build同级别的目录,因为后期新建的其它工程可共享这些目录,加快编译速度.

路径:conf/local.conf
#目标机器的选择
 MACHINE ??= "qemux86-64"
 #发行版
 DISTRO ?= "poky"
 #指定OpenEmbedded构建系统在打包数据时使用的程序包管理器
 PACKAGE_CLASSES ?= 'package_rpm'
 ​EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
 ​USER_CLASSES ?= "buildstats image-mklibs image-prelink"
 ​PATCHRESOLVE = "noop"
 #构建时,启用线程个数。
 BB_NUMBER_THREADS = "4"
 .........
 #源下载被存放的位置(注意此时该目录在BUILD目录下,建议把该目录放到和build/同级目录下)
 #DL_DIR ?= "${TOPDIR}/downloads/"
 DL_DIR ?= "/home/xxx/···/downloads/"
 #共享缓存目录(注意此时该目录在BUILD目录下,建议把该目录放到和build/同级目录下)
 #SSTATE_DIR ?= "${TOPDIR}/sstate_cache/"
 SSTATE_DIR ?= "/home/xxx/···/sstate_cache/"
 #构建输出目录
 #TMP_DIR ?= "${TOPDIR}/tmp/"
 TMP_DIR ?= "/home/xxx/···/tmp/"
 CONF_VERSION = "1"

6. bblayers.conf文件

bblayers.conf文件告诉BitBake在构建过程中要使用哪些层。默认情况下,此文件中仅列出的层包括构建系统所需的层。所以,您必须手动添加已创建的所有自定义图层。bblayers.conf的内容如下:

#build/conf/bblayers.conf文件发生变化后,变量POKY_BBLAYERS_CONF_VERSION的数字会随着增加。 
POKY_BBLAYERS_CONF_VERSION = "2"
​BBPATH = "${TOPDIR}"
BBFILES ?= ""
​BBLAYERS ?= " \
/home/hann/poky/meta \
/home/hann/poky/meta-poky \
/home/hann/poky/meta-yocto-bsp \
"

7. 机器配置文件

通过 tree命令查看 Yocto项目板级支持包meta-yocto-bsp层的目录结构,可以看出在meta-yocto-bsp/conf/machine中存放机器配置文件*.conf。

~/yocto/poky/meta-yocto-bsp$ tree

8. 层配置文件

为特定发行版构建的镜像或SDK提供顶级或常规策略。例如,在Poky中,发行层是 meta-poky层。在发行版层中是一个conf/distro包含发行版配置文件的目录,如poky.conf ,其中包含用于Poky发行版的 许多策略配置。

 

9. 编译

build/目录下执行bitbake core-image-minimal

 

10. 运行

runqemu qemux86

 

 

你可能感兴趣的:(Android,yocto,android)