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

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

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

1. 内核编译

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

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

    • boot.img:包含内核镜像 Imagesecond(实际上是 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
相关推荐
alexhilton2 小时前
藏在设备上的秘密,终究藏不住
android·kotlin·android jetpack
hai_android8 小时前
Kotlin / Android 常用函数使用示例手册
android·java·kotlin
hai_android9 小时前
Android MeasureSpec 详解
android·java·kotlin
又见情义11 小时前
RK3568 Android 13 本地 U 盘 OTA 升级实战:基于 RKUpdateService 的完整流程
android
Godikov12 小时前
Android10后台弹窗与APK自动更新
android
星野云联AIoT技术洞察12 小时前
核心板、底板、开发板有什么区别:Rockchip 项目如何选择采购方式
开发板·嵌入式开发·rockchip·核心板·芯片选型·底板
又见情义13 小时前
RK3568 Android 13 USB OTG/Host 切换调试经验分享
android
终端安全笔记14 小时前
iOS 27 之后「策略空转」:设备升级不报错,但旧策略不再管它
android·网络·安全·ios·智能手机
JMchen15 小时前
实战案例:实现120fps流畅的渐变进度条
android·kotlin·canvas
敲代码的瓦龙15 小时前
Jetpack?DataBinding!!!
android·java·开发语言·mysql·android-studio