为一加七Pro(LineageOs17.1 4.14内核版本)编译KernelSu

查看 382|回复 9
作者:qwertyuiop1822   
编译内核
因为一加七的内核版本是4.14,所以想使用kernelsu,需要自己将kernelsu编译到内核里。
我使用的系统是:LineageOS17.1,对于之后的lineage版本同样适用,只是拉取的源代码不一样。刷机教程请看:wsl2-ubuntu20编译Lineage17(Android10)
教程里是编译LineageOs系统的流程,不过跟aosp不一样的是,lineage编译系统时会同时编译内核。所以可以修改内核文件,直接编译整个系统。(脱离系统我单独编译内核的代码失败了,一堆C语言的报错,我解决不了,有的说gcc这些编译工具需要用lineage源码里的,我就是用的源码,也是一样)
开始操作
参考教程: 如何为非 GKI 内核集成 KernelSU
以下提到的目录都是以lineage源码根目录为当前目录,假设源码目录是/home/A/Lineage,目录是kernel/oneplus/sm8150,则绝对路径是/home/A/Lineage/kernel/oneplus/sm8150
假设你已经单独编译系统成功,并且编译的刷机包刷入系统也是成功运行的。那就可以进行下一步,将kernelsu的代码加入到内核源码中
一加七Pro的内核代码在kernel/oneplus/sm8150,cd进到这个目录。先下载kernelsu的源码,注意科学,比如用proxychain
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
下载完成后需要修改内核参数来开启kprobe,一加七Pro的内核参数配置文件可以在device/oneplus/guacamole/BoardConfig.mk这个文件里看到,参数是TARGET_KERNEL_CONFIG\


1.png (29.89 KB, 下载次数: 0)
下载附件
1
2023-5-3 20:59 上传

可以看到路径是vendor/sm8150-perf_defconfig,用tree命令看一下全路径是啥。图里的trle是我对alias trle='tree -NCfhl'做的一个别名,参数太多记不住


2.png (26.87 KB, 下载次数: 0)
下载附件
2023-5-3 21:00 上传

打开这个文件kernel/oneplus/sm8150/arch/arm64/configs/vendor/sm8150-perf_defconfig,就在最后一行加入三个参数:
CONFIG_KPROBES=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBE_EVENTS=y
如何修改内核参数
这一段我说下怎么修改内核参数,在编译kernelsu并不会用到,可以跳过。因为在编译kernelsu时只需要将上面三个参数加到内核配置文件就可以。如果你想修改其他参数时,可能会有帮助。
比如我看到一些文章说,开启内核参数让手机原生支持docker,就需要开启很多的参数。但是我测试了参数是开启了,内核编译通不过了,还是一堆C语言的错误,改了一个又来一个,最后放弃了
以开启kprobe为例,配置参数是CONFIG_KPROBES。在kernel/oneplus/sm8150目录使用make menuconfig,然后按下/,输入CONFIG_KPROBES来查找(可以不加前面的CONFIG_),结果如图所示


3.png (58.49 KB, 下载次数: 0)
下载附件
2023-5-3 21:00 上传

搜出来多个结果,一般参数名没错的话,都是第一个结果。
[ol]
  • Symbol: 前面是参数名,后面的中括号是值开启的状态,有三种: n(关闭)、y(开启)和m(作为模块开启)
  • Prompt: 在make menuconfig配置界面叫什么名字,找到这个名字,按空格键让它前面的中括号里变成*就是开启了
  • Location: 该选项所在位置。-->是表示层级,看下面的解释
  • Depends on: 所需的依赖。需要先让所有依赖都变成y才能在Location指定的位置下找到有Prompt
  • Selects: 附加选项。如果选择这个,会一起选择。这个不用管,会自己加上
    [/ol]
    下图,如果后面带有-->说明还有下一级,最下面选择Select(默认就是)按回车可以进去,选择Exit按回车则是返回上一级或者退出,只需要按照一级一级找下去,空格开启就行


    4.png (66.34 KB, 下载次数: 0)
    下载附件
    2023-5-3 21:00 上传

    因为上面有个MODULES依赖没有勾选,所以你在General setup下是看不到有Kprobes这个选项的。先按下/搜索MODULES找一下在哪个路径下然后勾选,之后在进入General setup下就能看到Kprobes勾选即可。移到Save然后Exit退出就会在当前目录下生成一个.config文件,将该文件覆盖掉原先的配置文件sm8150-perf_defconfig
    开始编译
    跟编译系统一样,修改内核后,最好是在源码根目录执行make clean清理一下,不然会出现一些奇怪的错误
    export LC_ALL=C
    source build/envsetup.sh
    breakfast guacamole
    brunch guacamole
    之后就可以看到舒适的一幕


    5.jpg (220.87 KB, 下载次数: 0)
    下载附件
    2023-5-3 21:04 上传

    接着输入手机,安装kernelsu管理器 (最下面有个apk文件)


    6.png (154.04 KB, 下载次数: 0)
    下载附件
    2023-5-3 21:00 上传

    内核, 参数

  • redom   

    学习了,我想给小米6弄一个
    youcome   

    正好需要,感谢分享
    sh047   

    我是一加7,正好,谢谢
    lzy0819   

    感谢楼主分享,收藏了
    ku-yu   

    感谢楼主分享
    xtss97   

    纯技术流的,辛苦
    雾都孤尔   

    学习一下,有时间实操。感谢分享。
    no2013   

    大哥给我k40game也整一个!
    达尔i   

    我也是一加用户,从3T开始使用的。为的就是能刷机折腾,并且需要日常代{过}{滤}理这方面。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部