安卓P本地编译bootimg与dtboimg流程

一、SDK的安装

  1. fsl-imx-wayland-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-4.14-sumo.sh安装脚本拷贝至本地机器,选择你想要的路径进行安装。
  2. 编译前设置环境变量,使用命令source your_path/environment-setup-aarch64-poky-linux

二、boot.img的制作与打包

1. 解压压缩包

kernel_imx.tar.bz2压缩包解压至本地。

文件说明

  • kernel-source:目录,用于存放内核源码
  • Makefile:顶层Makefile,用于封装一些自定义操作
  • imgtool.sh:img镜像制作脚本,根据参数生成对应的img
  • tools/ramdisk:安卓9 ramdisk文件,与Image合并生成boot.img文件,可自行替换更新
  • tools/mkbootimg:boot.img打包程序
  • tools/unpack_bootimg:boot.img解包程序
  • tools/mkdtimg:用于创建 dtb/dtbo 镜像的工具
  • out:镜像输出文件夹

2. 拷贝内核源码

进入安卓P源码目录,将vendor/nxp-opensource/kernel_imx目录内所有代码拷贝至kernel-source目录,建议使用rsync命令,以后每次修改完代码后可通过命令自动同步。

3. 编译命令说明

  • make config:生成.config文件,默认使用android_defconfig
  • make kernel:编译内核并在kernel_img目录生成image文件
  • make modules:编核生成内核模块
  • make modules_install:将内核模块安装至build-modules-out目录
  • make dtb:编译设备树并输出至kernel_imgdtb文件夹中
  • make menuconfig:配置内核编译选项
  • make clean:清除上次的make命令所产生的object文件及可执行文件
  • make distclean:类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile文件

4. boot.img打包顺序

  1. 使用make kernel命令编译内核。
  2. 运行./imgtool.sh -b命令,将在out目录生成boot.img文件。That’s all, finished!(☺想不到吧!)

三、内核模块更新

  1. 使用make modules编核生成内核模块。
  2. 使用 make modules_install将内核模块安装至build-modules-out目录。
  3. 运行./imgtool.sh -m命令,将在out目录生成modules.tar.bz2文件。
  4. modules.tar.bz2拷贝至安卓系统中,并解压至/system/lib/modules/目录即可,建议使用命令tar -xvjf modules.tar.bz2 -C /system/lib/modules/

四、dtbo.img的制作

  1. 使用make dtb编核生成设备树。
  2. 运行./imgtool.sh -d命令,将在out目录生成dtbo-imx8qxp.img文件。

安卓P本地编译bootimg与dtboimg流程
https://www.shangyexin.com/2019/01/18/android-p-compile/
作者
Yasin
发布于
2019年1月18日
许可协议