devtool 工作流进行开发。本页介绍在 Yocto 工作区内进行内核源码和配置修改的“编辑—构建—维护”循环。
本页仅介绍 Yocto
devtool 工作流。若要在不构建完整镜像的情况下更快地迭代纯内核修改,请参阅 不使用 Yocto 构建内核。开始之前,请确保您的主机已安装所需工具(
kas、git 以及 Yocto 构建依赖项)。请参阅 先决条件与主机设置。- 要设置主机并克隆源码,请参阅 获取内核源码。
- 要配置内核并构建镜像,请参阅 使用 Yocto 构建内核。
- 要在不使用 Yocto 的情况下构建内核,请参阅 不使用 Yocto 构建内核。
- 要在构建后刷写并验证,请参阅 安装并启动内核。
解包内核源码
使用devtool 将内核源码解包到本地工作区中进行编辑。devtool modify 会将内核源码检出到 devtool 工作区,并将配方(recipe)重新指向该本地副本进行构建,因此下次构建时会自动采用您的修改,而无需重新从上游拉取。
- 在某个发布标签处克隆
meta-qcom。发布标签遵循qli-<version>约定(例如qli-2.0)。有关可用标签,请参阅 Qualcomm Linux 发行说明 - 简介。
- 按固定(pinned)版本同步所有元层(meta-layer)。如果您已完成 使用 Yocto 构建内核 中的同步步骤,则此步骤已完成。
-
打开一个 kas shell。将
rb3gen2-core-kit.yml替换为与您开发板匹配的机器 YML。所有受支持的机器 YML 文件位于meta-qcom/ci/。
- 将内核源码解包到 devtool 工作区:
build/workspace/sources/linux-qcom。
对于主线(mainline)BSP,请使用
linux-qcom-next,并在解包前在
build/conf/local.conf 中设置
PREFERRED_PROVIDER_virtual/kernel = "linux-qcom-next"。修改内核配置
在build/workspace/sources/linux-qcom 中编辑内核源码或配置。
要以交互方式修改内核配置:
- 打开一个 kas shell(将
rb3gen2-core-kit.yml替换为您的机器 YML):
- 通过 devtool 启动
menuconfig:
- 配置片段(fragment)会保存到:
对于主线内核,请将
linux-qcom 替换为 linux-qcom-next。构建并测试您的修改
编辑内核源码或配置后,先构建并部署内核,在提交之前在硬件上验证您的修改。- 打开一个 kas shell(将
rb3gen2-core-kit.yml替换为您的机器 YML):
- 仅构建内核(比构建完整镜像更快):
- 准备部署时,构建完整的可刷写镜像:
- 刷写更新后的内核镜像并重启。完整的刷写流程和启动后验证步骤,请参阅 安装并启动内核。
提交内核修改
编辑和测试完成后,在 devtool 工作区内提交您的修改,以便将其导出为补丁。-s 标志会添加 Signed-off-by: 尾注,这是向上游提交补丁所必需的。
维护内核修改
使用devtool finish 将您的修改导出为补丁并接入自定义元层:
- 打开一个 kas shell(将
rb3gen2-core-kit.yml替换为您的机器 YML):
- 创建并注册一个自定义层(仅首次需要):
- 将补丁和配置片段导出到该层:
devtool finish 后,该层会更新为包含:
- 位于
meta-<mylayer>/recipes-kernel/linux/linux-qcom/*.patch的内核补丁 - 一个将这些补丁添加到
SRC_URI的bbappend build/workspace中的条目会被移除
bbappend 如下所示:
- 从该层重新构建镜像,以验证补丁可以干净地应用:
清理工作区
要丢弃 devtool 工作区并恢复到干净状态:- 打开一个 kas shell(将
rb3gen2-core-kit.yml替换为您的机器 YML):
- 移除自定义层:
- 重置 devtool 工作区:
- 删除工作区目录:
后续步骤
- 要调试内核问题,请参阅 配置调试方法。

