安卓内核编译+驱动编译+打包成boot刷入

本文最后更新于 2025年2月7日 下午

编译安卓内核需要需要对应设备的内核源码,安卓手机的内核源码一般可以在github上面搜索到或者在google内核开放网址:https://android.googlesource.com/kernel/manifest,如果机型较新,可能没有对应的内核源码。

编译操作系统:Ubuntu-22.04

我们本次编译的安卓内核以common-android13-5.15为例,也是通用的编译方法

安装依赖:

1
sudo 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 方法可确保源目录设置正确。

下载相应分支的源代码:

1
2
#创建内核根目录并进入
mkdir android-kernel && cd android-kernel
1
2
#初始化common-android13-5.15内核源码
repo init -u https://android.googlesource.com/kernel/manifest -b common-android13-5.15

如果无法连接谷歌,可以尝试清华大学镜像源AOSP

1
2
#同步仓库
repo sync

下载安卓内核驱动源码rwProcMem33

1
2
3
4
#这里和内核源码分开放
cd ..

git clone https://github.com/abcz316/rwProcMem33.git
1
2
#将驱动源码复制到内核drivers里面来进行编译
cp -r rwProcMem33/rwProcMem33Module/rwProcMem_module/ android-kernel/drivers/rwProcMem

驱动放到内核源码根目录下的的drivers目录下, 修改rwProcMem33驱动的Makefile文件(drivers/rwProcMem/Makefile)为

1
obj-m += rwProcMem.o

将drivers目录下的Makefile文件(drivers/Makefile)加一行

1
obj-m += rwProcMem/

以驱动模块加载

修改驱动源代码

1
vim drivers/rwProcMem/ver_control.h

开启53行宏定义,将54行给注释掉

开始编译

在内核源代码根目录执行开始编译

1
LTO=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


安卓内核编译+驱动编译+打包成boot刷入
https://blog.stariverfeel.eu.org/posts/27a87966.html
作者
Feel Liao
发布于
2025年2月7日
更新于
2025年2月7日
许可协议