分享

在RedmiK40(alioth)上使用kernelsu

 zcgege 2023-02-03 发布于广东

1、设备信息:

内核版本 4.19.245-Marisa 

设备架构 aarch64 

系统版本 #1 SMP PREEMPT Thu Jan 12 10:48:54 CST 2023 

API 版本 31 

ABI 支持 arm64-v8a, armeabi-v7a, armeabi 

系统指纹 Redmi/alioth/alioth:12/SKQ1.211006.001/V13.0.7.0.SKHCNXM:user/release-keys 

安全补丁 2022-08-01

2、编译设置

编译主机是WSL2下的ubuntu18.04,用户为root,在/root/目录下进行编译 

1>首先安装开发环境相关包

sudo apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev unzip openjdk-8-jdk language-pack-zh-hans

2>获取k40内核源码 官方的版本是Anroid11(R)的内核源码,如果你手机还是anroid 11,可以试试官方的

git clone --depth=1 https://github.com/MiCode/Xiaomi_Kernel_OpenSource -b alioth-r-oss

我手机已经是Android12(S)版本了,所以这里选择了第三方的rebase

git clone https://github.com/Laulan56/android_kernel_xiaomi_sm8250.git xm_sm8250

我这里是直接下载的zip包,没用git克隆 

3>下载跨平台编译链工具 需要两个工具,gcc和clang,gcc是google官方的gcc,clang是Snapdragon LLVM Compiler Tools(sdclang) 谷歌官方的地址我没下载成功,

gcc是在这个仓库下载的jonascardoso / toolchain_aarch64_travis — Bitbucket

sdclang 下载地址,选择8.0.6版本的Snapdragon LLVM Compiler - Tools - Qualcomm Developer Network

下载后然后解压,整理下目录图片4> 把kernelSu加入内核 在/root/kernel_src/xm_sm8250目录下执行命令

root@DESKTOP-4IG0GEI:~/kernel_src/xm_sm8250# cp -r ../KernelSU/kernel drivers/kernelsu
root@DESKTOP-4IG0GEI:~/kernel_src/xm_sm8250# echo 'obj-y += kernelsu/' >> drivers/Makefile

5> 开启内核的KPROBES支持 在arch/arm64/configs/alioth_defconfig文件末尾加上以下内容

CONFIG_KPROBES=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBE_EVENTS=y

3、开始编译

在/root/kernel_src/xm_sm8250目录下建立一个编译脚本build.sh,并添加执行权限

#! /bin/bash
export ARCH=arm64
export SUBARCH=arm64

make O=out alioth_defconfig
PATH='/root/toolchains/sdclang806/bin:$PATH' \
make -j$(nproc) O=out \
        ARCH=arm64 \
        CC=clang \
        CLANG_TRIPLE=aarch64-linux-gun- \
        CROSS_COMPILE=/root/toolchains/google_gcc49/bin/aarch64-linux-android- \
        | tee kernel.log

执行编译脚本,开始编译

./build.sh
  • 编译 success 后, 会在 out/arch/arm64/boot 目录下生成 Image 文件, 这就是编译出来的内核文件

4、打包内核并刷入

1> 首先解包原来的boot镜像(可以自己提取,也可以去刷机包里找boot.img) 进入/root/boot_ksu目录下执行一下命令

../tools/magiskboot unpack ../boot.img

图片2> 替换kernel

 cp ../kernel_src/xm_sm8250/out/arch/arm64/boot/Image ./kernel

3> 重新打包boot

../tools/magiskboot repack ../boot.img ../boot_ksu.img

图片4> 刷入boot_ksu.img镜像就好了 这里就跟刷magisk修补的boot一个操作

fastboot flash boot boot_ksu.img

除了通过fastboot,也可以用anykernel3打包用twrp卡刷刷入,个人感觉fastboot更快些

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多