yocto系列之针对rk3588平台构建一个基础镜像

2024-03-16 14:04

本文主要是介绍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平台构建一个基础镜像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815709

相关文章

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

使用Python和python-pptx构建Markdown到PowerPoint转换器

《使用Python和python-pptx构建Markdown到PowerPoint转换器》在这篇博客中,我们将深入分析一个使用Python开发的应用程序,该程序可以将Markdown文件转换为Pow... 目录引言应用概述代码结构与分析1. 类定义与初始化2. 事件处理3. Markdown 处理4. 转

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应