1简介
1.1概述
无论您打算如何使用 Yocto 项目,您都有可能使用 Linux 内核。本手册描述了如何设置构建主机以支持内核开发,介绍内核开发过程,提供有关 Yocto Linux 内核元数据的背景信息,描述您可以使用内核工具执行的常见任务,向您展示如何使用内核元数据需要使用 Yocto 项目内部的内核,并提供有关 Yocto 项目团队如何开发和维护 Yocto Linux 内核 Git 存储库和元数据的见解。
每个 Yocto 项目版本都有一组 Yocto Linux 内核配方,您可以在“Yocto Linux 内核”标题下的Yocto源存储库中查看其 Git 存储库 。发布的新配方从https://www.kernel.org跟踪最新的 Linux 内核上游开发,并介绍新支持的平台。该版本中的先前配方已更新,并支持至少一个额外的 Yocto 项目版本。当它们保持一致时,这些以前的版本会更新以包含来自长期支持计划 (LTSI) 项目的最新版本。您可以在“ Yocto 项目内核开发和维护”部分了解有关 Yocto Linux 内核和 LTSI 的更多信息。
linux-yocto-dev.bb
如果您想使用最新的上游 Yocto Linux 内核开发和内核元数据开发,还包括一个 Yocto Linux 内核开发秘诀 ( )。
注意
有关 Yocto Linux 内核的更多信息,请参阅“ Yocto 项目内核开发和维护”部分。
Yocto 项目还提供了一组强大的内核工具,用于管理 Yocto Linux 内核源和配置数据。您可以使用这些工具进行单个配置更改、应用多个补丁或使用您自己的内核源。
特别是,内核工具允许您生成配置片段,仅指定您必须的内容,仅此而已。配置片段只需要包含CONFIG
Yocto Linux 内核menuconfig
系统提供的最高级别的可见 选项。将此与完整的 Yocto Linux 内核.config
文件进行对比,其中包含所有自动选择的CONFIG
选项。这种效率减少了您的维护工作,并允许您以对您的项目有意义的方式进一步分离您的配置。通用拆分将策略和硬件分开。例如,您所有的内核都可能支持proc
和sys
文件系统,但只有特定的板需要声音、USB 或特定的驱动程序。单独指定这些配置允许您根据需要将它们聚合在一起,但只在一个地方维护它们。类似的逻辑适用于分离源更改。
如果您不维护自己的内核源代码并且只需要对源代码进行最少的更改,则已发布的配方提供了一个经过审查的基础,您可以在此基础上对更改进行分层。这样做可以让您从 Yocto 项目开发期间执行的持续内核集成和测试中受益。
相反,如果您有一个非常具体的 Linux 内核源代码树并且无法与官方 Yocto Linux 内核配方之一保持一致,那么您可以通过自己的内核源代码使用 Yocto Project Linux 内核工具。
本手册的其余部分提供了完成特定 Linux 内核开发任务的说明。这些说明假设您熟悉BitBake配方和基本的开源开发工具。理解这些概念将有助于使用内核配方的过程。如果您发现需要一些额外的背景知识,请务必查看并理解以下文档:
Yocto 项目快速构建文档。
devtool 工作流程 如 Yocto 项目应用程序开发和可扩展软件开发工具包 (eSDK) 手册中所述。
Yocto 项目开发任务手册中的“理解和创建层”部分。
“内核修改工作流程”部分。
1.2内核修改工作流程
内核修改涉及更改 Yocto 项目内核,这可能涉及更改配置选项以及添加新的内核配方。配置更改可以以配置片段的形式添加,而配方修改则通过recipes-kernel
您创建的内核层中的内核区域进行。
本节提供了 Yocto 项目内核修改工作流的高级概述。插图和随附的列表提供了一般信息和进一步信息的参考。
设置您的主机开发系统以支持使用 Yocto 项目的开发:有关如何让构建主机准备好使用 Yocto 项目的选项,请参阅Yocto 项目开发任务手册中的“设置以使用 Yocto 项目”部分。
为内核开发设置您的主机开发系统:建议您使用
devtool
可扩展的 SDK 进行内核开发。或者,您可以在 Yocto 项目中使用传统的内核开发方法。无论哪种方式,您都需要采取一些步骤来准备好开发环境。使用
devtool
eSDK 要求您拥有干净的映像构建,并且您已使用适当的 eSDK 进行设置。有关更多信息,请参阅“准备使用 devtool 进行开发”部分。使用传统的内核开发要求您在隔离的本地 Git 存储库中拥有可用的内核源代码。有关更多信息,请参阅“为传统内核开发做好准备”部分。
如果适用,对内核源代码进行更改:修改内核并不总是意味着直接更改源文件。但是,如果您必须这样做,如果您使用的是
devtool
. 有关更多信息,请参阅“使用 devtool 修补内核”部分。如果您使用传统的内核开发,您可以编辑内核本地 Git 存储库中的源文件。有关更多信息,请参阅“使用传统内核开发修补内核”部分。
如果适用,进行内核配置更改:如果您的情况需要更改内核的配置,您可以使用 menuconfig,它允许您以交互方式开发和测试您对内核所做的配置更改。保存您所做的更改会
menuconfig
更新内核.config
文件。注意
尽量抵制直接编辑现有
.config
文件的诱惑,该文件位于用于构建的源代码中的构建目录中。这样做可能会在 OpenEmbedded 构建系统重新生成配置文件时产生意外结果。一旦您对使用所做的配置更改感到满意
menuconfig
并保存了它们,您就可以直接将生成的.config
文件与现有的原始文件进行比较,并将这些更改收集到一个 配置片段文件中,以便在内核文件中进行引用.bbappend
。此外,如果您在 BSP 层工作并且需要修改 BSP 的内核配置,您可以使用
menuconfig
.使用您的更改重建内核映像:重建内核映像应用您的更改。根据您的目标硬件,您可以在实际硬件或 QEMU 上验证您的更改。
本开发人员指南的其余部分涵盖内核开发期间通常使用的常见任务、高级元数据使用和 Yocto Linux 内核维护概念。