安卓P本地编译bootimg与dtboimg流程
一、SDK的安装
- 将
fsl-imx-wayland-glibc-x86_64-meta-toolchain-qt5-aarch64-toolchain-4.14-sumo.sh安装脚本拷贝至本地机器,选择你想要的路径进行安装。 - 编译前设置环境变量,使用命令
source your_path/environment-setup-aarch64-poky-linux。
二、boot.img的制作与打包
1. 解压压缩包
将kernel_imx.tar.bz2压缩包解压至本地。
文件说明
kernel-source:目录,用于存放内核源码Makefile:顶层Makefile,用于封装一些自定义操作imgtool.sh:img镜像制作脚本,根据参数生成对应的imgtools/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_defconfigmake kernel:编译内核并在kernel_img目录生成image文件make modules:编核生成内核模块make modules_install:将内核模块安装至build-modules-out目录make dtb:编译设备树并输出至kernel_img的dtb文件夹中make menuconfig:配置内核编译选项make clean:清除上次的make命令所产生的object文件及可执行文件make distclean:类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile文件
4. boot.img打包顺序
- 使用
make kernel命令编译内核。 - 运行
./imgtool.sh -b命令,将在out目录生成boot.img文件。That’s all, finished!(☺想不到吧!)
三、内核模块更新
- 使用
make modules编核生成内核模块。 - 使用
make modules_install将内核模块安装至build-modules-out目录。 - 运行
./imgtool.sh -m命令,将在out目录生成modules.tar.bz2文件。 - 将
modules.tar.bz2拷贝至安卓系统中,并解压至/system/lib/modules/目录即可,建议使用命令tar -xvjf modules.tar.bz2 -C /system/lib/modules/。
四、dtbo.img的制作
- 使用
make dtb编核生成设备树。 - 运行
./imgtool.sh -d命令,将在out目录生成dtbo-imx8qxp.img文件。
安卓P本地编译bootimg与dtboimg流程
https://www.shangyexin.com/2019/01/18/android-p-compile/