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

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本教程从网上收集而来 目标 展示如何在一个目标系统上安装 Linux。这不是一个预先构建Linux 发行版,而是您从头构建发行版。虽然在不同目标系统上安装 Linux 的过程在细节上有差异,但总的原则是相同的。 本教程帮助您构建(如果您有一个合适的目标系统)一个有效的 Linux 系统,您可以在这个系统上使用 shell 提示符。 关于本教程 本教程首先讨论交叉编译问题,然后讨论 Linux 系统的组成部分,以及它们是如何结合在一起的。本教程还谈到了构建和安装,以及目标系统 的配置。 本教程讨论一个特定的目标 Technologic Systems TS-7800,它使用自己的默认启动和 bring-up 行为;其他系统将使用其他的机制,本文不详细 地讨论每种可能的启动装载器。 本教程针对对目标嵌入式系统感兴趣,或者想学习更多关于 Linux 系统的开发人员。他们将从本教程获益不浅。 本教程使用的主机环境是 Ubuntu,但其他系统也可以。本教程假定用户基本熟悉 UNIX® 或 Linux 系统管理,并且有主机系统的根访问权限。 本教程假定您 shell 是 Bourne shell 的变体;如果您使用的是 C shell 变体,那么提示符可能会不同,需要使用不同的命令来设置环境变量。 对于交叉编译(在嵌入式系统中比较有用),我使用了 2008 年 5 月发行的 crosstool-ng version 1.1.0。您可以从发行站点下载它(参见 参考 资料)。后面有关于 安装和配置它 的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值