安卓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_defconfig
make 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/