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

news2024/9/29 9:23:48

编译内核

因为一加七的内核版本是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
在这里插入图片描述
可以看到路径是vendor/sm8150-perf_defconfig,用tree命令看一下全路径是啥。图里的trle是我对alias trle='tree -NCfhl'做的一个别名,参数太多记不住
在这里插入图片描述
打开这个文件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_),结果如图所示
在这里插入图片描述
搜出来多个结果,一般参数名没错的话,都是第一个结果。

  1. Symbol: 前面是参数名,后面的中括号是值开启的状态,有三种: n(关闭)、y(开启)和m(作为模块开启)
  2. Prompt: 在make menuconfig配置界面叫什么名字,找到这个名字,按空格键让它前面的中括号里变成*就是开启了
  3. Location: 该选项所在位置。-->是表示层级,看下面的解释
  4. Depends on: 所需的依赖。需要先让所有依赖都变成y才能在Location指定的位置下找到有Prompt
  5. Selects: 附加选项。如果选择这个,会一起选择。这个不用管,会自己加上

下图,如果后面带有-->说明还有下一级,最下面选择Select(默认就是)按回车可以进去,选择Exit按回车则是返回上一级或者退出,只需要按照一级一级找下去,空格开启就行
在这里插入图片描述

因为上面有个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

之后就可以看到舒适的一幕
在这里插入图片描述
接着输入手机,安装kernelsu管理器 (最下面有个apk文件)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/486172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue diff算法与虚拟dom知识整理(3) 了解h函数和虚拟节点概念 实现虚拟节点上dom树

虚拟dom之前我们也有了基本的了解 简单说 就是用js数据结构来描述html的dom结构树 首先 为什么要用虚拟dom啊? 官方给出的回答是 diff最小量精细化算法是发生在虚拟dom上的 也就是 我们之前说的 节点与节点比较 并不是发生在html元素上的 而是发生在js中的虚拟dom上…

【C++学习】类和对象--多态【待补充】

