适用于Android内核boot.img生成流程

适用于Android内核boot.img生成流程

  • 作者:吴思含(Witheart)
  • 更新时间:20241205

1. 内核编译

  1. 执行以下脚本编译内核源码:

    bash 复制代码
    ./make.sh
  2. 编译完成后,在内核源码目录下生成以下文件:

    • boot.img:包含内核镜像 Image 和 second(实际上是 resource.img)。
    • resource.img:资源镜像。

    注意:

    • 此时生成的 boot.img 缺少 ramdisk.img。
    • 此时的 resource.img 不完整,缺少电量显示图片等资源。

2. 生成完整的 boot.img

2.1 补充 resource.img 的内容
  1. 进入 u-boot 目录:

    bash 复制代码
    cd ../u-boot/
  2. 使用 u-boot 目录下的打包工具重新打包 resource.img:

    bash 复制代码
    ./scripts/pack_resource.sh ../kernel/resource.img

    脚本功能:

    • 解包指定的 resource.img。
    • 将 <uboot>/tools/images/ 目录下的所有 .bmp 图片资源,和原有资源一起重新打包为一个新的 resource.img。
  3. 将打包完成的 resource.img 复制回内核源码目录:

    bash 复制代码
    cp resource.img ../kernel/

2.2 生成完整的 boot.img
  1. 返回 Android SDK 顶层目录:

    bash 复制代码
    cd ../
  2. 执行以下命令生成完整的 boot.img:

    bash 复制代码
    make bootimage -j16

    命令说明:

    • 生成过程中会自动创建 ramdisk.img。
    • 将 ramdisk.img、内核镜像 Image、内核 DTB 文件,以及重新打包的 resource.img 一起打包成完整的 boot.img。
  3. 生成的完整 boot.img 输出路径:

    复制代码
    <SDK>/out/target/product/<产品名称>/boot.img

    说明: 该 boot.img 是最终要烧录到开发板 boot 分区的文件。


总结

  • boot.img 的生成涉及两个重要步骤:
    1. 补充完善 resource.img。
    2. 生成完整的 boot.img。
  • 最终生成的 boot.img 包含以下内容:
    • 内核镜像 Image。
    • 内核设备树 DTB 文件。
    • 初始根文件系统镜像 ramdisk.img。
    • 资源镜像 resource.img。
相关推荐
呆呆敲代码的小Y2 小时前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
思想觉悟3 小时前
SEAndroid实战
android·linux·c++
思想觉悟4 小时前
Aosp开发磨刀石之ADB速查
android·c++
应用市场6 小时前
用本机跑的开源音乐模型,给安卓小游戏做 20 秒无缝循环背景音乐
android·python·游戏开发·soundpool·音频处理
企业数字化笔记6 小时前
表单发布前怎么验收?版本引用、字段兼容和历史数据回归
android·数据挖掘·回归
生信分析笔记6 小时前
Nature 正刊 GPN-Star 基因组语言模型
android
渣渣盟6 小时前
Flink 状态管理深度剖析:从 KeyedState 到 RocksDB,状态如何存储、恢复与扩缩容
android·大数据·flink
avi91116 小时前
电影开源Jevdo - 源码介绍(vue版)没有android 和 没有wpf
android·wpf·框架·数据爬虫·meego·电影管理
OxYGC6 小时前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
拥小抱1 天前
Compose 知识点
android