本文主要是介绍yocto系列之针对rk3588平台构建一个基础镜像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
回顾
在前面的相关文章中,我们讨论了Yocto的基础知识以及主机的设置,随后进行了一个基本的镜像构建。这里是前面文章的相关链接:
Yocto: 第1部分 - yocto系列之yocto是个什么东东
https://mp.csdn.net/mp_blog/creation/editor/136742286
Yocto: 第2部分 - yocto系列之配置ubuntu主机
https://mp.csdn.net/mp_blog/creation/editor/136742286
Yocto: 第3部分 - yocto系列之构建与运行第一个镜像
https://mp.csdn.net/mp_blog/creation/editor/136760112
在本文中,我们将看到如何将第3篇文章中完成的工作推进,构建适用于RK3588平台的测试镜像。
配置构建环境
sun@sun-vm:~/work$ mkdir yocto
sun@sun-vm:~/work$ cd yocto/
git clone https://github.com/yoctoproject/poky -b kirkstone
假设我们的构建目录是rk3588-build
在当前目录下执行source poky/oe-init-build-env rk3588-build
执行完上述指令直接切换到目录rk3588-build目录下:
当我们为QEMU构建镜像时,我们无需进行任何层配置,因为poky本身已经包含了特定QEMU所需的配方。
根据 meta-rockchip 层的 README.md文档,我们至少需要 meta-openembedded 层,可能还需要其他一些,具体取决于镜像中所需的功能。meta-openembedded 中的recipes支持嵌入式架构的构建,例如ARM、MIPS等。
对于我们的构建,我们还将添加其他一些层,这些层对于网络、Python、多媒体等功能是必要的。我们将首先下载这些层,然后添加到我们的构建配置中。
下载必要的layers
现在我们将逐一下载必要的layers。将 meta-xx 层放在与 poky 目录相同的目录层次中是一个推荐的做法,这样的目录结构有助于多个构建目录可以共享这些层。
下载 Open-Embedded,并切换到kirkstone分支
git clone git://git.openembedded.org/meta-openembedded.git -b kirkstone
现在让我们下载 meta-rockchip 层的源代码。该层包含了构建rockchip系列开发板的基本镜像所需的所有配方。我们在第一部分中讨论的分层概念在这里得到了应用。meta-rockchip 层将包含适用于内核、驱动程序、配置等的相应recipes,这些recipes将覆盖 poky 和 meta-openembedded 中的相应的recipes,例如 Linux 内核配置。
git clone https://github.com/JeffyCN/meta-rockchip.git -b kirkstone
现在我们的目录层次是这样:
可以通过编辑活动构建目录中的 conf/bblayers.conf 文件手动修改 bitbake 层配置。然而,这种方法容易出现语法错误,可能导致由于解析器解析失败而导致构建失败。
最好的方法是使用方便的 bitbake-layers 命令,将必要的层添加到构建中,在我们的 yocto 构建目录中执行以下命令:
bitbake-layers add-layer /home/sun/work/yocto/meta-openembedded/meta-oe
bitbake-layers add-layer /home/sun/work/yocto/meta-openembedded/meta-python
bitbake-layers add-layer /home/sun/work/yocto/meta-openembedded/meta-networking
bitbake-layers add-layer /home/sun/work/yocto/meta-openembedded/meta-multimedia
bitbake-layers add-layer /home/sun/work/yocto/meta-rockchip/
现在,可以通过执行以下命令来检查层配置是否已更新。
bitbake-layers show-layers
选择machine与镜像
选择machine
meta-rockchip 层支持的machine名称可以在 meta-rockchip/conf/machine 目录中找到。每个 .conf 文件都是machine配置文件,machine的名称就是文件的名称(不包括 .conf 文件扩展名)。可以通过从 yocto 目录执行以下命令来列出 meta-rockchip 中支持的machine列表:
在本文对应的构建示例中我们选择rockchip-rk3588-evb
选择镜像
要查看可以构建的镜像,请查看 meta-rockchip/recipess-core/images 目录的内容。如若此目录中没有相应的.bb文件,再查看poky/meta/recipess-core/images/目录。
我们可以看到很多.bb文件,抛开.bb扩展名的文件名就是可以构建的镜像名称。
配置machine变量
进入到rk3588构建目录
sun@sun-vm:~/work/yocto$ source poky/oe-init-build-env rk3588-build/
编辑conf/local.conf 文件
vim conf/local.conf
资源获取
资源获取中遇到的问题:
Q1
A1 由于网络问题导致, 重复fetch几遍。
镜像编译
bitbake core-image-minimal
编译过程输出如下:
这个过程,根据个人的计算机资源与网络情况而不同, 大体来讲,这个时间不会短, 请耐心等待。
这篇关于yocto系列之针对rk3588平台构建一个基础镜像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!