图片

FlyLoongZ's Blog

SukiSU Ultra内核编译

发布于: 2025-09-02,更新于: 2025-10-09

我的SukiSU Ultra内核编译记录

编译的内核使用在Redmi Note 12 Tubro上,仅供参考

目录

1. 编译前准备

1.1 编译环境准备

  • 我使用的Arch Linux,直接运行sudo pacman -S repo安装repo工具,其他安装方式见https://source.android.google.cn/docs/setup/start/requirements#repo
  • 然后安装编译内核所需的工具,找到一个空目录作为编译的目录,在目录下面运行
# 初始化存储库
repo init -q -u https://github.com/FlyLoongZ/kernel_build_scripts -b repo_manifest
# 同步存储库
repo sync
  • 同步完成目录结构如下
空目录
├── build
├── host_tools
├── prebuilts 
└── prebuilts-master

1.2 内核源码准备

  • 使用msm-5.10高通内核源码,分支为kernel.lnx.5.10.r1-rel,克隆到编译目录
git clone https://git.codelinaro.org/clo/la/kernel/msm-5.10.git -b kernel.lnx.5.10.r1-rel common
  • 克隆完成目录结构如下
空目录
├── build
├── common
├── host_tools
├── prebuilts 
└── prebuilts-master

1.3 安装SukiSU Ultra

# 进入common(内核所在目录)
cd common
# 安装SukiSU Ultra
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-main

1.4 给内核打补丁

1.4.1 补丁准备

  • 克隆susfsksu ,分支为gki-android12-5.10
git clone https://gitlab.com/simonpunk/susfs4ksu.git -b gki-android12-5.10
  • 下载来自SukiSU_patch的补丁69_hide_stuff.patchhooks/syscall_hooks.patch

69_hide_stuff.patch 用于隐藏类原生信息和隐藏zygote修改, syscall_hooks.patch用于启用SukiSU-Ultra的Manual hook功能

1.4.2 安装补丁

  • 进入susfsksukernel_patches目录,将目录下对应目录文件复制到common对应目录,由于我们使用的是SukiSU Ultrasusfs分支所以不用复制KernelSU文件夹内补丁
  • 将之前下载的69_hide_stuff.patchsyscall_hooks.patch复制到common目录
# 在common目录
patch -p1 < 50_add_susfs_in_gki-android12-5.10.patch
patch -p1 < 69_hide_stuff.patch
patch -p1 < syscall_hooks.patch

1.5 修改内核配置

1.5.1 修改配置

  • 在common目录运行下面的命令进入内核配置编辑tui
make ARCH=arm64 gki_defconfig
make ARCH=arm64 menuconfig
  • /键进入搜索内核配置界面
  • 输入CONFIG_KSU_MANUAL_HOOK 搜索页面
  • 确认键来到下图界面 搜索结果
  • 1来到对应配置设置 配置设置
  • 确认键进入修改配置界面
  • 使用方向键移动到对应选项,按确认键修改配置 修改配置
  • /搜索CONFIG_KSU_SUSFS_SUS_SU
  • 空格修改CONFIG_KSU_SUSFS_SUS_SU为禁用 修改配置
  • 最后使用方向键移动到<save>保存修改
  • 使用Ctrl + C退出tui
  • 运行make ARCH=arm64 savedefconfig得到defconfg文件
  • 运行make ARCH=arm64 mrproper清理环境

1.5.2 保存配置

  • 使用Meld工具比较defconfigarch/arm64/configs/gki_defconfig
  • 找到上面修改的配置,点击gui上的箭头插入修改到gki_defconfig,然后保存修改 Meld

2. 编译内核

# 在你选择的空目录运行
LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 BUILD_NUMBER=13968086 build/build.sh -j$(nproc --all) | tee build.log

BUILD_NUMBER来自Android CI,编译后产物在out/android12-5.10/dist目录

3. 打包内核

  • 克隆AnyKernel3,将内核Image复制到其目录
  • 修改anykernel.sh中对应配置为下面的值
do.devicecheck=1
device.name1=marble

BLOCK=auto;
IS_SLOT_DEVICE=auto;
RAMDISK_COMPRESSION=auto;
PATCH_VBMETA_FLAG=auto;
  • 将目录文件打包为zip压缩包
# 在AnyKenrnel3根目录运行,也可以手动打包(排除.git, .github, README.md文件)
zip -r9 UPDATE-AnyKernel3.zip * -x .git README.md 

参考