Skip to main content
Qualcomm® Linux 内核使用 Yocto devtool 工作流程进行开发。 本页介绍在 Yocto 工作区内进行内核源码和配置更改的”编辑–构建–维护”循环。
本页仅介绍 Yocto devtool 工作流程。如需在不构建完整镜像的情况下更快地迭代仅涉及内核的更改,请参阅 不使用 Yocto 构建内核
开始之前,请确保主机已安装所需工具(kasgit 和 Yocto 构建依赖项)。请参阅 先决条件与主机设置
有关 Yocto 内核开发机制的更多信息,请参阅 Yocto Project Linux Kernel Development

解包内核源码

使用 devtool 将内核源码解包到本地工作区进行编辑。 devtool modify 将内核源码检出到 devtool 工作区,并将配方重新指向该本地副本进行构建,因此下次构建时会自动使用你的编辑内容,而无需重新从上游获取。
  1. 在发布标签处克隆 meta-qcom。发布标签遵循 qli-<version> 约定(例如 qli-2.0)。有关可用标签,请参阅 Qualcomm Linux 发行说明 - 简介
  1. 在固定的修订版本处同步所有 meta 层。如果你已经在 使用 Yocto 构建内核中完成了同步步骤,则此步骤已完成。
  2. 打开 kas shell。将 rb3gen2-core-kit.yml 替换为与你的单板匹配的机器 YML。所有受支持的机器 YML 文件均在 meta-qcom/ci/ 中。
  1. 将内核源码解包到 devtool 工作区:
内核源码被检出到 build/workspace/sources/linux-qcom
对于主线 BSP,请使用 linux-qcom-next,并在解包之前在 build/conf/local.conf 中设置 PREFERRED_PROVIDER_virtual/kernel = "linux-qcom-next"

进行内核配置更改

build/workspace/sources/linux-qcom 中编辑内核源码或配置。 要以交互方式修改内核配置:
  1. 打开 kas shell(将 rb3gen2-core-kit.yml 替换为你的机器 YML):
  1. 通过 devtool 启动 menuconfig:
  1. 配置片段保存到:
对于主线内核,将 linux-qcom 替换为 linux-qcom-next

构建并测试你的更改

编辑内核源码或配置后,先构建并部署内核,在硬件上验证更改后再提交。
  1. 打开 kas shell(将 rb3gen2-core-kit.yml 替换为你的机器 YML):
  1. 仅构建内核(比完整镜像构建更快):
  1. 准备好部署时,构建完整的可刷写镜像:
  1. 刷写更新的内核镜像并重启。有关完整的刷写步骤和启动后验证步骤,请参阅 安装并启动内核

提交内核更改

编辑和测试完成后,在 devtool 工作区内提交你的更改,以便将其导出为补丁。-s 标志会添加 Signed-off-by: 尾注,这是向上游提交补丁所必需的。

维护内核更改

使用 devtool finish 将你的更改导出为补丁,并接入自定义 meta 层:
  1. 打开 kas shell(将 rb3gen2-core-kit.yml 替换为你的机器 YML):
  1. 创建并注册自定义层(仅首次需要):
  1. 将补丁和配置片段导出到该层:
devtool finish 之后,该层会更新为包含:
  • 位于 meta-<mylayer>/recipes-kernel/linux/linux-qcom/*.patch 的内核补丁
  • 一个将这些补丁添加到 SRC_URIbbappend
  • build/workspace 条目被移除
生成的 bbappend 如下所示:
  1. 从该层重新构建镜像,验证补丁能够干净地应用:

清理工作区

要丢弃 devtool 工作区并恢复到干净状态:
  1. 打开 kas shell(将 rb3gen2-core-kit.yml 替换为你的机器 YML):
  1. 移除自定义层:
  1. 重置 devtool 工作区:
  1. 删除工作区目录:

后续步骤