适用于Android内核boot.img生成流程
- 作者:吴思含(Witheart)
- 更新时间:20241205
1. 内核编译
-
执行以下脚本编译内核源码:
bash./make.sh -
编译完成后,在内核源码目录下生成以下文件:
boot.img:包含内核镜像Image和second(实际上是resource.img)。resource.img:资源镜像。
注意:
- 此时生成的
boot.img缺少ramdisk.img。 - 此时的
resource.img不完整,缺少电量显示图片等资源。
2. 生成完整的 boot.img
2.1 补充 resource.img 的内容
-
进入
u-boot目录:bashcd ../u-boot/ -
使用
u-boot目录下的打包工具重新打包resource.img:bash./scripts/pack_resource.sh ../kernel/resource.img脚本功能:
- 解包指定的
resource.img。 - 将
<uboot>/tools/images/目录下的所有.bmp图片资源,和原有资源一起重新打包为一个新的resource.img。
- 解包指定的
-
将打包完成的
resource.img复制回内核源码目录:bashcp resource.img ../kernel/
2.2 生成完整的 boot.img
-
返回 Android SDK 顶层目录:
bashcd ../ -
执行以下命令生成完整的
boot.img:bashmake bootimage -j16命令说明:
- 生成过程中会自动创建
ramdisk.img。 - 将
ramdisk.img、内核镜像Image、内核 DTB 文件,以及重新打包的resource.img一起打包成完整的boot.img。
- 生成过程中会自动创建
-
生成的完整
boot.img输出路径:<SDK>/out/target/product/<产品名称>/boot.img说明: 该
boot.img是最终要烧录到开发板boot分区的文件。
总结
boot.img的生成涉及两个重要步骤:- 补充完善
resource.img。 - 生成完整的
boot.img。
- 补充完善
- 最终生成的
boot.img包含以下内容:- 内核镜像
Image。 - 内核设备树
DTB文件。 - 初始根文件系统镜像
ramdisk.img。 - 资源镜像
resource.img。
- 内核镜像