devtool 工作流程进行开发。
本页介绍在 Yocto 工作区内进行内核源码和配置更改的”编辑–构建–维护”循环。
本页仅介绍 Yocto
devtool 工作流程。如需在不构建完整镜像的情况下更快地迭代仅涉及内核的更改,请参阅
不使用 Yocto 构建内核。开始之前,请确保主机已安装所需工具(
kas、git 和 Yocto 构建依赖项)。请参阅
先决条件与主机设置。- 要设置主机并克隆源码,请参阅获取内核源码。
- 要配置内核并构建镜像,请参阅使用 Yocto 构建内核。
- 要不使用 Yocto 构建内核,请参阅不使用 Yocto 构建内核。
- 要在构建后刷写和验证,请参阅安装并启动内核。
解包内核源码
使用devtool 将内核源码解包到本地工作区进行编辑。
devtool modify 将内核源码检出到 devtool 工作区,并将配方重新指向该本地副本进行构建,因此下次构建时会自动使用你的编辑内容,而无需重新从上游获取。
- 在发布标签处克隆
meta-qcom。发布标签遵循qli-<version>约定(例如qli-2.0)。有关可用标签,请参阅 Qualcomm Linux 发行说明 - 简介。
- 在固定的修订版本处同步所有 meta 层。如果你已经在 使用 Yocto 构建内核中完成了同步步骤,则此步骤已完成。
-
打开 kas shell。将
rb3gen2-core-kit.yml替换为与你的单板匹配的机器 YML。所有受支持的机器 YML 文件均在meta-qcom/ci/中。
- 将内核源码解包到 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 中编辑内核源码或配置。
要以交互方式修改内核配置:
- 打开 kas shell(将
rb3gen2-core-kit.yml替换为你的机器 YML):
- 通过 devtool 启动
menuconfig:
- 配置片段保存到:
对于主线内核,将
linux-qcom 替换为 linux-qcom-next。构建并测试你的更改
编辑内核源码或配置后,先构建并部署内核,在硬件上验证更改后再提交。- 打开 kas shell(将
rb3gen2-core-kit.yml替换为你的机器 YML):
- 仅构建内核(比完整镜像构建更快):
- 准备好部署时,构建完整的可刷写镜像:
- 刷写更新的内核镜像并重启。有关完整的刷写步骤和启动后验证步骤,请参阅 安装并启动内核。
提交内核更改
编辑和测试完成后,在 devtool 工作区内提交你的更改,以便将其导出为补丁。-s 标志会添加 Signed-off-by: 尾注,这是向上游提交补丁所必需的。
维护内核更改
使用devtool finish 将你的更改导出为补丁,并接入自定义 meta 层:
- 打开 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 工作区:
- 删除工作区目录:
后续步骤
- 要调试内核问题,请参阅配置调试方法。

