2设置使用 Yocto 项目
目录
2.2.3设置使用适用于 Linux 的 Windows 子系统 (WSLv2)
本章提供有关如何准备使用 Yocto 项目的指导。您可以了解如何创建团队环境以使用 Yocto 项目进行开发、如何设置构建主机、如何定位 Yocto 项目源存储库以及如何创建本地 Git 存储库。
2.1创建团队开发环境
您可能无法立即清楚如何在团队开发环境中使用 Yocto 项目,或者如何为大型开发团队扩展它。您可以使 Yocto 项目适应许多不同的用例和场景;但是,如果您尝试创建有效扩展的工作设置,这种灵活性可能会导致困难。
为帮助您了解如何设置此类环境,本节提供了一个过程,其中提供了可帮助您获得所需结果的信息。该程序是高级别的,展示了该项目的一些最成功的经验、实践、解决方案和过去证明行之有效的可用技术;但是,请记住,这里的过程只是一个起点。您可以构建这些步骤并自定义程序以适应任何特定的工作环境和实践集。
-
确定谁将开发:您首先需要了解谁将执行与 Yocto 项目相关的任何工作并确定他们的角色。做出此决定对于完成后续步骤至关重要,这些步骤将您的设备组装在一起并设置您的开发环境的硬件拓扑。
以下是可能的角色:
-
应用程序开发人员:这种类型的开发人员在现有软件堆栈之上进行应用程序级别的工作。
-
核心系统开发人员:这种类型的开发人员处理操作系统映像本身的内容。
-
构建工程师:这种类型的开发人员管理 Autobuilder 和发布。根据环境的具体情况,并非所有情况都可能需要构建工程师。
-
测试工程师:这类开发人员创建和管理用于确保所有应用程序和核心系统开发符合所需质量标准的自动化测试。
-
-
收集硬件:根据团队的规模和组成,收集硬件。理想情况下,任何开发、构建或测试工程师都使用运行受支持的 Linux 发行版的系统。通常,这些系统应该是高性能的(例如,具有 24 GB RAM 和大量磁盘空间的双六核 Xeon)。您可以通过让任何用于测试或运行 Autobuilder 的机器尽可能保持高性能来帮助确保效率。
注意
如果有足够的处理能力,您还可以考虑构建 Yocto Project 开发容器以在 Docker 下运行,这将在后面介绍。
-
了解环境的硬件拓扑:一旦了解了所涉及的硬件和团队的组成,您就可以了解开发环境的硬件拓扑。您可以直观地了解机器及其在整个开发环境中的角色。
-
使用 Git 作为您的源代码控制管理器 (SCM):建议将您的 元数据(即配方、配置文件、类等)和您正在开发的任何软件保存在与 OpenEmbedded 构建系统兼容的 SCM 系统的控制下. 在 BitBake 支持的所有 SCM 中,Yocto 项目团队强烈建议使用 Git。Git 是一个易于备份的分布式系统,允许您远程工作,然后连接回基础设施。
注意
有关 BitBake 的信息,请参阅 BitBake 用户手册。
设置 Git 服务和创建像https://git.yoctoproject.org/cgit/cgit.cgi/这样的基础设施相对容易,它基于被调用的服务器软件
gitolite
,cgit
用于生成 Web 界面,让您可以查看存储库。该gitolite
软件使用 SSH 密钥识别用户,并允许对存储库进行基于分支的访问控制,您可以根据需要对其进行控制。 -
设置应用程序开发机器:如前所述,应用程序开发人员正在现有软件堆栈之上创建应用程序。以下是设置用于应用程序开发的机器的一些最佳实践:
-
使用包含软件堆栈本身的预构建工具链。然后,在堆栈顶部开发应用程序代码。这种方法适用于少量相对孤立的应用程序。
-
保持您的交叉开发工具链更新。您可以通过作为新工具链下载或通过包更新机制
opkg
提供更新来实现这一点,用于为现有工具链提供更新。如何以及何时执行此操作的确切机制取决于当地政策。 -
使用本地安装到不同位置的多个工具链以允许跨版本开发。
-
-
设置核心开发机器:如前所述,核心开发人员处理操作系统本身的内容。以下是设置用于开发图像的机器的一些最佳实践:
-
有OpenEmbedded构建系统的开发人员工作站可用,因此开发人员可以运行自己构建和直接重建软件堆栈。
-
尽可能保持核心系统不变,并在核心系统之上分层进行工作。在升级到新版本的核心系统或板级支持包 (BSP) 时,这样做可以为您提供更高水平的可移植性。
-
在特定项目的开发人员之间共享层,并包含定义项目的策略配置。
-
-
设置自动构建器:自动构建器通常是开发环境的核心。在这里,来自各个开发人员的更改汇集在一起并集中测试。基于这个自动化的构建和测试环境,可以做出关于发布的后续决策。Autobuilders 还允许对软件组件和回归识别和跟踪进行“持续集成”样式测试。
有关更多信息和 buildbot 链接,请参阅“ Yocto Project Autobuilder ”。Yocto 项目团队发现此实现在此角色中运行良好。一个公开的例子是 Yocto Project Autobuilders,Yocto 项目团队使用它来测试项目的整体健康状况。
该系统的特点是:
-
提交破坏构建时突出显示。
-
填充一个sstate 缓存,开发人员可以从中提取而不是需要本地构建。
-
允许提交钩子触发器,在提交时触发构建。
-
允许在 QuickEMULator (QEMU) 下触发自动映像启动和测试。
-
支持增量构建测试和从头开始构建。
-
共享输出,允许开发人员测试和历史回归调查。
-
创建可用于发布的输出。
-
允许安排构建,以便可以有效地使用资源。
-
-
设置测试机:使用少量共享的高性能系统进行测试。开发人员可以使用这些系统进行更广泛、更广泛的测试,同时继续使用他们的主要开发系统进行本地开发。
-
文档政策和变更流程: Yocto 项目使用分层结构和拉模型。有脚本可以创建和发送拉取请求(即
create-pull-request
和send-pull-request
)。该模型与其他开源项目一致,其中维护者负责项目的特定区域,并且由一个维护者处理最终的“树顶”合并。注意
您还可以使用更集体的推送模型。该
gitolite
软件很容易支持推和拉模型。与任何开发环境一样,重要的是记录所使用的策略以及任何主要项目指南,以便每个人都能理解它们。拥有结构良好的提交消息也是一个好主意,这通常是项目指南的一部分。当回顾过去并试图理解做出更改的原因时,良好的提交消息是必不可少的。
如果您发现项目的核心层需要更改,则值得尽快与社区分享。很有可能,如果您发现需要进行更改,社区中的其他人也需要更改。
-
开发环境摘要:除了前面的步骤,以下是 Yocto 项目开发环境中的最佳实践:
-
使用
-