前言
之前写了一篇文章为一加七Pro(LineageOs17.1 4.14内核版本)编译KernelSu,最近想换个系统玩玩,因为我发现我自己编译的系统总是被某些APP风控了,比如淘宝有些活动就参与不了。
正好可以试试PixelExperience,顺便为PixelExperience编译一个配套的kernelsu,没有root的安卓系统是没有灵魂的。
环境准备
我发现编译PixelExperience的文档和Lineageos的文档不能说是一模一样,也是师出同门。那么所需的环境估计也是一样的,就用之前编译Lineageos的WSL Ubuntu20系统。
环境安装请看:wsl2-ubuntu20编译Lineage17(Android10),如果你不想在安装一遍环境,可以使用我备份的WSL包,在WIndows导入就可以使用了。
这个WSL的远程连接也配置好了,使用VNC连接的软件地址是localhost:5900
,密码是kanade
,VNC软件我用的是Realvnc。
另外,WSL导入命令是:wsl --import Ubuntu20.04 D:\WSL Ubuntu-20.04.tar
,其中Ubuntu20.04
是wsl的名称,D:\WSL
是导入的安装路径。后台回复wsl
获取WSL备份的tar包下载地址
创建虚拟磁盘
先创建一个vhd虚拟磁盘来存放源码,虽然wsl可以直接访问Windows上的文件,但如果把源码放WIndows上,会出现一些奇怪的问题,比如权限问题。
而且编译完,源码一般也不会使用,就放在Vhd磁盘里存着就行。
这里我用Hyper-v管理器来创建,格式选VHDX,类型选固定大小,磁盘空间至少是300G。
创建完成后附加到wsl里,附加命令:wsl --mount --bare --vhd D:\pixelp.vhdx
,然后给这个磁盘分区格式化在挂载就可以用了。
分区和格式化我懒得记命令,一般都用图形化软件GParted,界面上按提示点几下就可以了。挂载的话:mount /dev/sde1 ~/pixelp
,后面的目录要先创建一下
下载源码
PixelExperience我没找到国内源,所以需要配置git的科学代理,IP为宿主机的ip,因为我代理是运行在Windows上的
git config --global http.proxy 'socks5://172.23.96.1:10808'
git config --global https.proxy 'socks5://172.23.96.1:10808'
先使用脚本下载下所需的环境:
cd ~/
git clone https://github.com/akhilnarang/scripts
cd scripts
./setup/android_build_env.sh
配置一下proxychains,也加上代理
vim /etc/proxychains4.conf
开始创建仓库同步源码
mkdir pe
cd pe
proxychains4 repo init -u https://github.com/PixelExperience/manifest -b thirteen-plus
因为我官网下载的安装包是13plus的版本,所以这里下载的分支选thirteen-plus
开始同步源码,这个过程很长。我下载速度30M/s也用了挺久的
proxychains4 repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags
下载完成后,就要开始下载内核的源码。如果是其他的手机,只需要这一步下载内核的步骤改一下,将guacamole
的代号改成你手机对应的代号
source build/envsetup.sh
lunch aosp_guacamole-eng
开始编译
croot
mka bacon -j$(nproc --all)
我是先编译一遍系统看看有没有什么错误,编译通过之后在添加kernelsu,编译boot.img
内核加入kernelsu
先进入内核源码的目录
cd kernel/oneplus/sm8150
执行脚本自动添加文件补丁到内核
proxychains4 curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
修改内核参数
看了下PixelExperience的内核配置文件和Lineageos是同一个。都在kernel/oneplus/sm8150/arch/arm64/configs/vendor/sm8150-perf_defconfig
,在这个文件最后加上
CONFIG_KPROBES=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBE_EVENTS=y
编译内核
make bootimage
刷入手机
进入fastboot模式,然后将boot.img
输入手机即可
fastboot flash boot .\boot.img
如果你怕刷了boot无法开机,可以先fastboot boot .\boot.img
临时输入,如果开机正常,再永久刷入
安装管理器
编译的boot文件
如果你也是一加7Pro手机,并且用的PixelExperience13plus的系统,可以直接刷我的这个boot.img。
下载地址:https://www.123pan.com/s/ihEKVv-UJWx.html 提取码:9oSv
如果是其他PixelExperience或Lineageos支持的手机,需要我编译boot.img的,请留言或私聊我,我有时间就一起编译一下。
我只能帮忙编译最新的系统(Lineageos20和PixelExperience13),不然磁盘受不了,一个系统得300G的磁盘大小。
参考
- Build for guacamole - PixelExperience Wiki
- 如何为非 GKI 内核集成 KernelSU | KernelSU