3使用高级元数据 ( yocto-kernel-cache
)
目录
3使用高级元数据 ( yocto-kernel-cache)
3.1概述
除了支持配置片段和补丁之外,Yocto Project 内核工具还支持丰富的 元数据,您可以使用这些元数据来定义复杂的策略和板级支持包 (BSP) 支持。元数据和管理它的工具的目的是帮助您管理用于支持多个 BSP 和 Linux 内核类型的配置和源的复杂性。
内核元数据存在于许多地方。Yocto 项目源存储库 中的一个区域 是yocto-kernel-cache
Git 存储库。您可以在Yocto 项目源代码库中的“Yocto Linux 内核”标题下找到此存储 库。
内核开发工具(“kern-tools”)也可以在yocto-kernel-tools
Git 存储库中“Yocto Linux 内核”标题下的 Yocto 项目源存储 库中找到。构建这些工具的方法meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
位于源目录中(例如 poky
)。
3.2在配方中使用内核元数据
正如介绍中提到的,Yocto 项目包含内核元数据,它位于yocto-kernel-cache
Git 存储库中。此元数据定义了与 linux-yocto 配方中相应 BSP 的定义相对应的板级支持包 (BSP)。BSP 由内核策略和启用的特定于硬件的功能的聚合组成。可以从 linux-yocto 配方中影响 BSP。
注意
包含内核元数据(例如从linux-yocto.inc
文件继承)的 Linux 内核配方被称为“linux-yocto 风格”配方。
每个 linux-yocto 风格的配方都必须定义 KMACHINE变量。此变量通常设置为与BitBake使用的MACHINE变量相同的值。但是,在某些情况下,该变量可能会改为引用MACHINE的底层平台。
如果多个 BSP使用相同的 BSP 描述构建,则它们可以重用相同的KMACHINE名称。多个基于 Corei7 的 BSP 可以为KMACHINE共享相同的“intel-corei7-64”值。重要的是要认识到KMACHINE仅用于内核映射,而MACHINE 是 BSP 层中的机器类型。然而,即使有这种区别,这两个变量也可以保持相同的值。有关更多信息,请参阅“ BSP 说明”部分。
每个 linux-yocto 风格的配方还必须指明用于构建 Linux 内核的 Linux 内核源代码库分支。该 KBRANCH变量必须设置指示分支。
linux-yocto 风格的配方可以选择定义以下变量:
LINUX_KERNEL_TYPE 定义了用于组装配置的内核类型。如果您不指定LINUX_KERNEL_TYPE,则默认为“标准”。加上KMACHINE, LINUX_KERNEL_TYPE定义内核使用工具来找到内核元数据与该范围内的适当的描述打造出来的来源和配置搜索参数。linux-yocto recipes 定义了“standard”、“tiny”和“preempt-rt”内核类型。有关内核类型的更多信息,请参阅“内核类型”部分。
在构建期间,kern-tools 搜索与 从配方传入的KMACHINE和LINUX_KERNEL_TYPE变量最匹配的 BSP 描述文件。这些工具使用他们找到的与两个变量匹配的第一个 BSP 描述。如果工具找不到匹配项,则会发出警告。
这些工具首先搜索KMACHINE,然后 搜索LINUX_KERNEL_TYPE。如果工具无法找到部分匹配,他们将使用来自来源KBRANCH,并在指定的任何配置SRC_URI。
您可以使用 KERNEL_FEATURES 变量来包含KMACHINE和 LINUX_KERNEL_TYPE变量组合尚未包含的功能(配置片段、补丁或两者)。例如,要包含指定为“features/netfilter/netfilter.scc”的功能,请指定:
KERNEL_FEATURES += "features/netfilter/netfilter.scc"
要包含仅用于qemux86
机器的名为“cfg/sound.scc”的功能,请指定:
KERNEL_FEATURES:append:qemux86 = " cfg/sound.scc"
KERNEL_FEATURES中条目的值取决于它们在内核元数据本身中的位置。此处的示例取自 yocto-kernel-cache
存储库。该存储库的每个分支都包含顶级的“features”和“cfg”子目录。有关更多信息,请参阅“内核元数据语法”部分。
3.3内核元数据语法
内核元数据由三种主要类型的文件组成:scc
1描述文件、配置片段和补丁。这些 scc
文件定义变量并包含或以其他方式引用三种文件类型中的任何一种。描述文件用于将所有类型的内核元数据聚合成最终描述构建针对特定机器定制的 Linux 内核所需的源和配置的内容。
该scc
说明文件用于定义两个基本类型的核心元数据:
-
特点
-
板级支持包 (BSP)
以补丁和配置片段的形式将源聚合到一个模块化的可重用单元中。您可以使用功能来实现概念上独立的内核元数据描述,例如纯配置片段、简单补丁、复杂功能和内核类型。内核类型定义了要在 BSP 中重用的通用内核功能和策略。
BSP 定义特定于硬件的功能并将它们与内核类型聚合以形成对将要组装和构建的内容的最终描述。
虽然内核元数据语法不强制对配置片段、补丁、功能或内核类型进行任何逻辑分离,但最佳实践要求对这些类型的元数据进行逻辑分离。建议使用以下元数据文件层次结构:
base/
bsp/
cfg/
features/
ktypes/
patches/
该bsp
目录包含BSP 描述。其余目录都包含“功能”。分离bsp
从结构艾滋病概念化打算使用的其余部分。
使用这些指南来帮助将您的scc
描述文件放置在结构中:
-
如果您的文件仅包含配置片段,请将文件放在
cfg
目录中。 -
如果您的文件只包含源代码修复,请将文件放在
patches
目录中。 -