Yocto Project 快速构建
1. 简短的开篇介绍
写这篇文章的目的主要在于让我们能够明晰使用Yocto project构建一个典型镜像的过程.文中将会简单的介绍一下如何对指定的硬件进行一次构建配置.这里我们将使用Yocto project构建它的可移植发行系统Poky.
建议最好使用运行最新Ubuntu Linux发行版的本机Linux系统.Yocto项目与WSLv1(Windows Subsystem For Linux v1)不兼容,它与WSLv2兼容,但没有得到官方支持或验证,如果您仍然决定使用WSL,请升级到WSLv2.
如果需要有关Yocto项目的更多概念或背景信息,请查看Yocto项目概述和概念手册.
2. 可用的Linux配置
确保你的主机满足下列的配置要求:
- 50G或者更多的剩余磁盘空间
- Linux发行版系统(Fedora, openSUSE, CentOS, Debian, or Ubuntu等).
- Git 1.8.3.1 or greater
- tar 1.28 or greater
- Python 3.5.0 or greater
- gcc 5.0 or greater
如果你的主机有任何不满足以上版本需求的,你都将无法开始接下来的工作,所以请确保你的系统满足这些要求.
3. 构建主机包
必须在构建主机上安装基本主机软件包.以下命令基于Ubuntu发行版安装主机软件包:
$ sudo apt-get install gawk wget git-core diffstat unzip
texinfo gcc-multilib build-essential chrpath socat cpio
python3 python3-pip python3-pexpect xz-utils debianutils
iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev
pylint3 xterm python3-subunit mesa-common-dev
有关所有受支持的Linux发行版上的主机软件包要求,请参阅Yocto项目参考手册中的“构建主机所需的软件包”部分.
4. 使用git工具获取Poky
到这里,你已经在你的主机上完成了基本的环境配置,接下来,你需要复制Poky仓库到主机上,命令如下:
$ git clone git://git.yoctoproject.org/poky
Cloning into 'poky'...
remote: Counting
objects: 432160, done. remote: Compressing objects: 100%
(102056/102056), done. remote: Total 432160 (delta 323116), reused
432037 (delta 323000) Receiving objects: 100% (432160/432160), 153.81 MiB | 8.54 MiB/s, done.
Resolving deltas: 100% (323116/323116), done.
Checking connectivity... done.
拉取完成后,切换到Poky目录,查看标签:
$ cd poky
$ git fetch --tags
$ git tag
1.1_M1.final
1.1_M1.rc1
1.1_M1.rc2
1.1_M2.final
1.1_M2.rc1
.
.
.
yocto-2.6.1
yocto-2.6.2
yocto-2.7
yocto_1.5_M5.rc8
这里我们使用的是yocto-3.2.1版本,所以根据标签把它检出出来:
$ git checkout tags/yocto-3.2.1 -b my-yocto-3.2.1
Switched to a new branch 'my-yocto-3.2.1'
Git checkout命令将会自动创建一个名为my-yocto-3.2.1的本地分支.在Yocto Project yocto-3.2.1发行时,这个分支中可使用的文件与gatesgarth开发分支中的存储库文件完全匹配.
有关访问Yocto Project相关存储库的更多选项和信息,请查看《Yocto Project开发任务手册》中的查找Yocto项目源文件部分.
5. 构建镜像
接下来,按照以下的步骤你将完成镜像构建.构建过程将会根据源码构建一个完整的Linux发行版,包括工具链.
如果你开启了防火墙,并且主机上没有设置代理,在构建过程中获取源代码时可能会遇到一些问题(例如,获取失败或Git失败).
如果不了解代理设置,请查阅本地网络组织资源并获取相关信息.另一个好的开始也可以是检查Web浏览器的设置.最后,也可以在Yocto Project Wiki的[网络代理中工作](https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy)页面上找到更多信息.
5.1 初始化构建环境:在Poky目录下,运行oe-init-build-env环境设置脚本以完成主机上的Yocto Project构建环境的定义.
$ cd ~/poky
$ source oe-init-build-env
.
.
### Shell environment set up for builds. ###
You can now run 'bitbake <target>'
Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
You can also run generated qemu images with a command like 'runqemu qemux86-64'
5.2 检查本地配置文件:当你完成构建环境的设置后,构建目录下的conf子目录中将产生一个local.conf本地配置文件.本次示例中,我们默认使用的是qemux86构建目标,它仅适用于仿真.使用的软件包管理器设置为RPM软件包管理器.
可以使用镜像源显著加快构建速度,并防止获取程序失败,将以下内容添加到Build目录中的local.conf文件中:
SSTATE_MIRRORS = "\
file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \
file://.* http://sstate.yoctoproject.org/3.1.5/PATH;downloadfilename=PATH \n \
file://.* http://sstate.yoctoproject.org/3.2.1/PATH;downloadfilename=PATH \n \
"
5.3 开始构建:使用以下命令为目标机器构建操作系统:
$ bitbake core-image-sato
关于bitbake命令的详细信息,请查看《Yocto项目概述和概念手册》的bitbake章节.
5.4 使用QEMU模拟镜像:生成此特定映像后,可以启动QEMU,它是Yocto Project附带的快速EMUlator:
$ runqemu qemux86-64
如果你想要了解关于QEMU运行相关的内容,请查看《Yocto项目开发任务手册》的使用快速仿真器(QEMU).
5.5 退出QEMU:通过单击shutdown图标或在QEMU的QEMU脚本窗口中键入Ctrl-C退出QEMU.