Skip to content
This repository was archived by the owner on Jun 16, 2026. It is now read-only.

RKSU for MT6853

RKSU for MT6853 #31

Workflow file for this run

name: Build(rsuntk KSU legacy) MT6853 kernel
on:
workflow_dispatch:
inputs:
BBR:
type: boolean
description: "是否启用 BBR 加速(不了解请不要启用)"
required: false
default: false
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: 检出仓库
uses: actions/checkout@v4
- name: 构建编译内核环境
run: |
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
git make bc bison ccache openssl dos2unix zip unzip kmod cpio flex \
libelf-dev curl libssl-dev libtfm-dev wget device-tree-compiler ca-certificates \
python3 python-is-python3 binutils binutils-aarch64-linux-gnu \
binutils-arm-linux-gnueabi gcc-multilib g++-multilib libc6-dev-i386 \
libncurses5 libncursesw5-dev rsync patch
- name: 下载 GCC 工具链 (Google 4.9)
run: |
mkdir -p $GITHUB_WORKSPACE/kernel_workspace && cd $GITHUB_WORKSPACE/kernel_workspace
mkdir -p gcc64 gcc32
wget -qO gcc-aarch64.tar.gz https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/+archive/refs/tags/android-12.1.0_r27.tar.gz
tar -xzf gcc-aarch64.tar.gz -C gcc64/
wget -qO gcc-arm.tar.gz https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/+archive/refs/tags/android-12.1.0_r27.tar.gz
tar -xzf gcc-arm.tar.gz -C gcc32/
- name: 下载 Clang 工具链 (crDroid clang-10)
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
git clone --depth=1 https://github.com/crdroidandroid/android_prebuilts_clang_host_linux-x86_clang-6443078 -b 10.0 clang-aosp
- name: 下载内核源码
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
git clone --depth=1 https://github.com/sanba0519/android_kernel_4.14_MT6853 android-kernel
- name: 集成 rsuntk KernelSU 并注入钩子
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel
# 1. 彻底清理
rm -rf drivers/ksu_core KernelSU_Tmp
sed -i '/ksu_core/d;/KSU/d' drivers/Kconfig drivers/Makefile || true
# 2. 克隆 Legacy 分支
git clone --depth=1 https://github.com/rsuntk/KernelSU KernelSU_Tmp -b v3.0.0-30-legacy
# 3. 地毯式搜索 Kconfig 并拷贝整个源码目录
mkdir -p drivers/ksu_core
KCONFIG_FILE=$(find KernelSU_Tmp -type f -name "Kconfig" | head -n 1)
if [ -z "$KCONFIG_FILE" ]; then
echo "ERROR: 仓库中找不到任何 Kconfig 文件!"
ls -R KernelSU_Tmp | head -n 20
exit 1
fi
KSU_SOURCE_DIR=$(dirname "$KCONFIG_FILE")
echo "发现 KSU 源码目录:$KSU_SOURCE_DIR"
cp -rf "$KSU_SOURCE_DIR"/* drivers/ksu_core/ || { echo "拷贝失败"; exit 1; }
chmod -R +w drivers/ksu_core
rm -rf KernelSU_Tmp
# 4. 检查拷贝结果
echo "=== 拷贝结果检查 ==="
ls -l drivers/ksu_core/Kconfig drivers/ksu_core/Makefile drivers/ksu_core/*.c || { echo "Kconfig 或源文件缺失!"; exit 1; }
# 5. 自动检测前缀
cd drivers/ksu_core
if grep -q -e "rksu_handle_execveat" -e "rksu_handle_" *.c *.h 2>/dev/null; then
KSU_PREFIX="rksu"
elif grep -q -e "ksu_handle_execveat" -e "ksu_handle_" *.c *.h 2>/dev/null; then
KSU_PREFIX="ksu"
else
KSU_PREFIX="ksu"
echo "WARNING: 未检测到前缀,使用默认 ksu_"
fi
cd ../../
echo "检测到的 KSU 前缀:${KSU_PREFIX}_handle_"
# 6. 重写 Makefile
if [ -f "drivers/ksu_core/kernelsu.c" ]; then
echo "obj-y += kernelsu.o" > drivers/ksu_core/Makefile
else
echo "obj-y += ksu.o" > drivers/ksu_core/Makefile
fi
echo "ccflags-y += -I\$(srctree)/drivers/ksu_core" >> drivers/ksu_core/Makefile
# 7. 注入顶级构建系统
sed -i '1i source "drivers/ksu_core/Kconfig"' drivers/Kconfig
sed -i '1i obj-y += ksu_core/' drivers/Makefile
# 8. 清理编码 + 旧痕迹(全局清理一次)
find drivers/ksu_core -type f -exec dos2unix {} \; || true
sed -i "/${KSU_PREFIX}_handle/d;/ksu_handle/d;/rksu_handle/d;/KSU/d" fs/*.c kernel/*.c || true
# 9. 直接使用 RKSU 官方 patch 注入
echo "KSU_LOG: 开始下载并应用 RKSU 官方 4.14 patch"
# 下载官方 patch
wget https://github.com/rksuorg/kernel_patches/raw/master/manual_hook/kernel-4.14.patch -O ksu-4.14.patch || { echo "下载 patch 失败"; exit 1; }
# 应用 patch(-p1 是标准,忽略空格差异)
patch -p1 < ksu-4.14.patch || { echo "patch 应用失败"; cat ksu-4.14.patch; exit 1; }
# 清理下载的文件(可选)
rm -f ksu-4.14.patch
echo "KSU_LOG: 官方 patch 应用成功,检查关键文件是否修改"
git diff --stat fs/open.c fs/exec.c fs/stat.c fs/read_write.c kernel/reboot.c || echo "无变化?可能源码已包含补丁"
- name: 设置 ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: mtk6853-ksu-v3-legacy
max-size: 3G
- name: 配置内核并开启 KSU
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel
export PATH=$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/bin:$GITHUB_WORKSPACE/kernel_workspace/gcc64/bin:$GITHUB_WORKSPACE/kernel_workspace/gcc32/bin:$PATH
export ARCH=arm64
export SUBARCH=arm64
make O=out mt6853-ss_defconfig
# 开启 KSU
./scripts/config --file out/.config \
--enable CONFIG_KSU \
--enable CONFIG_KSU_MANUAL_HOOK \
--enable CONFIG_MODULES \
--disable CONFIG_KSU_USE_KPROBES \
--disable CONFIG_KPROBES \
--disable CONFIG_KPROBE_EVENTS \
--disable CONFIG_HAVE_KPROBES
make O=out olddefconfig
if [ "${{ github.event.inputs.BBR }}" = "true" ]; then
echo "启用 BBR..."
./scripts/config --file out/.config \
--enable CONFIG_TCP_CONG_BBR \
--enable CONFIG_NET_SCH_FQ
make O=out olddefconfig
else
echo "不启用 BBR..."
fi
- name: 开始编译内核
run: |
cd $GITHUB_WORKSPACE/kernel_workspace/android-kernel
export PATH=$GITHUB_WORKSPACE/kernel_workspace/clang-aosp/bin:$GITHUB_WORKSPACE/kernel_workspace/gcc64/bin:$GITHUB_WORKSPACE/kernel_workspace/gcc32/bin:$PATH
export ARCH=arm64
export SUBARCH=arm64
export KBUILD_BUILD_HOST=coolapk@sanba
export KBUILD_BUILD_USER=GitHub@sanba0519
make -j$(nproc --all) O=out \
CC="ccache clang" \
CLANG_TRIPLE=aarch64-linux-gnu- \
CROSS_COMPILE=aarch64-linux-android- \
CROSS_COMPILE_ARM32=arm-linux-androideabi- \
LD=ld.lld \
Image.gz-dtb 2>&1 | tee build.log || { tail -n 100 build.log; exit 1; }
- name: 制作 AnyKernel3 卡刷包
run: |
cd $GITHUB_WORKSPACE/kernel_workspace
git clone --depth=1 https://github.com/sanba0519/AnyKernel3
cd AnyKernel3
sed -i 's|block=/dev/block/platform/omap/omap_hsmmc.0/by-name/boot;|block=/dev/block/by-name/boot;|g' anykernel.sh
sed -i 's/do.devicecheck=1/do.devicecheck=0/g' anykernel.sh
sed -i 's/is_slot_device=0;/is_slot_device=0;/g' anykernel.sh
sed -i '/cmdline=/a cmdline="androidboot.selinux=permissive"' anykernel.sh
if [ -f "../android-kernel/out/arch/arm64/boot/Image.gz-dtb" ]; then
cp ../android-kernel/out/arch/arm64/boot/Image.gz-dtb Image.gz-dtb
elif [ -f "../android-kernel/out/arch/arm64/boot/Image.gz" ]; then
cp ../android-kernel/out/arch/arm64/boot/Image.gz Image.gz
else
echo "ERROR: Kernel image not found!"
exit 1
fi
rm -rf .git* README.md .github
- name: 上传 AnyKernel3 卡刷包
uses: actions/upload-artifact@v4
with:
name: MT6853-RKSU-AnyKernel3
path: kernel_workspace/AnyKernel3/*