编译安卓内核需要需要对应设备的内核源码,安卓手机的内核源码一般可以在github上面搜索到或者在google内核开放网址:https://android.googlesource.com/kernel/manifest,如果机型较新,可能没有对应的内核源码。
编译操作系统:Ubuntu-22.04
我们本次编译的安卓内核以common-android13-5.15为例,也是通用的编译方法
安装依赖:
1sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig dwarves
下载安卓内核源代码和构建工具
对于最新的内核,可以使用 repo 下载源代码、工具链和构建脚本。一些内核(例如 Pixel 3 内核)需要从多个 git 仓库获取源代码,而其他内核(如通用内核)只需要一份源代码。使用 repo 方法可确保源目录设置正确。
下载相应分支的源代码:
12#创建内核根目录并进入mkdir android-kernel && cd android-kernel
12#初始化common-android13-5.15内核源码repo init -u https://android.googlesource.com/kernel/manifest -b common-android13-5.15
如果无法连接谷歌,可以尝试清华大学镜像源AOSP
12#同步仓库repo sync
下载安卓内核驱动源码rwProcMem33
1234#这里和内核源码分开放cd ..git clone https://github.com/abcz316/rwProcMem33.git
12#将驱动源码复制到内核drivers里面来进行编译cp -r rwProcMem33/rwProcMem33Module/rwProcMem_module/ android-kernel/drivers/rwProcMem
驱动放到内核源码根目录下的的drivers目录下, 修改rwProcMem33驱动的Makefile文件(drivers/rwProcMem/Makefile)为
1obj-m += rwProcMem.o
将drivers目录下的Makefile文件(drivers/Makefile)加一行
1obj-m += rwProcMem/
以驱动模块加载
修改驱动源代码
1vim drivers/rwProcMem/ver_control.h
开启53行宏定义,将54行给注释掉
开始编译
在内核源代码根目录执行开始编译
1LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
这里需要比较长的时间
启动映像位于 out/android13-5.15/dist/boot.img
驱动模块位于 out/android13-5.15/common/drivers/rwProcMem/rwProcMem.ko