kmake-image Docker 容器中。
限制和注意事项
- 工具链:
kmake-imageDocker 镜像提供aarch64交叉工具链、systemd ukify以及镜像打包脚本。无需在主机上安装工具链。 - DTB 打包:独立构建时,您必须使用来自
qcom-dtb-metadata 仓库的
静态 ITS 配置手动打包 DTB。Yocto 构建通过
meta-qcom自动处理此步骤。
获取内核源码
直接克隆内核仓库:检出确切的内核源码修订版本
检出分支会跟随该分支上的最新提交。为了实现可复现的独立验证,请检出所需分支, 并使用构建目标镜像的meta-qcom 发布标签中的内核 SRCREV。
在该发布标签处克隆 meta-qcom,并检查 LTS 内核 recipe:
qli-<version> 命名约定。请使用被测镜像的发行说明中指定的标签,
并从该标签获取 SRCREV。不要使用 master 分支,因为它可能引用更新的内核修订版本。
从 recipe 中复制完整的 40 个字符的 SRCREV 值,然后在内核克隆中检出对应的提交:
git rev-parse HEAD 输出的值与 SRCREV 完全一致。对于
qcom-next 构建,请改用 meta-qcom/recipes-kernel/linux/linux-qcom-next_git.bb
并克隆 qcom-next 内核分支。
设置 Docker 工具链
选项 1:拉取预构建镜像(推荐)
首选方法是从镜像仓库拉取预构建的kmake-image:
除非您计划为 kmake-image Docker 镜像做贡献,否则请拉取托管的镜像。
这种方法可以避免因网络连接或容器镜像仓库访问问题导致的 Docker 构建失败。
选项 2:在本地构建镜像
仅当需要开发或自定义 kmake-image 容器时,才在本地克隆并构建它:设置 shell 别名
为方便起见,设置 shell 别名。将以下内容添加到您的 shell 配置文件中, 以便在多个会话间保持有效:收集构建工件
创建一个artifacts/ 目录,用于存放组装最终镜像所需的 ramdisk、启动
二进制文件和 DTB 元数据:
qcom-dtb-metadata
仓库以获取所需的 qcom-metadata.dts 和 qcom-next-fitimage.its 文件:
构建内核和模块
使用标准的 Qualcomm® 配置片段来配置并构建内核,然后将模块 安装到暂存目录中:打包启动镜像
生成efi.bin(ESP 分区)
efi.bin 镜像包含 systemd-boot、内核(打包为 UKI type-2 镜像)以及
initramfs:
dtb.bin(DTB 分区)
为所有支持设备树的目标构建基于 FIT 的 dtb.bin:
efi.bin 和 dtb.bin 都会被放置在 images/ 目录中,可直接烧写。
内核镜像构建脚本
Docker 镜像包含一个build.sh 脚本,它封装了上述构建和打包步骤,并生成
efi.bin、dtb.bin 和 boot.img。
将 --dtb 设置为验证目标对应的 DTB。对于 IQ-9075 EVK,请运行:
--dtb参数指定要打包到目标专用镜像中的设备树 Blob(Device Tree Blob)。 请选择与目标设备匹配的 DTB。- 初始化
CMDLINE以设置您的内核命令行参数;否则将使用通用默认命令行。
排查 Docker 构建失败问题
如果 Docker 构建失败并出现 “failed to resolve source metadata” 错误:- 使用预构建镜像(推荐) 有关说明,请参阅选项 1:拉取预构建镜像。
-
检查防火墙和网络访问
验证您的网络是否允许访问 Docker 镜像仓库:
如果上述命令失败,请联系您的网络管理员,允许到 Docker 镜像仓库的出站 HTTPS 连接。
-
向构建传递代理设置