多态的基本语法 多态是C面向对象三大特性之一 静态多态: 函数重载和运算符重载属于静态多态,复用函数名(函数地址早绑定,编译阶段确定函数地址) 动态多态: 派生类和虚函数实现运行时多态(函数地…

centos7.6 yum 安装mysql

目录 1. 删 mariadb / 自带MySQL 2 安装wget命名 3 下载并安装MySQL官方的 Yum Repository 4 使用yum安装mysql 5 启动 6 获取密码 7 登录 -> 没有获取到 就直接按回车 不输入 8 设置密码 及权限 --> root 账号所有语句报错 9 参考 1. 删 mariadb / 自带MySQL…

《计算机网络——自顶向下方法》精炼——2.7.2(TCP套接字编程)

“学习的敌人是自己的满足。” —— 叶圣陶 文章目录 TCP套接字编程TCP套接字编程概述客户进程服务器进程 TCP套接字编程 TCP套接字编程概述 TCP是一个面向连接的运输层协议,因此可以分为发起连接的阶段和传输阶段。 发起连接时,客户进程创建一个客户…

【LeetCode】221.最大正方形

221.最大正方形(中等) 题解 对于在矩阵内搜索正方形或长方形的题型,一种常见的做法是:定义一个二维 dp 数组,其中 dp[i][j] 表示满足题目条件的、以(i,j)为右下角的正方形或长方形属性。在本题中…

【备战蓝桥杯国赛-国赛真题】费用报销

题目链接:https://www.dotcpp.com/oj/problem2696.html 思路 读完题,再看一眼数据范围,这道题的做法也就确定了——DP。 DP的题目往往很容易辨识出来,所以我们就往DP上想了,第一要素是选出的所有票据里面&#xff0c…

【LeetCode】64. 最小路径和

64. 最小路径和(中等) 方法一:常规动态规划 思路 定义一个二维 dp 数组,其中 dp[i][j]表示从左上角开始到(i, j)位置的最优路径的数字和。因为每次都只能向下或者向右移动,所以很容易发现 dp数组…

汽车行业V模型开发详解

在新能源汽车开发过程中,通常会采用V模型(V-Model)进行系统开发。V模型是一种基于需求分析、体系架构设计、硬件和软件开发、集成测试以及产品验证的系统工程方法。 下面简要介绍新能源汽车V模型开发的主要阶段: V模型开发&…

encrypted勒索病毒攻击nas服务器,服务器中了勒索病毒解密数据恢复

近年来,勒索病毒的攻击技术不断升级,各种加密型的病毒不断出现,给我们工作和生活带来了很大困扰。其中,encrypted勒索病毒攻击NAS网络存储设备已经变得越来越常见。而这次我们将为大家探讨如何预防encrypted勒索病毒攻击NAS服务器…

springboot+vue教师人事档案管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的教师人事档案管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者&#xff1…

架构集群部署

这是一个简单的集群框架 192.168.142.10做负载均衡(主) 192.168.142.20(副) 先做keepalive 两台nginx做七层反向代理(动静分离) 192.168.142.30 192.168.142.40 部署tomcat做多实例部署 192.168.14…

linux驱动开发 - 11_Linux 下的驱动分离与分层

文章目录 11. Linux 下的驱动分离与分层1 驱动的分隔与分离2 驱动的分层 11. Linux 下的驱动分离与分层 1 驱动的分隔与分离 linux是一个成熟、复杂、庞大的操作系统,代码的重用性很重要,不然会在linux内核存在大量的无意义重复的代码。尤其的驱动程序…

进阶Spring(2)-BeanFactory和ApplicationContext实现

🏠个人主页:阿杰的博客 💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨 目前状况🎉:24届毕业生,奋斗在找实习的路上🌟 &#x1…

[Data structure]单链表常见算法题

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现 ⭐如果觉得文章写的不错,欢迎点个关注一…

Hibernate(二)——Springboot整合Hibernate

在了解了Hibernate后&#xff0c;进一步将Hibernate和Springboot整合。 目录 引入依赖配置文件代码BeanDao层Service层Controller层 测试JpaRepository接口 引入依赖 <!--引入hibernate--> <dependency><groupId>org.springframework.boot</groupId>…

【大数据处理与可视化】四、数据预处理

【大数据处理与可视化】四、数据预处理 实验目的实验内容实验步骤一、案例——预处理部分地区信息1、导包2、读取文件3、检查并删除重复数据北京天津&#xff08;无重复数据&#xff09; 4、检查缺失值北京&#xff08;无缺失值&#xff09;天津&#xff08;向前填充&#xff0…

10分钟学会搭建sovits第一篇

So-vits-svc 基于端到端架构的VITS和soft-vc&#xff0c;用户只需准备几十分钟到几个小时不等的语音或歌声数据&#xff0c;就能制作&#xff08;训练&#xff09;属于自己的 AI 声库 &#xff08;前提是你的显卡足够给力&#xff09;&#xff0c;将一段语音或歌声转换为你想要…

简易时钟-QT学习

1 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> //绘制事件 #include <QPainter> //画家类 #include <QPaintDevice> #include <cmath> // #include <QPainterPath> #include <QTime> //时间类…

基于蜣螂算法的无人机航迹规划-附代码

基于蜣螂算法的无人机航迹规划 文章目录 基于蜣螂算法的无人机航迹规划1.蜣螂搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用蜣螂算法来优化无人机航迹规划。 1.蜣螂搜索算法 …

【LeetCode】646. 最长数对链

646. 最长数对链&#xff08;中等&#xff09; 思路 这道题和 300. 最长递增子序列 类似&#xff0c;我们可以定义 dp 数组&#xff0c;其中 dp[i] 表示以 i 结尾的子序列的性质。在处理好每个位置后&#xff0c;统计一遍各个位置的结果即可得到题目要求的结果。 但是题目中强…