Showing preview only (245K chars total). Download the full file or copy to clipboard to get everything.
Repository: Xiaomichael/OnePlus-Actions
Branch: Build
Commit: 9fe3ed5d16cf
Files: 14
Total size: 221.3 KB
Directory structure:
gitextract_8shsx1ht/
├── .github/
│ └── workflows/
│ ├── Build Kernel Only.yml
│ ├── Build KernelSU Next.yml
│ ├── Build KernelSU.yml
│ ├── Build ReSukiSU.yml
│ ├── Build SukiSU Ultra.yml
│ ├── Clean_ccache.yml
│ └── Clean_workflows.yml
├── README.md
├── local/
│ ├── Build_KernelSU.sh
│ ├── Build_Next.sh
│ ├── Build_Only.sh
│ ├── Build_ReSukiSU.sh
│ └── Build_SukiSU.sh
└── script/
└── buildbot.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/Build Kernel Only.yml
================================================
name: Build Kernel Only
on:
workflow_dispatch:
inputs:
CPU:
description: "CPU分支"
required: true
type: choice
options:
- 'sm8750'
- 'sm8735'
- 'mt6991'
- 'sm8650'
- 'mt6989'
- 'sm8635'
- 'sm8550'
- 'sm8450'
- 'sm8475'
- 'sm7675'
- 'sm7635'
- 'sm7550'
- 'sm6375'
default: 'sm8650'
FEIL:
description: "手机型号"
required: true
type: choice
options:
- 'oneplus_13_b'
- 'oneplus_13s_b'
- 'oneplus_13t_b'
- 'oneplus_ace5_pro_b'
- 'oneplus_ace_6'
- 'oneplus_pad_2_pro_b'
- 'oneplus_pad_3_b'
- 'oneplus_ace5_ultra_b'
- 'oneplus_turbo_6'
- 'oneplus_12_b'
- 'oneplus_ace3_pro_b'
- 'oneplus_ace5_b'
- 'oneplus_13r_b'
- 'oneplus_pad2_b'
- 'oneplus_pad_pro_b'
- 'oneplus_ace5_race_b'
- 'oneplus_nord_5_b'
- 'oneplus_11_b'
- 'oneplus_12r_b'
- 'oneplus_ace2_pro_b'
- 'oneplus_ace3_b'
- 'oneplus_open_b'
- 'oneplus_10t_v'
- 'oneplus_11r_b'
- 'oneplus_ace2_b'
- 'oneplus_ace_pro_v'
- 'oneplus_10_pro_b'
- 'oneplus_ace_3v_b'
- 'oneplus_turbo_6v'
- 'oneplus_nord_4_b'
- 'oneplus_nord_ce4_lite_5g'
- 'oneplus_nord_ce4_b'
default: 'oneplus_12_b'
ANDROID_VERSION:
description: "内核安卓KMI版本"
required: true
type: choice
options:
- 'android15'
- 'android14'
- 'android13'
- 'android12'
default: 'android14'
KERNEL_VERSION:
description: "内核版本"
required: true
type: choice
options:
- '6.6'
- '6.1'
- '5.15'
- '5.10'
default: '6.1'
lz4kd:
description: "是否启用lz4kd(6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
bbg:
description: "是否启用BBG基带保护"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
bbr:
description: "是否启用BBR算法(对手机日用无太大意义甚至可能负优化)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
proxy:
description: "是否添加代理性能优化(联发科芯片跑的时候请关闭否则出现恶性问题)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
UNICODE_BYPASS:
description: "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
jobs:
build:
name: For ${{ github.event.inputs.FEIL }} lz4kd ${{ github.event.inputs.lz4kd }}
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_HARDLINK: "true"
CCACHE_MAXSIZE: 8G
steps:
- name: "🚀 Maximize Build Space | 最大化构建空间"
if: ${{ github.event.inputs.KERNEL_VERSION == '5.10' || github.event.inputs.KERNEL_VERSION == '5.15' }}
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 8192
temp-reserve-mb: 4096
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
- name: "⚙️ Setup Cache Env | 设置缓存环境"
run: |
echo "🔧 正在设置机型隔离缓存目录..."
echo "CCACHE_DIR=$HOME/.ccache_${{ github.event.inputs.FEIL }}_Kernel" >> $GITHUB_ENV
mkdir -p "$HOME/.ccache_${{ github.event.inputs.FEIL }}_Kernel"
echo "✅ 缓存目录已设置: $HOME/.ccache_${{ github.event.inputs.FEIL }}_Kernel"
- name: "🔐 Configure Git | 配置Git账户"
run: |
echo "🔧 正在配置Git用户信息..."
git config --global user.name "build"
git config --global user.email "2210077278@qq.com"
echo "✅ Git配置完成"
- name: "📦 Cache & Install Dependencies | 缓存 & 安装构建依赖"
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: python3 git curl ccache libelf-dev build-essential flex bison libssl-dev libncurses-dev liblz4-tool zlib1g-dev libxml2-utils rsync unzip gawk dos2unix
execute_install_scripts: true
- name: "💾 Restore ccache | 恢复ccache缓存"
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-Kernel
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-Kernel
ccache-${{ runner.os }}-Kernel
- name: "⚙️ Initialize ccache | 初始化ccache"
run: |
echo "🔧 正在初始化ccache..."
INIT_FLAG="${{ env.CCACHE_DIR }}/.ccache_initialized"
if command -v ccache >/dev/null 2>&1; then
if [ ! -f "$INIT_FLAG" ]; then
mkdir -p "${{ env.CCACHE_DIR }}"
ccache -M ${{ env.CCACHE_MAXSIZE }}
touch "$INIT_FLAG"
echo "🆕 ccache初始化完成"
else
echo "ℹ️ ccache已存在,跳过初始化"
fi
else
echo "⚠️ 未找到ccache命令,跳过初始化"
fi
# 显示缓存统计
ccache -s
echo "✅ ccache初始化流程完成"
- name: "📥 Install Repo Tool | 安装Repo工具"
run: |
echo "⬇️ 正在下载repo工具..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo工具安装完成"
- name: "⬇️ Clone Kernel Source | 克隆内核源码"
run: |
echo "🌐 正在初始化内核仓库..."
mkdir kernel_workspace && cd kernel_workspace
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${{ github.event.inputs.CPU }} -m ${{ github.event.inputs.FEIL }}.xml --depth=1
echo "🔄 同步代码库(使用$(nproc --all)线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
rm kernel_platform/common/android/abi_gki_protected_exports_* || echo "No protected exports!"
rm kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "No protected exports!"
# Remove -dirty in kernel version
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "${{ github.event.inputs.KERNEL_VERSION }}" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sudo sed -i "s/-4k/$ESCAPED_SUFFIX/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核配置完成"
- name: "⚡ Setup Baseband-guard | 配置 Baseband-guard"
if: ${{ github.event.inputs.bbg == 'On' }}
run: |
set -e
cd kernel_workspace/kernel_platform/common
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
- name: "🔧 Setup ZRAM | 配置 ZRAM"
run: |
cd kernel_workspace
echo "⬇️ 下载ZRAM补丁..."
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
echo "📝 复制补丁文件..."
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
if [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.15" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
# Copy lz4k from ShirkNeko
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
echo "🔧 应用补丁..."
cd ./common
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
echo "📦 应用lz4+zstd补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
echo "📦 应用lz4补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "🚀 应用lz4kd补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
echo "✅ 所有补丁应用完成"
- name: "⚙️ Apply SCHED Patch | 应用风驰补丁"
if: ${{ github.event.inputs.KERNEL_VERSION == '6.6' }}
run: |
cd kernel_workspace/kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "${{ github.event.inputs.FEIL }}" == "oneplus_ace5_ultra" ] || [ "${{ github.event.inputs.FEIL }}" = "oneplus_ace5_ultra_b" ]; then
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "mt6991"
else
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "sm8750"
fi
cp ./SCHED_PATCH/fengchi_${{ github.event.inputs.FEIL }}.patch ./
if [[ -f "fengchi_${{ github.event.inputs.FEIL }}.patch" ]]; then
echo "⚙️ 开始应用风驰补丁"
dos2unix "fengchi_${{ github.event.inputs.FEIL }}.patch"
patch -p1 -F 3 < "fengchi_${{ github.event.inputs.FEIL }}.patch"
echo "✅ 完美风驰补丁应用完成"
else
sed -i '1iobj-y += hmbird_patch.o' drivers/Makefile
wget https://github.com/Numbersf/Action-Build/raw/SukiSU-Ultra/patches/hmbird_patch.patch
echo "⚙️ 正在打OGKI转换GKI补丁"
patch -p1 -F 3 < hmbird_patch.patch
echo "✅ OGKI转换GKI_patch完成"
fi
- name: "⚙️ Configure Kernel Options | 配置内核选项"
run: |
echo "⚙️ 正在配置内核编译选项..."
cd kernel_workspace/kernel_platform
if [ "${{ github.event.inputs.bbg }}" == "On" ]; then
echo "⚡ 启用BBG中..."
echo 'CONFIG_BBG=y' >> ./common/arch/arm64/configs/gki_defconfig
echo 'CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,baseband_guard"' >> ./common/arch/arm64/configs/gki_defconfig
fi
# 添加对 Mountify (backslashxx/mountify) 模块的支持
echo "CONFIG_TMPFS_XATTR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TMPFS_POSIX_ACL=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ github.event.inputs.bbr }}" == "On" ]; then
echo "🌐 启用BBR网络算法..."
echo "CONFIG_TCP_CONG_ADVANCED=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BBR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NET_SCH_FQ=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BIC=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_WESTWOOD=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_HTCP=n" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "📦 启用lz4kd压缩..."
echo "CONFIG_CRYPTO_LZ4KD=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_CRYPTO_LZ4K_OPLUS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_ZRAM_WRITEBACK=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
# Add O2 config
echo "📦 为6.1&6.6加入O2优化..."
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.proxy }}" == "On" ]; then
# Add proxy config
echo "📦 加入代理优化..."
echo "CONFIG_BPF_STREAM_PARSER=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_MAX=65534" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_PORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMARK=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTIP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_MAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETIFACE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_LIST_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_NAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_TARGET_MASQUERADE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.10" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.15" ]; then
echo "📦 正在为5.10系与5.15系配置lto中..."
DEFCONFIG=./common/arch/arm64/configs/gki_defconfig
sed -i 's/^CONFIG_LTO=n/CONFIG_LTO=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_NONE=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
grep -q '^CONFIG_LTO_CLANG_THIN=y' "$DEFCONFIG" || echo 'CONFIG_LTO_CLANG_THIN=y' >> "$DEFCONFIG"
fi
#跳过将uapi标准头安装到 usr/include 目录的不必要操作,节省编译时间
echo "CONFIG_HEADERS_INSTALL=n" >> ./common/arch/arm64/configs/gki_defconfig
# Remove check_defconfig
sed -i 's/check_defconfig//' ./common/build.config.gki
echo "✅ 内核配置更新完成"
- name: "🔨 Build Kernel | 编译内核"
run: |
echo "🏗️ 开始内核编译..."
export KBUILD_BUILD_USER="xiaoxiaow"
export KBUILD_BUILD_HOST="xiaoxiaow_build"
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ]; then
export KBUILD_BUILD_TIMESTAMP="Tue Mar 10 03:53:33 UTC 2026"
export KBUILD_BUILD_VERSION=1
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
export PATH="/usr/lib/ccache:$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r510928/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.15" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r450784e/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.10" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts-master/clang/host/linux-x86/clang-r416183b/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM_IAS=1 LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
fi
# 显示ccache统计信息
ccache -s
echo "✅ 内核编译完成"
- name: "📦 Package Kernel | 打包内核"
run: |
echo "📦 准备AnyKernel3打包环境..."
git clone https://github.com/Xiaomichael/AnyKernel3 --depth=1
rm -rf ./AnyKernel3/.git
mkdir -p kernel_workspace/kernel_platform/out/Final-Image-Find/
dir1=""
dir2=""
image_path=$(find "./kernel_workspace/kernel_platform/common/out/" -name "Image" | head -n 1)
if [ -n "$image_path" ]; then
dir1=$(dirname "$image_path")/
echo "✅ 成功找到 Image 文件"
fi
if [ -n "$image_path" ] && [ -f "$image_path" ]; then
echo "Image file finally located at: $image_path"
cp "$image_path" ./AnyKernel3/Image
cp "$image_path" kernel_workspace/kernel_platform/out/Final-Image-Find/Image
fi
- name: "🧠 Set Artifact Name | 设置产物名称"
id: set_name
run: |
if [ "${{ github.event.inputs.lz4kd }}" = "On" ]; then
echo "ARTIFACT_NAME=Anykernel3_${{ github.event.inputs.FEIL }}_lz4kd_Kernel_Only" >> $GITHUB_OUTPUT
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
echo "ARTIFACT_NAME=Anykernel3_${{ github.event.inputs.FEIL }}_lz4_zstd_Kernel_Only" >> $GITHUB_OUTPUT
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
echo "ARTIFACT_NAME=Anykernel3_${{ github.event.inputs.FEIL }}_lz4_Kernel_Only" >> $GITHUB_OUTPUT
else
echo "ARTIFACT_NAME=Anykernel3_${{ github.event.inputs.FEIL }}_Kernel_Only" >> $GITHUB_OUTPUT
fi
- name: "📤 Upload AnyKernel3 | 上传 AnyKernel3"
uses: actions/upload-artifact@v7
with:
name: ${{ steps.set_name.outputs.ARTIFACT_NAME }}
path: ./AnyKernel3/*
- name: "📝 Find zram.ko & crypto_zstdn.ko | 查找 zram.ko & crypto_zstdn.ko"
# if: ${{ github.event.inputs.lz4kd == 'On' }}
run: |
find -name zram.ko
find -name crypto_zstdn.ko
- name: "📤 Upload zram.ko | 上传 zram.ko"
# if: ${{ github.event.inputs.lz4kd == 'On' }}
uses: actions/upload-artifact@v7
with:
name: ${{ github.event.inputs.FEIL }}_zram.ko
path: ./kernel_workspace/kernel_platform/common/out/drivers/block/zram/zram.ko
================================================
FILE: .github/workflows/Build KernelSU Next.yml
================================================
name: Build KernelSU Next
on:
workflow_dispatch:
inputs:
CPU:
description: "CPU分支"
required: true
type: choice
options:
- 'sm8750'
- 'sm8735'
- 'mt6991'
- 'sm8650'
- 'mt6989'
- 'sm8635'
- 'sm8550'
- 'sm8450'
- 'sm8475'
- 'sm7675'
- 'sm7635'
- 'sm7550'
- 'sm6375'
default: 'sm8650'
FEIL:
description: "手机型号"
required: true
type: choice
options:
- 'oneplus_13_b'
- 'oneplus_13s_b'
- 'oneplus_13t_b'
- 'oneplus_ace5_pro_b'
- 'oneplus_ace_6'
- 'oneplus_pad_2_pro_b'
- 'oneplus_pad_3_b'
- 'oneplus_ace5_ultra_b'
- 'oneplus_turbo_6'
- 'oneplus_12_b'
- 'oneplus_ace3_pro_b'
- 'oneplus_ace5_b'
- 'oneplus_13r_b'
- 'oneplus_pad2_b'
- 'oneplus_pad_pro_b'
- 'oneplus_ace5_race_b'
- 'oneplus_nord_5_b'
- 'oneplus_11_b'
- 'oneplus_12r_b'
- 'oneplus_ace2_pro_b'
- 'oneplus_ace3_b'
- 'oneplus_open_b'
- 'oneplus_10t_v'
- 'oneplus_11r_b'
- 'oneplus_ace2_b'
- 'oneplus_ace_pro_v'
- 'oneplus_10_pro_b'
- 'oneplus_ace_3v_b'
- 'oneplus_turbo_6v'
- 'oneplus_nord_4_b'
- 'oneplus_nord_ce4_lite_5g'
- 'oneplus_nord_ce4_b'
default: 'oneplus_12_b'
ANDROID_VERSION:
description: "内核安卓KMI版本"
required: true
type: choice
options:
- 'android15'
- 'android14'
- 'android13'
- 'android12'
default: 'android14'
KERNEL_VERSION:
description: "内核版本"
required: true
type: choice
options:
- '6.6'
- '6.1'
- '5.15'
- '5.10'
default: '6.1'
SUSFS:
description: "是否启用SUSFS"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
lz4kd:
description: "是否启用lz4kd(6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
bbg:
description: "是否启用BBG基带保护"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
bbr:
description: "是否启用BBR算法(对手机日用无太大意义甚至可能负优化)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
proxy:
description: "是否添加代理性能优化(联发科芯片跑的时候请关闭否则出现恶性问题)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
UNICODE_BYPASS:
description: "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
jobs:
build:
name: For ${{ github.event.inputs.FEIL }} lz4kd ${{ github.event.inputs.lz4kd }} SUSFS ${{ github.event.inputs.SUSFS }}
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_HARDLINK: "true"
CCACHE_MAXSIZE: 8G
steps:
- name: "🚀 Maximize Build Space | 最大化构建空间"
if: ${{ github.event.inputs.KERNEL_VERSION == '5.10' || github.event.inputs.KERNEL_VERSION == '5.15' }}
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 8192
temp-reserve-mb: 4096
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
- name: "⚙️ Setup Cache Env | 设置缓存环境"
run: |
echo "🔧 正在设置机型隔离缓存目录..."
echo "CCACHE_DIR=$HOME/.ccache_${{ github.event.inputs.FEIL }}_Next" >> $GITHUB_ENV
mkdir -p "$HOME/.ccache_${{ github.event.inputs.FEIL }}_Next"
echo "✅ 缓存目录已设置: $HOME/.ccache_${{ github.event.inputs.FEIL }}_Next"
- name: "🔐 Configure Git | 配置Git账户"
run: |
echo "🔧 正在配置Git用户信息..."
git config --global user.name "build"
git config --global user.email "2210077278@qq.com"
echo "✅ Git配置完成"
- name: "📦 Cache & Install Dependencies | 缓存 & 安装构建依赖"
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: python3 git curl ccache libelf-dev build-essential flex bison libssl-dev libncurses-dev liblz4-tool zlib1g-dev libxml2-utils rsync unzip gawk dos2unix
execute_install_scripts: true
- name: "💾 Restore ccache (With SUSFS) | 恢复ccache缓存 (With SUSFS)"
if: ${{ github.event.inputs.SUSFS == 'On' }}
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-Next-SUSFS
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-Next-SUSFS
ccache-${{ runner.os }}-Next-SUSFS
- name: "💾 Restore ccache (Without SUSFS) | 恢复ccache缓存 (Without SUSFS)"
if: ${{ github.event.inputs.SUSFS == 'Off' }}
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-Next-NoSUSFS
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-Next-NoSUSFS
ccache-${{ runner.os }}-Next-NoSUSFS
- name: "⚙️ Initialize ccache | 初始化ccache"
run: |
echo "🔧 正在初始化ccache..."
INIT_FLAG="${{ env.CCACHE_DIR }}/.ccache_initialized"
if command -v ccache >/dev/null 2>&1; then
if [ ! -f "$INIT_FLAG" ]; then
mkdir -p "${{ env.CCACHE_DIR }}"
ccache -M ${{ env.CCACHE_MAXSIZE }}
touch "$INIT_FLAG"
echo "🆕 ccache初始化完成"
else
echo "ℹ️ ccache已存在,跳过初始化"
fi
else
echo "⚠️ 未找到ccache命令,跳过初始化"
fi
# 显示缓存统计
ccache -s
echo "✅ ccache初始化流程完成"
- name: "📥 Install Repo Tool | 安装Repo工具"
run: |
echo "⬇️ 正在下载repo工具..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo工具安装完成"
- name: "⬇️ Clone Kernel Source | 克隆内核源码"
run: |
mkdir kernel_workspace && cd kernel_workspace
echo "🌐 正在初始化内核仓库..."
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${{ github.event.inputs.CPU }} -m ${{ github.event.inputs.FEIL }}.xml --depth=1
echo "🔄 同步代码库(使用$(nproc --all)线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
rm kernel_platform/common/android/abi_gki_protected_exports_* || echo "No protected exports!"
rm kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "No protected exports!"
# Remove -dirty in kernel version
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "${{ github.event.inputs.KERNEL_VERSION }}" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sudo sed -i "s/-4k/$ESCAPED_SUFFIX/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核配置完成"
- name: "⚡ Setup Baseband-guard | 配置 Baseband-guard"
if: ${{ github.event.inputs.bbg == 'On'}}
run: |
set -e
cd kernel_workspace/kernel_platform/common
echo "🛠️ 正在设置BBG..."
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
- name: "⚡ Setup KernelSU Next | 配置 KernelSU Next"
run: |
cd kernel_workspace/kernel_platform
# 下载并执行设置脚本
echo "🛠️ 正在设置KernelSU Next..."
curl -LSs "https://raw.githubusercontent.com/pershoot/KernelSU-Next/dev-susfs/kernel/setup.sh" | bash -s dev-susfs
cd KernelSU-Next
KSU_VERSION=$(expr $(curl -sI "https://api.github.com/repos/KernelSU-Next/KernelSU-Next/commits?sha=dev&per_page=1" | grep -i "link:" | sed -n 's/.*page=\([0-9]*\)>; rel="last".*/\1/p') "+" 30000)
echo "KSUVER=$KSU_VERSION" >> $GITHUB_ENV
sed -i "s/DKSU_VERSION=11998/DKSU_VERSION=${KSU_VERSION}/" kernel/Makefile
echo "✅ KernelSU Next 配置完成"
- name: "🔧 Setup Patches | 配置补丁"
run: |
cd kernel_workspace
echo "⬇️ 下载所需补丁..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
git clone https://github.com/cctv18/susfs4oki.git -b oki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}
fi
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
echo "📝 复制补丁文件..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
cp ../susfs4oki/kernel_patches/50_add_susfs_in_gki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}.patch ./common/
cp ../susfs4oki/kernel_patches/fs/* ./common/fs/
cp ../susfs4oki/kernel_patches/include/linux/* ./common/include/linux/
else
cp ../kernel_patches/sukisu/scope_min_manual_hooks_v1.9.patch ./common/
fi
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
if [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.15" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
# Copy lz4k from ShirkNeko
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
echo "🔧 应用补丁..."
cd ./common
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
echo "📦 应用lz4+zstd补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
echo "📦 应用lz4补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "🚀 应用lz4kd补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
echo "📦 应用SUSFS补丁..."
patch -p1 < 50_add_susfs_in_gki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}.patch || true
cp ../../kernel_patches/69_hide_stuff.patch ./
patch -p1 -F 3 < 69_hide_stuff.patch
else
echo "📦 应用MANUAL_HOOK补丁..."
patch -p1 --fuzz=3 < scope_min_manual_hooks_v1.9.patch
fi
echo "✅ 所有补丁应用完成"
- name: "⚙️ Apply SCHED Patch | 应用风驰补丁"
if: ${{ github.event.inputs.KERNEL_VERSION == '6.6' }}
run: |
cd kernel_workspace/kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "${{ github.event.inputs.FEIL }}" == "oneplus_ace5_ultra" ] || [ "${{ github.event.inputs.FEIL }}" = "oneplus_ace5_ultra_b" ]; then
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "mt6991"
else
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "sm8750"
fi
cp ./SCHED_PATCH/fengchi_${{ github.event.inputs.FEIL }}.patch ./
if [[ -f "fengchi_${{ github.event.inputs.FEIL }}.patch" ]]; then
echo "⚙️ 开始应用风驰补丁"
dos2unix "fengchi_${{ github.event.inputs.FEIL }}.patch"
patch -p1 -F 3 < "fengchi_${{ github.event.inputs.FEIL }}.patch"
echo "✅ 完美风驰补丁应用完成"
else
sed -i '1iobj-y += hmbird_patch.o' drivers/Makefile
wget https://github.com/Numbersf/Action-Build/raw/SukiSU-Ultra/patches/hmbird_patch.patch
echo "⚙️ 正在打OGKI转换GKI补丁"
patch -p1 -F 3 < hmbird_patch.patch
echo "✅ OGKI转换GKI_patch完成"
fi
- name: "⚙️ Configure Kernel Options | 配置内核选项"
run: |
cd kernel_workspace/kernel_platform
echo "⚙️ 正在配置内核编译选项..."
# Add KSU configuration settings
echo "📦 启用 KSU 支持..."
echo "CONFIG_KSU=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
echo "📦 启用 SUSFS 功能..."
echo "CONFIG_KSU_SUSFS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_KSTAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_UNAME=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_ENABLE_LOG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_OPEN_REDIRECT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MAP=y" >> ./common/arch/arm64/configs/gki_defconfig
else
echo "📦 启用 MANUAL_HOOK..."
echo "CONFIG_KSU_SUSFS=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_MANUAL_HOOK=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
#添加对 Mountify (backslashxx/mountify) 模块的支持
echo "CONFIG_TMPFS_XATTR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TMPFS_POSIX_ACL=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ github.event.inputs.bbg }}" == "On" ]; then
echo "⚡ 启用BBG中..."
echo 'CONFIG_BBG=y' >> ./common/arch/arm64/configs/gki_defconfig
echo 'CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,baseband_guard"' >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.bbr }}" == "On" ]; then
echo "🌐 启用BBR网络算法..."
echo "CONFIG_TCP_CONG_ADVANCED=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BBR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NET_SCH_FQ=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BIC=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_WESTWOOD=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_HTCP=n" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "📦 启用lz4kd压缩..."
echo "CONFIG_CRYPTO_LZ4KD=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_CRYPTO_LZ4K_OPLUS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_ZRAM_WRITEBACK=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
# Add O2 config
echo "📦 为6.1&6.6加入O2优化..."
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.proxy }}" == "On" ]; then
# Add proxy config
echo "CONFIG_BPF_STREAM_PARSER=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_MAX=65534" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_PORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMARK=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTIP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_MAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETIFACE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_LIST_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_NAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_TARGET_MASQUERADE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.10" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.15" ]; then
echo "📦 正在为5.10系与5.15系配置lto中...."
DEFCONFIG=./common/arch/arm64/configs/gki_defconfig
sed -i 's/^CONFIG_LTO=n/CONFIG_LTO=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_NONE=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
grep -q '^CONFIG_LTO_CLANG_THIN=y' "$DEFCONFIG" || echo 'CONFIG_LTO_CLANG_THIN=y' >> "$DEFCONFIG"
fi
#跳过将uapi标准头安装到 usr/include 目录的不必要操作,节省编译时间
echo "CONFIG_HEADERS_INSTALL=n" >> ./common/arch/arm64/configs/gki_defconfig
sed -i 's/check_defconfig//' ./common/build.config.gki
echo "✅ 内核配置更新完成"
- name: "🔨 Build Kernel | 编译内核"
run: |
echo "🏗️ 开始内核编译..."
export KBUILD_BUILD_USER="xiaoxiaow"
export KBUILD_BUILD_HOST="xiaoxiaow_build"
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ]; then
export KBUILD_BUILD_TIMESTAMP="Tue Mar 10 03:53:33 UTC 2026"
export KBUILD_BUILD_VERSION=1
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
export PATH="/usr/lib/ccache:$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r510928/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.15" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r450784e/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.10" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts-master/clang/host/linux-x86/clang-r416183b/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM_IAS=1 LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
fi
# 显示ccache统计信息
ccache -s
echo "✅ 内核编译完成"
- name: "📦 Package Kernel | 打包内核"
run: |
echo "📦 准备AnyKernel3打包环境..."
git clone https://github.com/Xiaomichael/AnyKernel3 --depth=1
rm -rf ./AnyKernel3/.git
mkdir -p kernel_workspace/kernel_platform/out/Final-Image-Find/
dir1=""
dir2=""
image_path=$(find "./kernel_workspace/kernel_platform/common/out/" -name "Image" | head -n 1)
if [ -n "$image_path" ]; then
dir1=$(dirname "$image_path")/
echo "✅ 成功找到 Image 文件"
fi
if [ -n "$image_path" ] && [ -f "$image_path" ]; then
echo "Image file finally located at: $image_path"
cp "$image_path" ./AnyKernel3/Image
cp "$image_path" kernel_workspace/kernel_platform/out/Final-Image-Find/Image
fi
- name: "🧠 Set Artifact Name | 设置产物名称"
id: set_name
run: |
if [ "${{ github.event.inputs.lz4kd }}" = "On" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_KernelSU_Next_lz4kd_${{ env.KSUVER }}"
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_KernelSU_Next_lz4_zstd_${{ env.KSUVER }}"
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_KernelSU_Next_lz4_${{ env.KSUVER }}"
else
BASE_NAME="${{ github.event.inputs.FEIL }}_KernelSU_Next_${{ env.KSUVER }}"
fi
if [ "${{ github.event.inputs.SUSFS }}" = "On" ]; then
FINAL_NAME="${BASE_NAME}_SUSFS"
else
FINAL_NAME="${BASE_NAME}"
fi
echo "ARTIFACT_NAME=${FINAL_NAME}" >> $GITHUB_OUTPUT
- name: "📤 Upload AnyKernel3 | 上传 AnyKernel3"
uses: actions/upload-artifact@v7
with:
name: ${{ steps.set_name.outputs.ARTIFACT_NAME }}
path: ./AnyKernel3/*
- name: "📝 Find zram.ko & crypto_zstdn.ko | 查找 zram.ko & crypto_zstdn.ko"
run: |
find -name zram.ko
find -name crypto_zstdn.ko
- name: "📤 Upload zram.ko | 上传 zram.ko"
uses: actions/upload-artifact@v7
with:
name: ${{ github.event.inputs.FEIL }}_zram.ko
path: ./kernel_workspace/kernel_platform/common/out/drivers/block/zram/zram.ko
# - name: "🤖 Get bot script | 获取 bot 脚本"
# uses: actions/checkout@v6
# with:
# path: bot
# - name: "📤 Upload to telegram | 上传至Telegram群组"
# run: |
# if [ ! -z "${{ secrets.BOT_TOKEN }}" ]; then
# echo "📤 正在上传到Telegram..."
# cd AnyKernel3
# zip -q -r "../${{ steps.set_name.outputs.ARTIFACT_NAME }}.zip" ./*
# cd ..
# pip3 install telethon
# python3 ./bot/script/buildbot.py "./${{ steps.set_name.outputs.ARTIFACT_NAME }}.zip"
# echo "✅ 文件已上传到Telegram"
# fi
# env:
# CHATID: ${{secrets.CHATID}}
# BOT_TOKEN: ${{secrets.BOT_TOKEN}}
# MESSAGE_THREAD_ID: ${{secrets.MESSAGE_THREAD_ID}}
# KernelVer: ${{ github.event.inputs.ANDROID_VERSION}}-${{ github.event.inputs.KERNEL_VERSION }}
# DEVICE: ${{ github.event.inputs.FEIL }}
# KPM: Not Support
# LZ4KD: ${{ github.event.inputs.lz4kd }}
# BBR: ${{ github.event.inputs.bbr }}
# KSU_VAR: "NEXT"
================================================
FILE: .github/workflows/Build KernelSU.yml
================================================
name: Build KernelSU Official
on:
workflow_dispatch:
inputs:
CPU:
description: "CPU分支"
required: true
type: choice
options:
- 'sm8750'
- 'sm8735'
- 'mt6991'
- 'sm8650'
- 'mt6989'
- 'sm8635'
- 'sm8550'
- 'sm8450'
- 'sm8475'
- 'sm7675'
- 'sm7635'
- 'sm7550'
- 'sm6375'
default: 'sm8650'
FEIL:
description: "手机型号"
required: true
type: choice
options:
- 'oneplus_13_b'
- 'oneplus_13s_b'
- 'oneplus_13t_b'
- 'oneplus_ace5_pro_b'
- 'oneplus_ace_6'
- 'oneplus_pad_2_pro_b'
- 'oneplus_pad_3_b'
- 'oneplus_ace5_ultra_b'
- 'oneplus_turbo_6'
- 'oneplus_12_b'
- 'oneplus_ace3_pro_b'
- 'oneplus_ace5_b'
- 'oneplus_13r_b'
- 'oneplus_pad2_b'
- 'oneplus_pad_pro_b'
- 'oneplus_ace5_race_b'
- 'oneplus_nord_5_b'
- 'oneplus_11_b'
- 'oneplus_12r_b'
- 'oneplus_ace2_pro_b'
- 'oneplus_ace3_b'
- 'oneplus_open_b'
- 'oneplus_10t_v'
- 'oneplus_11r_b'
- 'oneplus_ace2_b'
- 'oneplus_ace_pro_v'
- 'oneplus_10_pro_b'
- 'oneplus_ace_3v_b'
- 'oneplus_turbo_6v'
- 'oneplus_nord_4_b'
- 'oneplus_nord_ce4_lite_5g'
- 'oneplus_nord_ce4_b'
default: 'oneplus_12_b'
ANDROID_VERSION:
description: "内核安卓KMI版本"
required: true
type: choice
options:
- 'android15'
- 'android14'
- 'android13'
- 'android12'
default: 'android14'
KERNEL_VERSION:
description: "内核版本"
required: true
type: choice
options:
- '6.6'
- '6.1'
- '5.15'
- '5.10'
default: '6.1'
SUSFS:
description: "是否启用SUSFS"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
lz4kd:
description: "是否启用lz4kd(6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
bbg:
description: "是否启用BBG基带保护"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
bbr:
description: "是否启用BBR算法(对手机日用无太大意义甚至可能负优化)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
proxy:
description: "是否添加代理性能优化(联发科芯片跑的时候请关闭否则出现恶性问题)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
UNICODE_BYPASS:
description: "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
jobs:
build:
name: For ${{ github.event.inputs.FEIL }} lz4kd ${{ github.event.inputs.lz4kd }} SUSFS ${{ github.event.inputs.SUSFS }}
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_HARDLINK: "true"
CCACHE_MAXSIZE: 8G
steps:
- name: "🚀 Maximize Build Space | 最大化构建空间"
if: ${{ github.event.inputs.KERNEL_VERSION == '5.10' || github.event.inputs.KERNEL_VERSION == '5.15' }}
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 8192
temp-reserve-mb: 4096
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
- name: "⚙️ Setup Cache Env | 设置缓存环境"
run: |
echo "🔧 正在设置机型隔离缓存目录..."
echo "CCACHE_DIR=$HOME/.ccache_${{ github.event.inputs.FEIL }}_Official" >> $GITHUB_ENV
mkdir -p "$HOME/.ccache_${{ github.event.inputs.FEIL }}_Official"
echo "✅ 缓存目录已设置: $HOME/.ccache_${{ github.event.inputs.FEIL }}_Official"
- name: "🔐 Configure Git | 配置Git账户"
run: |
echo "🔧 正在配置Git用户信息..."
git config --global user.name "build"
git config --global user.email "2210077278@qq.com"
echo "✅ Git配置完成"
- name: "📦 Cache & Install Dependencies | 缓存 & 安装构建依赖"
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: python3 git curl ccache libelf-dev build-essential flex bison libssl-dev libncurses-dev liblz4-tool zlib1g-dev libxml2-utils rsync unzip gawk dos2unix
execute_install_scripts: true
- name: "💾 Restore ccache (With SUSFS) | 恢复ccache缓存 (With SUSFS)"
if: ${{ github.event.inputs.SUSFS == 'On' }}
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-Official-SUSFS
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-Official-SUSFS
ccache-${{ runner.os }}-Official-SUSFS
- name: "💾 Restore ccache (Without SUSFS) | 恢复ccache缓存 (Without SUSFS)"
if: ${{ github.event.inputs.SUSFS == 'Off' }}
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-Official-NoSUSFS
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-Official-NoSUSFS
ccache-${{ runner.os }}-Official-NoSUSFS
- name: "⚙️ Initialize ccache | 初始化ccache"
run: |
echo "🔧 正在初始化ccache..."
INIT_FLAG="${{ env.CCACHE_DIR }}/.ccache_initialized"
if command -v ccache >/dev/null 2>&1; then
if [ ! -f "$INIT_FLAG" ]; then
mkdir -p "${{ env.CCACHE_DIR }}"
ccache -M ${{ env.CCACHE_MAXSIZE }}
touch "$INIT_FLAG"
echo "🆕 ccache初始化完成"
else
echo "ℹ️ ccache已存在,跳过初始化"
fi
else
echo "⚠️ 未找到ccache命令,跳过初始化"
fi
# 显示缓存统计
ccache -s
echo "✅ ccache初始化流程完成"
- name: "📥 Install Repo Tool | 安装Repo工具"
run: |
echo "⬇️ 正在下载repo工具..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo工具安装完成"
- name: "⬇️ Clone Kernel Source | 克隆内核源码"
run: |
mkdir kernel_workspace && cd kernel_workspace
echo "🌐 正在初始化内核仓库..."
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${{ github.event.inputs.CPU }} -m ${{ github.event.inputs.FEIL }}.xml --depth=1
echo "🔄 同步代码库(使用$(nproc --all)线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
rm kernel_platform/common/android/abi_gki_protected_exports_* || echo "No protected exports!"
rm kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "No protected exports!"
# Remove -dirty in kernel version
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "${{ github.event.inputs.KERNEL_VERSION }}" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sudo sed -i "s/-4k/$ESCAPED_SUFFIX/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核配置完成"
- name: "⚡ Setup Baseband-guard | 配置 Baseband-guard"
if: ${{ github.event.inputs.bbg == 'On'}}
run: |
set -e
cd kernel_workspace/kernel_platform/common
echo "🛠️ 正在设置BBG..."
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
- name: "⚡ Setup KernelSU | 配置 KernelSU"
run: |
cd kernel_workspace/kernel_platform
echo "🛠️ 正在设置KernelSU..."
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/refs/heads/main/kernel/setup.sh" | bash -s main
cd KernelSU
KSU_VERSION=$(expr $(curl -sI "https://api.github.com/repos/tiann/KernelSU/commits?sha=main&per_page=1" | grep -i "link:" | sed -n 's/.*page=\([0-9]*\)>; rel="last".*/\1/p') "+" 30000)
echo "KSUVER=$KSU_VERSION" >> $GITHUB_ENV
sed -i "s/DKSU_VERSION=16/DKSU_VERSION=${KSU_VERSION}/" kernel/Kbuild
echo "✅ KernelSU 配置完成"
- name: "🔧 Setup Patches | 配置补丁"
run: |
cd kernel_workspace
echo "⬇️ 下载所需补丁..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
git clone https://github.com/cctv18/susfs4oki.git -b oki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}
fi
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
echo "📝 复制补丁文件..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
cp ../susfs4oki/kernel_patches/50_add_susfs_in_gki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}.patch ./common/
cp ../susfs4oki/kernel_patches/fs/* ./common/fs/
cp ../susfs4oki/kernel_patches/include/linux/* ./common/include/linux/
fi
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
if [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.15" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
# Copy lz4k from ShirkNeko
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
echo "🔧 应用补丁..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
cd ./KernelSU
patch -p1 < 10_enable_susfs_for_ksu.patch || true
fi
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
cd ../common
elif [ "${{ github.event.inputs.SUSFS }}" == "Off" ]; then
cd ./common
fi
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
echo "📦 应用lz4+zstd补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
echo "📦 应用lz4补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "🚀 应用lz4kd补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
patch -p1 < 50_add_susfs_in_gki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}.patch || true
cp ../../kernel_patches/69_hide_stuff.patch ./
patch -p1 -F 3 < 69_hide_stuff.patch
fi
echo "✅ 所有补丁应用完成"
- name: "⚙️ Apply SCHED Patch | 应用风驰补丁"
if: ${{ github.event.inputs.KERNEL_VERSION == '6.6' }}
run: |
cd kernel_workspace/kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "${{ github.event.inputs.FEIL }}" == "oneplus_ace5_ultra" ] || [ "${{ github.event.inputs.FEIL }}" = "oneplus_ace5_ultra_b" ]; then
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "mt6991"
else
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "sm8750"
fi
cp ./SCHED_PATCH/fengchi_${{ github.event.inputs.FEIL }}.patch ./
if [[ -f "fengchi_${{ github.event.inputs.FEIL }}.patch" ]]; then
echo "⚙️ 开始应用风驰补丁"
dos2unix "fengchi_${{ github.event.inputs.FEIL }}.patch"
patch -p1 -F 3 < "fengchi_${{ github.event.inputs.FEIL }}.patch"
echo "✅ 完美风驰补丁应用完成"
else
sed -i '1iobj-y += hmbird_patch.o' drivers/Makefile
wget https://github.com/Numbersf/Action-Build/raw/SukiSU-Ultra/patches/hmbird_patch.patch
echo "⚙️ 正在打OGKI转换GKI补丁"
patch -p1 -F 3 < hmbird_patch.patch
echo "✅ OGKI转换GKI_patch完成"
fi
- name: "⚙️ Configure Kernel Options | 配置内核选项"
run: |
cd kernel_workspace/kernel_platform
echo "⚙️ 正在配置内核编译选项..."
# Add KSU configuration settings
echo "📦 启用 KSU 支持..."
echo "CONFIG_KSU=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
# Add SUSFS configuration settings
echo "CONFIG_KSU_SUSFS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_KSTAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_UNAME=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_ENABLE_LOG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_OPEN_REDIRECT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MAP=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
#添加对 Mountify (backslashxx/mountify) 模块的支持
echo "CONFIG_TMPFS_XATTR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TMPFS_POSIX_ACL=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ github.event.inputs.bbg }}" == "On" ]; then
echo "⚡ 启用BBG中..."
echo 'CONFIG_BBG=y' >> ./common/arch/arm64/configs/gki_defconfig
echo 'CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,baseband_guard"' >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.bbr }}" == "On" ]; then
echo "🌐 启用BBR网络算法..."
echo "CONFIG_TCP_CONG_ADVANCED=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BBR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NET_SCH_FQ=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BIC=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_WESTWOOD=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_HTCP=n" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "📦 启用lz4kd压缩..."
echo "CONFIG_CRYPTO_LZ4KD=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_CRYPTO_LZ4K_OPLUS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_ZRAM_WRITEBACK=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
# Add O2 config
echo "📦 为6.1&6.6加入O2优化..."
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.proxy }}" == "On" ]; then
# Add proxy config
echo "CONFIG_BPF_STREAM_PARSER=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_MAX=65534" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_PORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMARK=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTIP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_MAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETIFACE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_LIST_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_NAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_TARGET_MASQUERADE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.10" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.15" ]; then
echo "📦 正在为5.10系与5.15系配置lto中...."
DEFCONFIG=./common/arch/arm64/configs/gki_defconfig
sed -i 's/^CONFIG_LTO=n/CONFIG_LTO=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_NONE=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
grep -q '^CONFIG_LTO_CLANG_THIN=y' "$DEFCONFIG" || echo 'CONFIG_LTO_CLANG_THIN=y' >> "$DEFCONFIG"
fi
#跳过将uapi标准头安装到 usr/include 目录的不必要操作,节省编译时间
echo "CONFIG_HEADERS_INSTALL=n" >> ./common/arch/arm64/configs/gki_defconfig
sed -i 's/check_defconfig//' ./common/build.config.gki
echo "✅ 内核配置更新完成"
- name: "🔨 Build Kernel | 编译内核"
run: |
echo "🏗️ 开始内核编译..."
export KBUILD_BUILD_USER="xiaoxiaow"
export KBUILD_BUILD_HOST="xiaoxiaow_build"
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ]; then
export KBUILD_BUILD_TIMESTAMP="Tue Mar 10 03:53:33 UTC 2026"
export KBUILD_BUILD_VERSION=1
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
export PATH="/usr/lib/ccache:$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r510928/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.15" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r450784e/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.10" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts-master/clang/host/linux-x86/clang-r416183b/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM_IAS=1 LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
fi
# 显示ccache统计信息
ccache -s
echo "✅ 内核编译完成"
- name: "📦 Package Kernel | 打包内核"
run: |
echo "📦 准备AnyKernel3打包环境..."
git clone https://github.com/Xiaomichael/AnyKernel3 --depth=1
rm -rf ./AnyKernel3/.git
mkdir -p kernel_workspace/kernel_platform/out/Final-Image-Find/
dir1=""
dir2=""
image_path=$(find "./kernel_workspace/kernel_platform/common/out/" -name "Image" | head -n 1)
if [ -n "$image_path" ]; then
dir1=$(dirname "$image_path")/
echo "✅ 成功找到 Image 文件"
fi
if [ -n "$image_path" ] && [ -f "$image_path" ]; then
echo "Image file finally located at: $image_path"
cp "$image_path" ./AnyKernel3/Image
cp "$image_path" kernel_workspace/kernel_platform/out/Final-Image-Find/Image
fi
- name: "🧠 Set Artifact Name | 设置产物名称"
id: set_name
run: |
if [ "${{ github.event.inputs.lz4kd }}" = "On" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_KernelSU_lz4kd_${{ env.KSUVER }}"
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_KernelSU_lz4_zstd_${{ env.KSUVER }}"
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_KernelSU_lz4_${{ env.KSUVER }}"
else
BASE_NAME="${{ github.event.inputs.FEIL }}_KernelSU_${{ env.KSUVER }}"
fi
if [ "${{ github.event.inputs.SUSFS }}" = "On" ]; then
FINAL_NAME="${BASE_NAME}_SUSFS"
else
FINAL_NAME="${BASE_NAME}"
fi
echo "ARTIFACT_NAME=${FINAL_NAME}" >> $GITHUB_OUTPUT
- name: "📤 Upload AnyKernel3 | 上传 AnyKernel3"
uses: actions/upload-artifact@v7
with:
name: ${{ steps.set_name.outputs.ARTIFACT_NAME }}
path: ./AnyKernel3/*
- name: "📝 Find zram.ko & crypto_zstdn.ko | 查找 zram.ko & crypto_zstdn.ko"
# if: ${{ github.event.inputs.lz4kd == 'On' }}
run: |
find -name zram.ko
find -name crypto_zstdn.ko
- name: "📤 Upload zram.ko | 上传 zram.ko"
# if: ${{ github.event.inputs.lz4kd == 'On' }}
uses: actions/upload-artifact@v7
with:
name: ${{ github.event.inputs.FEIL }}_zram.ko
path: ./kernel_workspace/kernel_platform/common/out/drivers/block/zram/zram.ko
================================================
FILE: .github/workflows/Build ReSukiSU.yml
================================================
name: Build ReSukiSU
on:
workflow_dispatch:
inputs:
CPU:
description: "CPU分支"
required: true
type: choice
options:
- 'sm8750'
- 'sm8735'
- 'mt6991'
- 'sm8650'
- 'mt6989'
- 'sm8635'
- 'sm8550'
- 'sm8450'
- 'sm8475'
- 'sm7675'
- 'sm7635'
- 'sm7550'
- 'sm6375'
default: 'sm8650'
FEIL:
description: "手机型号"
required: true
type: choice
options:
- 'oneplus_13_b'
- 'oneplus_13s_b'
- 'oneplus_13t_b'
- 'oneplus_ace5_pro_b'
- 'oneplus_ace_6'
- 'oneplus_pad_2_pro_b'
- 'oneplus_pad_3_b'
- 'oneplus_ace5_ultra_b'
- 'oneplus_turbo_6'
- 'oneplus_12_b'
- 'oneplus_ace3_pro_b'
- 'oneplus_ace5_b'
- 'oneplus_13r_b'
- 'oneplus_pad2_b'
- 'oneplus_pad_pro_b'
- 'oneplus_ace5_race_b'
- 'oneplus_nord_5_b'
- 'oneplus_11_b'
- 'oneplus_12r_b'
- 'oneplus_ace2_pro_b'
- 'oneplus_ace3_b'
- 'oneplus_open_b'
- 'oneplus_10t_v'
- 'oneplus_11r_b'
- 'oneplus_ace2_b'
- 'oneplus_ace_pro_v'
- 'oneplus_10_pro_b'
- 'oneplus_ace_3v_b'
- 'oneplus_turbo_6v'
- 'oneplus_nord_4_b'
- 'oneplus_nord_ce4_lite_5g'
- 'oneplus_nord_ce4_b'
default: 'oneplus_12_b'
ANDROID_VERSION:
description: "内核安卓KMI版本"
required: true
type: choice
options:
- 'android15'
- 'android14'
- 'android13'
- 'android12'
default: 'android14'
KERNEL_VERSION:
description: "内核版本"
required: true
type: choice
options:
- '6.6'
- '6.1'
- '5.15'
- '5.10'
default: '6.1'
SUSFS:
description: "是否启用SUSFS"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
KPM:
description: "是否启用KPM"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
lz4kd:
description: "是否启用lz4kd(6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
bbg:
description: "是否启用BBG基带保护"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
bbr:
description: "是否启用BBR算法(对手机日用无太大意义甚至可能负优化)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
proxy:
description: "是否添加代理性能优化(联发科芯片跑的时候请关闭否则出现恶性问题)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
UNICODE_BYPASS:
description: "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
jobs:
build:
name: For ${{ github.event.inputs.FEIL }} KPM ${{ github.event.inputs.KPM }} lz4kd ${{ github.event.inputs.lz4kd }} SUSFS ${{ github.event.inputs.SUSFS }}
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_HARDLINK: "true"
CCACHE_MAXSIZE: 8G
steps:
- name: "🚀 Maximize Build Space | 最大化构建空间"
if: ${{ github.event.inputs.KERNEL_VERSION == '5.10' || github.event.inputs.KERNEL_VERSION == '5.15' }}
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 8192
temp-reserve-mb: 4096
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
- name: "⚙️ Setup Cache Env | 设置缓存环境"
run: |
echo "🔧 正在设置机型隔离缓存目录..."
echo "CCACHE_DIR=$HOME/.ccache_${{ github.event.inputs.FEIL }}_ReSukiSU" >> $GITHUB_ENV
mkdir -p "$HOME/.ccache_${{ github.event.inputs.FEIL }}_ReSukiSU"
echo "✅ 缓存目录已设置: $HOME/.ccache_${{ github.event.inputs.FEIL }}_ReSukiSU"
- name: "🔐 Configure Git | 配置Git账户"
run: |
echo "🔧 正在配置Git用户信息..."
git config --global user.name "build"
git config --global user.email "2210077278@qq.com"
echo "✅ Git配置完成"
- name: "📦 Cache & Install Dependencies | 缓存 & 安装构建依赖"
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: python3 git curl ccache libelf-dev build-essential flex bison libssl-dev libncurses-dev liblz4-tool zlib1g-dev libxml2-utils rsync unzip gawk dos2unix
execute_install_scripts: true
- name: "💾 Restore ccache (With SUSFS) | 恢复ccache缓存 (With SUSFS)"
if: ${{ github.event.inputs.SUSFS == 'On' }}
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-ReSukiSU-SUSFS
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-ReSukiSU-SUSFS
ccache-${{ runner.os }}-ReSukiSU-SUSFS
- name: "💾 Restore ccache (Without SUSFS) | 恢复ccache缓存 (Without SUSFS)"
if: ${{ github.event.inputs.SUSFS == 'Off' }}
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-ReSukiSU-NoSUSFS
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-ReSukiSU-NoSUSFS
ccache-${{ runner.os }}-ReSukiSU-NoSUSFS
- name: "⚙️ Initialize ccache | 初始化ccache"
run: |
echo "🔧 正在初始化ccache..."
INIT_FLAG="${{ env.CCACHE_DIR }}/.ccache_initialized"
if command -v ccache >/dev/null 2>&1; then
if [ ! -f "$INIT_FLAG" ]; then
mkdir -p "${{ env.CCACHE_DIR }}"
ccache -M ${{ env.CCACHE_MAXSIZE }}
touch "$INIT_FLAG"
echo "✅ ccache初始化完成"
else
echo "ℹ️ ccache已存在,跳过初始化"
fi
else
echo "⚠️ 未找到ccache命令,跳过初始化"
fi
# 显示缓存统计
ccache -s
echo "✅ ccache初始化流程完成"
- name: "📥 Install Repo Tool | 安装Repo工具"
run: |
echo "⬇️ 正在下载repo工具..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo工具安装完成"
- name: "⬇️ Clone Kernel Source | 克隆内核源码"
run: |
mkdir kernel_workspace && cd kernel_workspace
echo "🌐 正在初始化内核仓库..."
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${{ github.event.inputs.CPU }} -m ${{ github.event.inputs.FEIL }}.xml --depth=1
echo "🔄 同步代码库(使用$(nproc --all)线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
echo "✅ 内核源码克隆完成"
rm kernel_platform/common/android/abi_gki_protected_exports_* || echo "No protected exports!"
rm kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "No protected exports!"
echo "🔧 正在配置内核版本信息..."
# Remove -dirty in kernel version
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "${{ github.event.inputs.KERNEL_VERSION }}" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sudo sed -i "s/-4k/$ESCAPED_SUFFIX/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核配置完成"
- name: "⚡ Setup Baseband-guard | 配置 Baseband-guard"
if: ${{ github.event.inputs.bbg == 'On' && github.event.inputs.KPM == 'Off' }}
run: |
set -e
cd kernel_workspace/kernel_platform/common
echo "🛠️ 正在设置BBG..."
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
- name: "⚡ Setup ReSukiSU | 配置 ReSukiSU"
run: |
cd kernel_workspace/kernel_platform
# 下载并执行设置脚本
echo "🛠️ 正在设置ReSukiSU..."
curl -LSs "https://raw.githubusercontent.com/ReSukiSU/ReSukiSU/main/kernel/setup.sh" | bash -s main
cd KernelSU
KSU_VERSION=$(expr $(/usr/bin/git rev-list --count main) "+" 30700)
echo "KSUVER=$KSU_VERSION" >> $GITHUB_ENV
echo "✅ ReSukiSU 配置完成"
- name: "🔧 Setup Patches | 配置补丁"
run: |
cd kernel_workspace
echo "⬇️ 克隆所需补丁..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
git clone https://github.com/cctv18/susfs4oki.git -b oki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}
fi
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
echo "📝 复制补丁文件..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
cp ../susfs4oki/kernel_patches/50_add_susfs_in_gki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}.patch ./common/
cp ../susfs4oki/kernel_patches/fs/* ./common/fs/
cp ../susfs4oki/kernel_patches/include/linux/* ./common/include/linux/
else
cp ../kernel_patches/sukisu/scope_min_manual_hooks_v1.9.patch ./common/
fi
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
if [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.15" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
# Copy lz4k from ShirkNeko
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
cd ./common
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
echo "📦 应用lz4+zstd补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
echo "📦 应用lz4补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "📦 应用lz4kd补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
echo "📦 应用SUSFS补丁..."
patch -p1 < 50_add_susfs_in_gki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}.patch || true
else
echo "📦 应用MANUAL_HOOK补丁..."
patch -p1 -F 3 < scope_min_manual_hooks_v1.9.patch
fi
echo "✅ 所有补丁应用完成"
- name: "⚙️ Apply SCHED Patch | 应用风驰补丁"
if: ${{ github.event.inputs.KERNEL_VERSION == '6.6' }}
run: |
cd kernel_workspace/kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "${{ github.event.inputs.FEIL }}" == "oneplus_ace5_ultra" ] || [ "${{ github.event.inputs.FEIL }}" = "oneplus_ace5_ultra_b" ]; then
echo "⚠️ Ace5 Ultra 需要使用 mt6991 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "mt6991"
else
echo "⚙️ 使用 sm8750 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "sm8750"
fi
cp ./SCHED_PATCH/fengchi_${{ github.event.inputs.FEIL }}.patch ./
if [[ -f "fengchi_${{ github.event.inputs.FEIL }}.patch" ]]; then
echo "⚙️ 开始应用风驰补丁"
dos2unix "fengchi_${{ github.event.inputs.FEIL }}.patch"
patch -p1 -F 3 < "fengchi_${{ github.event.inputs.FEIL }}.patch"
echo "✅ 完美风驰补丁应用完成"
else
sed -i '1iobj-y += hmbird_patch.o' drivers/Makefile
wget https://github.com/Numbersf/Action-Build/raw/SukiSU-Ultra/patches/hmbird_patch.patch
echo "⚙️ 正在打OGKI转换GKI补丁"
patch -p1 -F 3 < hmbird_patch.patch
echo "✅ OGKI转换GKI_patch完成"
fi
- name: "⚙️ Configure Kernel Options | 配置内核选项"
run: |
cd kernel_workspace/kernel_platform
echo "⚙️ 正在配置内核编译选项..."
echo "📦 启用 KSU 支持..."
curl -L -o resukisu_setup.bin https://github.com/Xiaomichael/OnePlus-Actions/raw/Build/script/resukisu_setup.bin
chmod +x resukisu_setup.bin
./resukisu_setup.bin
rm -rf ./resukisu_setup.bin
if [ "${{ github.event.inputs.KPM }}" == "On" ]; then
echo "📦 启用 KPM..."
echo "CONFIG_KPM=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
echo "📦 启用 SUSFS 功能..."
echo "CONFIG_KSU_SUSFS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_KSTAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_UNAME=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_ENABLE_LOG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_OPEN_REDIRECT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MAP=y" >> ./common/arch/arm64/configs/gki_defconfig
else
echo "📦 启用 MANUAL_HOOK..."
echo "CONFIG_KSU_SUSFS=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_MANUAL_HOOK=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
echo "📦 添加对 Mountify (backslashxx/mountify) 模块的支持"
echo "CONFIG_TMPFS_XATTR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TMPFS_POSIX_ACL=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ github.event.inputs.bbg }}" == "On" ] && [ "${{ github.event.inputs.KPM }}" == "Off" ]; then
echo "⚡ 配置 BBG 中..."
echo 'CONFIG_BBG=y' >> ./common/arch/arm64/configs/gki_defconfig
echo 'CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,baseband_guard"' >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.bbr }}" == "On" ]; then
echo "🌐 启用 BBR 网络算法..."
echo "CONFIG_TCP_CONG_ADVANCED=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BBR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NET_SCH_FQ=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BIC=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_WESTWOOD=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_HTCP=n" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "📦 启用 lz4kd压缩..."
echo "CONFIG_CRYPTO_LZ4KD=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_CRYPTO_LZ4K_OPLUS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_ZRAM_WRITEBACK=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
# Add O2 config
echo "📦 为6.1 / 6.6加入O2优化..."
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.proxy }}" == "On" ]; then
# Add proxy config
echo "📦 加入代理优化..."
echo "CONFIG_BPF_STREAM_PARSER=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_MAX=65534" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_PORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMARK=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTIP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_MAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETIFACE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_LIST_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_NAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_TARGET_MASQUERADE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.10" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.15" ]; then
echo "📦 正在为5.10 / 5.15系配置lto中..."
DEFCONFIG=./common/arch/arm64/configs/gki_defconfig
sed -i 's/^CONFIG_LTO=n/CONFIG_LTO=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_NONE=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
grep -q '^CONFIG_LTO_CLANG_THIN=y' "$DEFCONFIG" || echo 'CONFIG_LTO_CLANG_THIN=y' >> "$DEFCONFIG"
fi
#跳过将uapi标准头安装到 usr/include 目录的不必要操作,节省编译时间
echo "CONFIG_HEADERS_INSTALL=n" >> ./common/arch/arm64/configs/gki_defconfig
# Remove check_defconfig
sed -i 's/check_defconfig//' ./common/build.config.gki
echo "✅ 内核配置更新完成"
- name: "🔨 Build Kernel | 编译内核"
run: |
echo "🏗️ 开始内核编译..."
export KBUILD_BUILD_USER="xiaoxiaow"
export KBUILD_BUILD_HOST="xiaoxiaow_build"
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ]; then
export KBUILD_BUILD_TIMESTAMP="Tue Mar 10 03:53:33 UTC 2026"
export KBUILD_BUILD_VERSION=1
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
export PATH="/usr/lib/ccache:$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r510928/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.15" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r450784e/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.10" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts-master/clang/host/linux-x86/clang-r416183b/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM_IAS=1 LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
fi
# 显示ccache统计信息
ccache -s
echo "✅ 内核编译完成"
- name: "📦 Package Kernel | 打包内核"
run: |
echo "📦 准备AnyKernel3打包环境..."
git clone https://github.com/Xiaomichael/AnyKernel3 --depth=1
rm -rf ./AnyKernel3/.git
mkdir -p kernel_workspace/kernel_platform/out/Final-Image-Find/
dir1=""
dir2=""
image_path=$(find "./kernel_workspace/kernel_platform/common/out/" -name "Image" | head -n 1)
if [ -n "$image_path" ]; then
dir1=$(dirname "$image_path")/
echo "✅ 成功找到 Image 文件"
fi
if [ -n "$image_path" ] && [ -f "$image_path" ]; then
echo "Image file finally located at: $image_path"
cp "$image_path" ./AnyKernel3/Image
cp "$image_path" kernel_workspace/kernel_platform/out/Final-Image-Find/Image
fi
- name: "🧩 Patch Kernel Image (KPM) | KPM修补镜像"
if: ${{ github.event.inputs.KPM == 'On' }}
run: |
echo "🔧 正在应用KPM补丁..."
cd kernel_workspace/kernel_platform/out/Final-Image-Find
curl -LO https://github.com/SukiSU-Ultra/SukiSU_KernelPatch_patch/releases/download/0.13.0/patch_linux
chmod +x patch_linux
./patch_linux
rm -f Image
mv oImage Image
cp Image $GITHUB_WORKSPACE/AnyKernel3/Image
echo "✅ KPM补丁应用完成"
- name: "🧠 Set Artifact Name | 设置产物名称"
id: set_name
run: |
if [ "${{ github.event.inputs.lz4kd }}" = "On" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_ReSukiSU_lz4kd_${{ env.KSUVER }}"
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_ReSukiSU_lz4_zstd_${{ env.KSUVER }}"
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_ReSukiSU_lz4_${{ env.KSUVER }}"
else
BASE_NAME="${{ github.event.inputs.FEIL }}_ReSukiSU_${{ env.KSUVER }}"
fi
if [ "${{ github.event.inputs.SUSFS }}" = "On" ]; then
FINAL_NAME="${BASE_NAME}_SUSFS"
else
FINAL_NAME="${BASE_NAME}"
fi
echo "ARTIFACT_NAME=${FINAL_NAME}" >> $GITHUB_OUTPUT
- name: "📤 Upload AnyKernel3 | 上传 AnyKernel3"
uses: actions/upload-artifact@v7
with:
name: ${{ steps.set_name.outputs.ARTIFACT_NAME }}
path: ./AnyKernel3/*
- name: "📝 Find zram.ko & crypto_zstdn.ko | 查找 zram.ko & crypto_zstdn.ko"
run: |
find -name zram.ko
find -name crypto_zstdn.ko
- name: "📤 Upload zram.ko | 上传 zram.ko"
uses: actions/upload-artifact@v7
with:
name: ${{ github.event.inputs.FEIL }}_zram.ko
path: ./kernel_workspace/kernel_platform/common/out/drivers/block/zram/zram.ko
================================================
FILE: .github/workflows/Build SukiSU Ultra.yml
================================================
name: Build SukiSU Ultra
on:
workflow_dispatch:
inputs:
CPU:
description: "CPU分支"
required: true
type: choice
options:
- 'sm8750'
- 'sm8735'
- 'mt6991'
- 'sm8650'
- 'mt6989'
- 'sm8635'
- 'sm8550'
- 'sm8450'
- 'sm8475'
- 'sm7675'
- 'sm7635'
- 'sm7550'
- 'sm6375'
default: 'sm8650'
FEIL:
description: "手机型号"
required: true
type: choice
options:
- 'oneplus_13_b'
- 'oneplus_13s_b'
- 'oneplus_13t_b'
- 'oneplus_ace5_pro_b'
- 'oneplus_ace_6'
- 'oneplus_pad_2_pro_b'
- 'oneplus_pad_3_b'
- 'oneplus_ace5_ultra_b'
- 'oneplus_turbo_6'
- 'oneplus_12_b'
- 'oneplus_ace3_pro_b'
- 'oneplus_ace5_b'
- 'oneplus_13r_b'
- 'oneplus_pad2_b'
- 'oneplus_pad_pro_b'
- 'oneplus_ace5_race_b'
- 'oneplus_nord_5_b'
- 'oneplus_11_b'
- 'oneplus_12r_b'
- 'oneplus_ace2_pro_b'
- 'oneplus_ace3_b'
- 'oneplus_open_b'
- 'oneplus_10t_v'
- 'oneplus_11r_b'
- 'oneplus_ace2_b'
- 'oneplus_ace_pro_v'
- 'oneplus_10_pro_b'
- 'oneplus_ace_3v_b'
- 'oneplus_turbo_6v'
- 'oneplus_nord_4_b'
- 'oneplus_nord_ce4_lite_5g'
- 'oneplus_nord_ce4_b'
default: 'oneplus_12_b'
ANDROID_VERSION:
description: "内核安卓KMI版本"
required: true
type: choice
options:
- 'android15'
- 'android14'
- 'android13'
- 'android12'
default: 'android14'
KERNEL_VERSION:
description: "内核版本"
required: true
type: choice
options:
- '6.6'
- '6.1'
- '5.15'
- '5.10'
default: '6.1'
SUSFS:
description: "是否启用SUSFS"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
KPM:
description: "是否启用KPM"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
lz4kd:
description: "是否启用lz4kd(6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
bbg:
description: "是否启用BBG基带保护"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
bbr:
description: "是否启用BBR算法(对手机日用无太大意义甚至可能负优化)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
proxy:
description: "是否添加代理性能优化(联发科芯片跑的时候请关闭否则出现恶性问题)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'On'
UNICODE_BYPASS:
description: "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复)"
required: true
type: choice
options:
- 'On'
- 'Off'
default: 'Off'
jobs:
build:
name: For ${{ github.event.inputs.FEIL }} KPM ${{ github.event.inputs.KPM }} lz4kd ${{ github.event.inputs.lz4kd }} SUSFS ${{ github.event.inputs.SUSFS }}
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_HARDLINK: "true"
CCACHE_MAXSIZE: 8G
steps:
- name: "🚀 Maximize Build Space | 最大化构建空间"
if: ${{ github.event.inputs.KERNEL_VERSION == '5.10' || github.event.inputs.KERNEL_VERSION == '5.15' }}
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 8192
temp-reserve-mb: 4096
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
- name: "⚙️ Setup Cache Env | 设置缓存环境"
run: |
echo "🔧 正在设置机型隔离缓存目录..."
echo "CCACHE_DIR=$HOME/.ccache_${{ github.event.inputs.FEIL }}_SukiSU" >> $GITHUB_ENV
mkdir -p "$HOME/.ccache_${{ github.event.inputs.FEIL }}_SukiSU"
echo "✅ 缓存目录已设置: $HOME/.ccache_${{ github.event.inputs.FEIL }}_SukiSU"
- name: "🔐 Configure Git | 配置Git账户"
run: |
echo "🔧 正在配置Git用户信息..."
git config --global user.name "build"
git config --global user.email "2210077278@qq.com"
echo "✅ Git配置完成"
- name: "📦 Cache & Install Dependencies | 缓存 & 安装构建依赖"
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: python3 git curl ccache libelf-dev build-essential flex bison libssl-dev libncurses-dev liblz4-tool zlib1g-dev libxml2-utils rsync unzip gawk dos2unix
execute_install_scripts: true
- name: "💾 Restore ccache (With SUSFS) | 恢复ccache缓存 (With SUSFS)"
if: ${{ github.event.inputs.SUSFS == 'On' }}
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-SukiSU-SUSFS
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-SukiSU-SUSFS
ccache-${{ runner.os }}-SukiSU-SUSFS
- name: "💾 Restore ccache (Without SUSFS) | 恢复ccache缓存 (Without SUSFS)"
if: ${{ github.event.inputs.SUSFS == 'Off' }}
uses: actions/cache@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.ref }}-${{ github.event.inputs.FEIL }}-SukiSU-NoSUSFS
restore-keys: |
ccache-${{ runner.os }}-${{ github.event.inputs.FEIL }}-SukiSU-NoSUSFS
ccache-${{ runner.os }}-SukiSU-NoSUSFS
- name: "⚙️ Initialize ccache | 初始化ccache"
run: |
echo "🔧 正在初始化ccache..."
INIT_FLAG="${{ env.CCACHE_DIR }}/.ccache_initialized"
if command -v ccache >/dev/null 2>&1; then
if [ ! -f "$INIT_FLAG" ]; then
mkdir -p "${{ env.CCACHE_DIR }}"
ccache -M ${{ env.CCACHE_MAXSIZE }}
touch "$INIT_FLAG"
echo "✅ ccache初始化完成"
else
echo "ℹ️ ccache已存在,跳过初始化"
fi
else
echo "⚠️ 未找到ccache命令,跳过初始化"
fi
# 显示缓存统计
ccache -s
echo "✅ ccache初始化流程完成"
- name: "📥 Install Repo Tool | 安装Repo工具"
run: |
echo "⬇️ 正在下载repo工具..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo工具安装完成"
- name: "⬇️ Clone Kernel Source | 克隆内核源码"
run: |
mkdir kernel_workspace && cd kernel_workspace
echo "🌐 正在初始化内核仓库..."
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${{ github.event.inputs.CPU }} -m ${{ github.event.inputs.FEIL }}.xml --depth=1
echo "🔄 同步代码库(使用$(nproc --all)线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
echo "✅ 内核源码克隆完成"
rm kernel_platform/common/android/abi_gki_protected_exports_* || echo "No protected exports!"
rm kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "No protected exports!"
echo "🔧 正在配置内核版本信息..."
# Remove -dirty in kernel version
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "${{ github.event.inputs.KERNEL_VERSION }}" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${{ github.event.inputs.ANDROID_VERSION }}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sudo sed -i "s/-4k/$ESCAPED_SUFFIX/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核配置完成"
- name: "⚡ Setup Baseband-guard | 配置 Baseband-guard"
if: ${{ github.event.inputs.bbg == 'On' && github.event.inputs.KPM == 'Off' }}
run: |
set -e
cd kernel_workspace/kernel_platform/common
echo "🛠️ 正在设置BBG..."
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
- name: "⚡ Setup SukiSU Ultra | 配置 SukiSU Ultra"
run: |
cd kernel_workspace/kernel_platform
# 下载并执行设置脚本
echo "🛠️ 正在设置SukiSU Ultra..."
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/builtin/kernel/setup.sh" | bash -s builtin
cd KernelSU
echo "⬇️ 下载SukiSU设置工具..."
curl -L -o sukisu_setup.bin https://github.com/Xiaomichael/OnePlus-Actions/raw/Build/script/sukisu_setup.bin
chmod +x sukisu_setup.bin
./sukisu_setup.bin
rm -rf ./sukisu_setup.bin
echo "✅ SukiSU Ultra配置完成"
- name: "🔧 Setup Patches | 配置补丁"
run: |
cd kernel_workspace
echo "⬇️ 克隆所需补丁..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
git clone https://github.com/cctv18/susfs4oki.git -b oki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}
fi
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
echo "📝 复制补丁文件..."
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
cp ../susfs4oki/kernel_patches/50_add_susfs_in_gki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}.patch ./common/
cp ../susfs4oki/kernel_patches/fs/* ./common/fs/
cp ../susfs4oki/kernel_patches/include/linux/* ./common/include/linux/
else
cp ../kernel_patches/sukisu/scope_min_manual_hooks_v1.6.patch ./common/
fi
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
if [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.15" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
# Copy lz4k from ShirkNeko
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
cd ./common
if [ "${{ github.event.inputs.UNICODE_BYPASS }}" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
echo "📦 应用lz4+zstd补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" = "Off" ] && [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
echo "📦 应用lz4补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "📦 应用lz4kd补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${{ github.event.inputs.KERNEL_VERSION }}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
echo "📦 应用SUSFS补丁..."
patch -p1 < 50_add_susfs_in_gki-${{ github.event.inputs.ANDROID_VERSION }}-${{ github.event.inputs.KERNEL_VERSION }}.patch || true
else
echo "📦 应用MANUAL_HOOK补丁..."
patch -p1 -F 3 < scope_min_manual_hooks_v1.6.patch
fi
echo "✅ 所有补丁应用完成"
- name: "⚙️ Apply SCHED Patch | 应用风驰补丁"
if: ${{ github.event.inputs.KERNEL_VERSION == '6.6' }}
run: |
cd kernel_workspace/kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "${{ github.event.inputs.FEIL }}" == "oneplus_ace5_ultra" ] || [ "${{ github.event.inputs.FEIL }}" = "oneplus_ace5_ultra_b" ]; then
echo "⚠️ Ace5 Ultra 需要使用 mt6991 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "mt6991"
else
echo "⚙️ 使用 sm8750 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "sm8750"
fi
cp ./SCHED_PATCH/fengchi_${{ github.event.inputs.FEIL }}.patch ./
if [[ -f "fengchi_${{ github.event.inputs.FEIL }}.patch" ]]; then
echo "⚙️ 开始应用风驰补丁"
dos2unix "fengchi_${{ github.event.inputs.FEIL }}.patch"
patch -p1 -F 3 < "fengchi_${{ github.event.inputs.FEIL }}.patch"
echo "✅ 完美风驰补丁应用完成"
else
sed -i '1iobj-y += hmbird_patch.o' drivers/Makefile
wget https://github.com/Numbersf/Action-Build/raw/SukiSU-Ultra/patches/hmbird_patch.patch
echo "⚙️ 正在打OGKI转换GKI补丁"
patch -p1 -F 3 < hmbird_patch.patch
echo "✅ OGKI转换GKI_patch完成"
fi
- name: "⚙️ Configure Kernel Options | 配置内核选项"
run: |
cd kernel_workspace/kernel_platform
echo "⚙️ 正在配置内核编译选项..."
echo "📦 启用 KSU 支持..."
echo "CONFIG_KSU=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ github.event.inputs.KPM }}" == "On" ]; then
echo "📦 启用 KPM..."
echo "CONFIG_KPM=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.SUSFS }}" == "On" ]; then
echo "📦 启用 SUSFS 功能..."
echo "CONFIG_KSU_SUSFS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_KSTAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_UNAME=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_ENABLE_LOG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_OPEN_REDIRECT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MAP=y" >> ./common/arch/arm64/configs/gki_defconfig
else
echo "📦 启用 MANUAL_HOOK..."
echo "CONFIG_KSU_SUSFS=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_MANUAL_HOOK=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
echo "📦 添加对 Mountify (backslashxx/mountify) 模块的支持"
echo "CONFIG_TMPFS_XATTR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TMPFS_POSIX_ACL=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ github.event.inputs.bbg }}" == "On" ] && [ "${{ github.event.inputs.KPM }}" == "Off" ]; then
echo "⚡ 配置 BBG 中..."
echo 'CONFIG_BBG=y' >> ./common/arch/arm64/configs/gki_defconfig
echo 'CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,baseband_guard"' >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.bbr }}" == "On" ]; then
echo "🌐 启用 BBR 网络算法..."
echo "CONFIG_TCP_CONG_ADVANCED=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BBR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NET_SCH_FQ=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_BIC=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_WESTWOOD=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TCP_CONG_HTCP=n" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.lz4kd }}" == "On" ]; then
echo "📦 启用 lz4kd压缩..."
echo "CONFIG_CRYPTO_LZ4KD=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_CRYPTO_LZ4K_OPLUS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_ZRAM_WRITEBACK=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
# Add O2 config
echo "📦 为6.1 / 6.6加入O2优化..."
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.proxy }}" == "On" ]; then
# Add proxy config
echo "📦 加入代理优化..."
echo "CONFIG_BPF_STREAM_PARSER=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_NETFILTER_XT_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_MAX=65534" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_BITMAP_PORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMARK=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTIP=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_IPMAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_MAC=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORTNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETNET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETPORT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_HASH_NETIFACE=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP_SET_LIST_SET=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_NAT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_TARGET_MASQUERADE=y" >> ./common/arch/arm64/configs/gki_defconfig
fi
if [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.10" ] || [ "${{ github.event.inputs.KERNEL_VERSION }}" = "5.15" ]; then
echo "📦 正在为5.10 / 5.15系配置lto中..."
DEFCONFIG=./common/arch/arm64/configs/gki_defconfig
sed -i 's/^CONFIG_LTO=n/CONFIG_LTO=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
sed -i 's/^CONFIG_LTO_CLANG_NONE=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG"
grep -q '^CONFIG_LTO_CLANG_THIN=y' "$DEFCONFIG" || echo 'CONFIG_LTO_CLANG_THIN=y' >> "$DEFCONFIG"
fi
#跳过将uapi标准头安装到 usr/include 目录的不必要操作,节省编译时间
echo "CONFIG_HEADERS_INSTALL=n" >> ./common/arch/arm64/configs/gki_defconfig
# Remove check_defconfig
sed -i 's/check_defconfig//' ./common/build.config.gki
echo "✅ 内核配置更新完成"
- name: "🔨 Build Kernel | 编译内核"
run: |
echo "🏗️ 开始内核编译..."
export KBUILD_BUILD_USER="xiaoxiaow"
export KBUILD_BUILD_HOST="xiaoxiaow_build"
if [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.1" ]; then
export KBUILD_BUILD_TIMESTAMP="Tue Mar 10 03:53:33 UTC 2026"
export KBUILD_BUILD_VERSION=1
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "6.6" ]; then
export PATH="/usr/lib/ccache:$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r510928/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out KCFLAGS+=-O2 gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.15" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r450784e/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" == "5.10" ]; then
export PATH="$GITHUB_WORKSPACE/kernel_workspace/kernel_platform/prebuilts-master/clang/host/linux-x86/clang-r416183b/bin:$PATH"
export PATH="/usr/lib/ccache:$PATH"
sudo apt install libelf-dev
cd kernel_workspace/kernel_platform/common
make -j$(nproc --all) LLVM_IAS=1 LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC="ccache clang" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all
fi
# 显示ccache统计信息
ccache -s
echo "✅ 内核编译完成"
- name: "📦 Package Kernel | 打包内核"
run: |
echo "📦 准备AnyKernel3打包环境..."
git clone https://github.com/Xiaomichael/AnyKernel3 --depth=1
rm -rf ./AnyKernel3/.git
mkdir -p kernel_workspace/kernel_platform/out/Final-Image-Find/
dir1=""
dir2=""
image_path=$(find "./kernel_workspace/kernel_platform/common/out/" -name "Image" | head -n 1)
if [ -n "$image_path" ]; then
dir1=$(dirname "$image_path")/
echo "✅ 成功找到 Image 文件"
fi
if [ -n "$image_path" ] && [ -f "$image_path" ]; then
echo "Image file finally located at: $image_path"
cp "$image_path" ./AnyKernel3/Image
cp "$image_path" kernel_workspace/kernel_platform/out/Final-Image-Find/Image
fi
- name: "🧩 Patch Kernel Image (KPM) | KPM修补镜像"
if: ${{ github.event.inputs.KPM == 'On' }}
run: |
echo "🔧 正在应用KPM补丁..."
cd kernel_workspace/kernel_platform/out/Final-Image-Find
curl -LO https://github.com/SukiSU-Ultra/SukiSU_KernelPatch_patch/releases/download/0.13.0/patch_linux
chmod +x patch_linux
./patch_linux
rm -f Image
mv oImage Image
cp Image $GITHUB_WORKSPACE/AnyKernel3/Image
echo "✅ KPM补丁应用完成"
- name: "🧠 Set Artifact Name | 设置产物名称"
id: set_name
run: |
if [ "${{ github.event.inputs.lz4kd }}" = "On" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_SukiSU_Ultra_lz4kd_${{ env.KSUVER }}"
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.1" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_SukiSU_Ultra_lz4_zstd_${{ env.KSUVER }}"
elif [ "${{ github.event.inputs.KERNEL_VERSION }}" = "6.6" ]; then
BASE_NAME="${{ github.event.inputs.FEIL }}_SukiSU_Ultra_lz4_${{ env.KSUVER }}"
else
BASE_NAME="${{ github.event.inputs.FEIL }}_SukiSU_Ultra_${{ env.KSUVER }}"
fi
if [ "${{ github.event.inputs.SUSFS }}" = "On" ]; then
FINAL_NAME="${BASE_NAME}_SUSFS"
else
FINAL_NAME="${BASE_NAME}"
fi
echo "ARTIFACT_NAME=${FINAL_NAME}" >> $GITHUB_OUTPUT
- name: "📤 Upload AnyKernel3 | 上传 AnyKernel3"
uses: actions/upload-artifact@v7
with:
name: ${{ steps.set_name.outputs.ARTIFACT_NAME }}
path: ./AnyKernel3/*
- name: "📝 Find zram.ko & crypto_zstdn.ko | 查找 zram.ko & crypto_zstdn.ko"
run: |
find -name zram.ko
find -name crypto_zstdn.ko
- name: "📤 Upload zram.ko | 上传 zram.ko"
uses: actions/upload-artifact@v7
with:
name: ${{ github.event.inputs.FEIL }}_zram.ko
path: ./kernel_workspace/kernel_platform/common/out/drivers/block/zram/zram.ko
# - name: "🤖 Get bot script | 获取 bot 脚本"
# uses: actions/checkout@v6
# with:
# path: bot
# - name: "📤 Upload to telegram | 上传至Telegram群组"
# run: |
# if [ ! -z "${{ secrets.BOT_TOKEN }}" ]; then
# echo "📤 正在上传到Telegram..."
# cd AnyKernel3
# zip -q -r "../${{ steps.set_name.outputs.ARTIFACT_NAME }}.zip" ./*
# cd ..
# pip3 install telethon
# python3 ./bot/script/buildbot.py "./${{ steps.set_name.outputs.ARTIFACT_NAME }}.zip"
# echo "✅ 文件已上传到Telegram"
# fi
# env:
# CHATID: ${{secrets.CHATID}}
# BOT_TOKEN: ${{secrets.BOT_TOKEN}}
# MESSAGE_THREAD_ID: ${{secrets.MESSAGE_THREAD_ID}}
# KernelVer: ${{ github.event.inputs.ANDROID_VERSION}}-${{ github.event.inputs.KERNEL_VERSION }}
# DEVICE: ${{ github.event.inputs.FEIL }}
# KPM: ${{ github.event.inputs.KPM }}
# LZ4KD: ${{ github.event.inputs.lz4kd }}
# BBR: ${{ github.event.inputs.bbr }}
# KSU_VAR: "SukiSU"
================================================
FILE: .github/workflows/Clean_ccache.yml
================================================
name: Clean Caches
on:
workflow_dispatch:
jobs:
clean-caches:
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- name: 获取并删除所有缓存
uses: actions/github-script@v6
with:
script: |
const { owner, repo } = context.repo;
let totalDeleted = 0;
// 获取所有缓存
const caches = await github.rest.actions.getActionsCacheList({
owner,
repo,
per_page: 100
});
// 删除匹配的缓存
for (const cache of caches.data.actions_caches) {
if (cache.key.startsWith('ccache-')) {
console.log(`删除缓存: ${cache.key}`);
await github.rest.actions.deleteActionsCacheById({
owner,
repo,
cache_id: cache.id
});
totalDeleted++;
}
}
return `成功删除 ${totalDeleted} 个缓存`;
- name: 重置环境
run: |
rm -rf $HOME/.ccache/*
sudo apt clean
sudo journalctl --vacuum-time=1s
sudo rm -rf /var/log/*
docker system prune -af || true
sudo rm -rf /tmp/*
echo "容器环境已重置!"
echo "清理后空间:"
df -h
================================================
FILE: .github/workflows/Clean_workflows.yml
================================================
name: Clean Workflows
on:
workflow_dispatch:
inputs:
workflow_name:
type: choice
description: '清理的工作流名称'
required: true
default: 'Build SukiSU Ultra'
options:
- Build SukiSU Ultra
- Build KernelSU Next
- Build Kernel Only
- Build KernelSU Official
- Build SukiSU Ultra (40129)
- Build ReSukiSU
count:
description: '最多清理的运行次数'
required: false
default: '20'
delete_failed:
description: '是否删除失败的运行记录'
required: false
type: boolean
default: true
delete_success:
description: '是否删除成功的运行记录'
required: false
type: boolean
default: false
delete_cancelled:
description: '是否删除已取消的运行记录'
required: false
type: boolean
default: true
reverse_order:
description: '是否从旧到新开始清理'
required: false
type: boolean
default: true
permissions:
actions: write
jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- name: 安装 GitHub CLI 和 jq
run: |
sudo apt-get update
sudo apt-get install -y gh jq
- name: 认证 GitHub CLI
run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token
- name: 清理指定工作流及本工作流运行记录
env:
REPO: ${{ github.repository }}
COUNT: ${{ inputs.count }}
DELETE_FAILED: ${{ inputs.delete_failed }}
DELETE_SUCCESS: ${{ inputs.delete_success }}
DELETE_CANCELLED: ${{ inputs.delete_cancelled }}
REVERSE_ORDER: ${{ inputs.reverse_order }}
WORKFLOW_NAME: ${{ inputs.workflow_name }}
CURRENT_RUN_ID: ${{ github.run_id }}
run: |
set -e
echo "当前仓库:$REPO"
echo "查找工作流 \"$WORKFLOW_NAME\" 的 ID..."
WORKFLOW_ID=$(gh api repos/$REPO/actions/workflows | jq -r ".workflows[] | select(.name == \"$WORKFLOW_NAME\") | .id")
if [ -z "$WORKFLOW_ID" ]; then
echo "未找到工作流 \"$WORKFLOW_NAME\",退出。"
exit 1
fi
echo "开始分页获取所有运行记录..."
PER_PAGE=100
PAGE=1
MATCHED_RUNS="[]"
while true; do
RESP=$(gh api "repos/$REPO/actions/workflows/$WORKFLOW_ID/runs?per_page=$PER_PAGE&page=$PAGE")
RUNS=$(echo "$RESP" | jq '.workflow_runs')
COUNT_THIS_PAGE=$(echo "$RUNS" | jq 'length')
if [ "$COUNT_THIS_PAGE" -eq 0 ]; then
break
fi
MATCHED_RUNS=$(jq -s 'add' <(echo "$MATCHED_RUNS") <(echo "$RUNS"))
PAGE=$((PAGE + 1))
done
echo "共获取到 $(echo "$MATCHED_RUNS" | jq 'length') 条运行记录。"
# 排序顺序:旧到新 or 新到旧
if [[ "$REVERSE_ORDER" == "true" ]]; then
SORTED_RUNS=$(echo "$MATCHED_RUNS" | jq 'sort_by(.run_started_at)')
else
SORTED_RUNS=$(echo "$MATCHED_RUNS" | jq 'sort_by(.run_started_at) | reverse')
fi
# 仅保留前 N 条
TO_DELETE_RUNS=$(echo "$SORTED_RUNS" | jq ".[0:${COUNT}]")
echo "$TO_DELETE_RUNS" | jq -c '.[]' | while read run; do
ID=$(echo "$run" | jq -r '.id')
STATUS=$(echo "$run" | jq -r '.conclusion')
STATE=$(echo "$run" | jq -r '.status')
if [[ "$STATE" == "in_progress" || "$STATE" == "queued" ]]; then
echo "跳过运行 ID: $ID(状态为 $STATE)"
continue
fi
if [[ "$STATUS" == "failure" && "$DELETE_FAILED" != "true" ]]; then continue; fi
if [[ "$STATUS" == "success" && "$DELETE_SUCCESS" != "true" ]]; then continue; fi
if [[ "$STATUS" == "cancelled" && "$DELETE_CANCELLED" != "true" ]]; then continue; fi
echo "删除运行记录 ID: $ID (状态: $STATUS)"
gh api -X DELETE "repos/$REPO/actions/runs/$ID" || echo "删除失败"
done
echo "清理本工作流运行记录..."
SELF_WORKFLOW_ID=$(gh api repos/$REPO/actions/workflows | jq -r '.workflows[] | select(.name == "清理工作流运行记录") | .id')
if [ -n "$SELF_WORKFLOW_ID" ]; then
SELF_RUNS=$(gh api "repos/$REPO/actions/workflows/$SELF_WORKFLOW_ID/runs?per_page=50" | jq -c '.workflow_runs[]')
echo "$SELF_RUNS" | while read run; do
ID=$(echo "$run" | jq -r '.id')
if [[ "$ID" == "$CURRENT_RUN_ID" ]]; then
echo "跳过当前运行 ID: $ID"
continue
fi
echo "删除本工作流运行记录 ID: $ID"
gh api -X DELETE "repos/$REPO/actions/runs/$ID" || echo "删除失败"
done
fi
================================================
FILE: README.md
================================================
# ⭐⭐⭐ Star This Project ⭐⭐⭐
如果您觉得这个项目对您有帮助,请给我一个 ``Star`` 或 ``进行赞助``!您的支持是我持续改进的动力。❤❤❤
如果遇到问题欢迎提交``issue``!也随时欢迎``Pull Requests``!
[](https://t.me/gki_kernels_xiaoxiaow) [](https://www.coolapk.com/u/24701380)
<img width="250" height="250" alt="image" src="https://github.com/user-attachments/assets/55acad97-8fe6-4de7-b9ce-90da9552a212" />
## OnePlus 开源地址
[](https://github.com/Xiaomichael/kernel_manifest)
## 设备支持
支持欧加真内核版本 `5.10-6.6` 的设备,只要跑出来内核版本号一样(或大于的可以尝试一下)就可以用
内核版本为 `6.12` 的可以去这个 [专用仓库](https://github.com/Xiaomichael/oppo_oplus_realme_sm8850)
## KernelSU管理器支持
支持 ``ReSukiSU`` ``SukiSU Ultra`` ``KernelSU Next`` ``KernelSU Official``, 当然你也可以编译仅加入优化的 ``无 Root`` 内核
## 使用指南
### ① 分支选择
1. 点击 `Branches` 切换处理器分支
2. 选择适合您设备的配置 (Tips: 如果实在找不到代号名称去网上搜搜)
<img width="376" height="77" alt="{B57A09D0-EC2F-4B86-9821-9C6CAC6435CF}" src="https://github.com/user-attachments/assets/0f97b652-b1e4-484d-90c0-9e36bc15cdf0" />
### ② 配置文件说明
- `_b` 后缀:ColorOS/OxygenOS 16
- `_v` 后缀:ColorOS/OxygenOS 15
- `_u` 后缀:ColorOS/OxygenOS 14
- `_t` 后缀:ColorOS/OxygenOS 13
<img width="1122" height="257" alt="image" src="https://github.com/user-attachments/assets/24631b01-ec9d-4f77-a764-476cfe522537" />
### ③ 配置开关建议
- **SUSFS选项**:SUSFS在编译时已经改为可选,看你的需求进行开关。近期上游在拉💩💩💩, 建议关闭
- **KPM选项**:仅在 ``SukiSU Ultra`` ``ReSukiSU`` 支持开启,建议禁用以减少电量消耗,挂🐕去④
- **lz4kd**:
- ``6.1系``内核:建议关闭该选项以获得更好的 `lz4 + zstd` 压缩方式
- ``6.6系``内核:建议关闭该选项以获得更好的 `lz4` 压缩方式
- ``5.10 - 5.15系``内核:建议保持开启
- **BBR算法**:对手机日用无太大意义甚至可能``负优化``,推荐关闭
- **BBG基带守护**: 推荐开启,看名字就知道是干啥的
- **⚠️代理优化**: 骁龙芯片可以开,联发科芯片 `千万不要开` ,否则出现恶性Bug!
- **是否添加Unicode零宽绕过修复补丁**: 仅推荐内核KMI版本为``android12-5.10``开启, ``5.15 - 6.12``可以使用 [这个 LSPosed 模块](https://t.me/real5ec1cff/271) 无痛修复
================================================
FILE: local/Build_KernelSU.sh
================================================
#!/bin/bash
#export all_proxy=socks5://192.168.x.x:x/
set -e
clear
echo "================================================"
echo " KernelSU OnePlus Kernel Build Configuration "
echo "================================================"
echo " 按回车键可直接使用 [方括号] 中的默认值"
echo ""
ask() {
local prompt default reply
prompt="$1"
default="$2"
read -p "$prompt [$default]: " reply
echo "${reply:-$default}"
}
CPU=$(ask "请输入 CPU 分支 (例如: sm8750, sm8650, sm8550, sm8475)" "sm8650")
FEIL=$(ask "请输入手机型号 (例如: oneplus_13_b, oneplus_12_b, oneplus_11_b)" "oneplus_12_b")
ANDROID_VERSION=$(ask "请输入内核安卓 KMI 版本 (android15, android14, android13, android12)" "android14")
KERNEL_VERSION=$(ask "请输入内核版本 (6.6, 6.1, 5.15, 5.10)" "6.1")
SUSFS=$(ask "是否启用 SUSFS? (On/Off)" "Off")
lz4kd=$(ask "是否启用 lz4kd? (6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4) (On/Off)" "Off")
bbr=$(ask "是否启用 BBR 拥塞控制算法? (On/Off)" "Off")
bbg=$(ask "是否启用 Baseband-Guard 基带防护? (On/Off)" "On")
proxy=$(ask "是否添加代理性能优化? (如为联发科 CPU 必须选择 Off) (On/Off)" "On")
UNICODE_BYPASS=$(ask "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复) (On/Off)" "Off")
clear
echo ""
echo "================================================="
echo " 配置摘要"
echo "================================================="
echo "手机型号 : $FEIL"
echo "CPU 分支 : $CPU"
echo "安卓 KMI 版本 : $ANDROID_VERSION"
echo "内核版本 : $KERNEL_VERSION"
echo "是否启用 SUSFS : $SUSFS"
echo "是否启用 lz4kd : $lz4kd"
echo "是否启用 BBR : $bbr"
echo "是否启用 Baseband-Guard : $bbg"
echo "是否启用代理优化 : $proxy"
echo "是否启用 Unicode 绕过修复 : $UNICODE_BYPASS"
echo "================================================="
read -p "按回车键开始构建流程..."
clear
echo "📦 正在准备构建工作空间..."
WORKSPACE=$PWD/build_workspace
sudo rm -rf "$WORKSPACE"
mkdir -p "$WORKSPACE"
cd "$WORKSPACE"
echo "📦 正在安装构建依赖..."
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
python3 git curl ccache libelf-dev \
build-essential flex bison libssl-dev \
libncurses-dev liblz4-tool zlib1g-dev \
libxml2-utils rsync unzip python3-pip gawk dos2unix
clear
echo "✅ 必要构建依赖安装完成"
echo "⚙️ 正在配置 ccache 缓存..."
if [ "$SUSFS" == "On" ]; then
export CCACHE_DIR="$HOME/.ccache_${FEIL}_Official_SUSFS"
else
export CCACHE_DIR="$HOME/.ccache_${FEIL}_Official_NoSUSFS"
fi
export CCACHE_COMPILERCHECK="%compiler% -dumpmachine; %compiler% -dumpversion"
export CCACHE_NOHASHDIR="true"
export CCACHE_HARDLINK="true"
export CCACHE_MAXSIZE="20G"
export PATH="/usr/lib/ccache:$PATH"
mkdir -p "$CCACHE_DIR"
echo "✅ ccache 缓存目录: $CCACHE_DIR"
ccache -M "$CCACHE_MAXSIZE"
ccache -z
echo "🔐 正在配置 Git 用户信息..."
git config --global user.name "Local Builder"
git config --global user.email "builder@localhost"
echo "✅ Git 用户信息配置完成"
if ! command -v repo &> /dev/null; then
echo "📥 未检测到 repo 工具,正在安装..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo 工具安装完成"
else
echo "ℹ️ 已检测到 repo 工具,跳过安装"
fi
echo "⬇️ 正在准备内核源码目录..."
sudo rm -rf kernel_workspace
mkdir -p kernel_workspace && cd kernel_workspace
echo "🌐 正在初始化 oneplus/${CPU} 分支、机型 ${FEIL} 的 manifest..."
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${CPU} -m ${FEIL}.xml --depth=1
echo "🔄 正在同步内核源码仓库 (使用 $(nproc --all) 线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
echo "✅ 内核源码同步完成"
export adv=$ANDROID_VERSION
echo "🔧 正在清理并修改版本字符串..."
rm -f kernel_platform/common/android/abi_gki_protected_exports_* || echo "common 目录下无受保护导出表,无需删除"
rm -f kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "msm-kernel 目录下无受保护导出表,无需删除"
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "$KERNEL_VERSION" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${ANDROID_VERSION}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sed -i "s/-4k/${ESCAPED_SUFFIX}/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/\${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/\${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核仓库准备完毕并完成版本号清理"
if [ "$bbg" = "On" ]; then
set -e
cd kernel_platform/common
echo "🛡️ 正在配置 Baseband-Guard 基带防护..."
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
cd ../..
echo "✅ Baseband-Guard 配置完成"
fi
echo "⚡ 正在配置 KernelSU..."
cd kernel_platform
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/refs/heads/main/kernel/setup.sh" | bash -s main
cd KernelSU
KSU_VERSION=$(expr $(curl -sI "https://api.github.com/repos/tiann/KernelSU/commits?sha=main&per_page=1" | grep -i "link:" | sed -n 's/.*page=\([0-9]*\)>; rel="last".*/\1/p') "+" 30000)
echo "KSUVER=$KSU_VERSION" >> $GITHUB_ENV
sed -i "s/DKSU_VERSION=16/DKSU_VERSION=${KSU_VERSION}/" kernel/Kbuild
echo "✅ KernelSU 版本信息配置完成"
cd ../..
echo "🔧 正在克隆所需补丁..."
if [ "$SUSFS" == "On" ]; then
git clone https://github.com/cctv18/susfs4oki.git -b oki-${ANDROID_VERSION}-${KERNEL_VERSION}
fi
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
echo "📝 正在复制补丁文件..."
cp ../susfs4oki/kernel_patches/50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch ./common/
cp ../susfs4oki/kernel_patches/fs/* ./common/fs/
cp ../susfs4oki/kernel_patches/include/linux/* ./common/include/linux/
fi
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "$UNICODE_BYPASS" = "On" ]; then
if [ "$KERNEL_VERSION" = "6.1" ] || [ "$KERNEL_VERSION" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "$KERNEL_VERSION" = "5.15" ] || [ "$KERNEL_VERSION" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "$lz4kd" = "On" ]; then
echo "🚀 正在复制 lz4kd 相关补丁..."
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
echo "🔧 正在应用补丁..."
if [ "$SUSFS" == "On" ]; then
cd ./KernelSU
patch -p1 < 10_enable_susfs_for_ksu.patch || true
fi
if [ "$SUSFS" == "On" ]; then
cd ../common
patch -p1 < 50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch || true
cp ../../kernel_patches/69_hide_stuff.patch ./
patch -p1 -F 3 < 69_hide_stuff.patch
elif [ "$SUSFS" == "Off" ]; then
cd ./common
fi
if [ "$UNICODE_BYPASS" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "$lz4kd" = "Off" ] && [ "$KERNEL_VERSION" = "6.1" ]; then
echo "📦 正在为 6.1 应用 lz4 + zstd 补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "$lz4kd" = "Off" ] && [ "$KERNEL_VERSION" = "6.6" ]; then
echo "📦 正在为 6.6 应用 lz4 补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "$lz4kd" = "On" ]; then
echo "📦 正在应用 lz4kd / lz4k_oplus 补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${KERNEL_VERSION}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${KERNEL_VERSION}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
echo "✅ 所有补丁应用完成"
cd ../..
if [ "$KERNEL_VERSION" = "6.6" ]; then
cd kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "$FEIL" = "oneplus_ace5_ultra" ] || [ "$FEIL" = "oneplus_ace5_ultra_b" ]; then
echo "⚠️ Ace5 Ultra 需要使用 mt6991 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "mt6991"
else
echo "⚙️ 使用 sm8750 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "sm8750"
fi
cp ./SCHED_PATCH/fengchi_$FEIL.patch ./
if [[ -f "fengchi_$FEIL.patch" ]]; then
echo "⚙️ 开始应用风驰补丁"
dos2unix "fengchi_$FEIL.patch"
patch -p1 -F 3 < "fengchi_$FEIL.patch"
echo "✅ 完美风驰补丁应用完成"
else
echo "⚠️ 该6.6机型暂不支持风驰补丁, 正在应用OGKI转GKI补丁"
sed -i '1iobj-y += hmbird_patch.o' drivers/Makefile
wget https://github.com/Numbersf/Action-Build/raw/SukiSU-Ultra/patches/hmbird_patch.patch
echo "⚙️ 正在打OGKI转换GKI补丁"
patch -p1 -F 3 < hmbird_patch.patch
echo "✅ OGKI转换GKI_patch完成"
fi
cd ../..
fi
echo "⚙️ 正在配置内核编译选项..."
DEFCONFIG_PATH="$WORKSPACE/kernel_workspace/kernel_platform/common/arch/arm64/configs/gki_defconfig"
echo "CONFIG_KSU=y" >> "$DEFCONFIG_PATH"
#添加对 Mountify (backslashxx/mountify) 模块的支持
echo "CONFIG_TMPFS_XATTR=y" >> "$DEFCONFIG_PATH"
echo "CONFIG_TMPFS_POSIX_ACL=y" >> "$DEFCONFIG_PATH"
if [ "$SUSFS" == "On" ]; then
echo "⚡ 配置 SUSFS 中..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_KSU_SUSFS=y
CONFIG_KSU_SUSFS_SUS_PATH=y
CONFIG_KSU_SUSFS_SUS_MOUNT=y
CONFIG_KSU_SUSFS_SUS_KSTAT=y
CONFIG_KSU_SUSFS_SPOOF_UNAME=y
CONFIG_KSU_SUSFS_ENABLE_LOG=y
CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y
CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y
CONFIG_KSU_SUSFS_OPEN_REDIRECT=y
CONFIG_KSU_SUSFS_SUS_MAP=y
EOT
else
echo "CONFIG_KSU_SUSFS=n" >> "$DEFCONFIG_PATH"
fi
if [ "$bbg" = "On" ]; then
echo "⚡ 配置 BBG 中..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_BBG=y
CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,baseband_guard"
EOT
fi
if [ "$bbr" = "On" ]; then
echo "🌐 启用 BBR 网络算法..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BBR=y
CONFIG_NET_SCH_FQ=y
CONFIG_TCP_CONG_BIC=n
CONFIG_TCP_CONG_WESTWOOD=n
CONFIG_TCP_CONG_HTCP=n
EOT
fi
if [ "$lz4kd" = "On" ]; then
echo "📦 启用 lz4kd 与 写回支持..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_CRYPTO_LZ4KD=y
CONFIG_CRYPTO_LZ4K_OPLUS=y
CONFIG_ZRAM_WRITEBACK=y
EOT
fi
if [ "$KERNEL_VERSION" = "6.1" ] || [ "$KERNEL_VERSION" = "6.6" ]; then
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" >> "$DEFCONFIG_PATH"
fi
if [ "$proxy" = "On" ]; then
echo "📦 添加代理相关网络优化选项..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_BPF_STREAM_PARSER=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_SET=y
CONFIG_IP_SET=y
CONFIG_IP_SET_MAX=65534
CONFIG_IP_SET_BITMAP_IP=y
CONFIG_IP_SET_BITMAP_IPMAC=y
CONFIG_IP_SET_BITMAP_PORT=y
CONFIG_IP_SET_HASH_IP=y
CONFIG_IP_SET_HASH_IPMARK=y
CONFIG_IP_SET_HASH_IPPORT=y
CONFIG_IP_SET_HASH_IPPORTIP=y
CONFIG_IP_SET_HASH_IPPORTNET=y
CONFIG_IP_SET_HASH_IPMAC=y
CONFIG_IP_SET_HASH_MAC=y
CONFIG_IP_SET_HASH_NETPORTNET=y
CONFIG_IP_SET_HASH_NET=y
CONFIG_IP_SET_HASH_NETNET=y
CONFIG_IP_SET_HASH_NETPORT=y
CONFIG_IP_SET_HASH_NETIFACE=y
CONFIG_IP_SET_LIST_SET=y
CONFIG_IP6_NF_NAT=y
CONFIG_IP6_NF_TARGET_MASQUERADE=y
EOT
fi
if [ "$KERNEL_VERSION" = "5.10" ] || [ "$KERNEL_VERSION" = "5.15" ]; then
echo "📦 正在为 5.10 / 5.15 系配置 LTO..."
sed -i 's/^CONFIG_LTO=n/CONFIG_LTO=y/' "$DEFCONFIG_PATH"
sed -i 's/^CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG_PATH"
sed -i 's/^CONFIG_LTO_CLANG_NONE=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG_PATH"
grep -q '^CONFIG_LTO_CLANG_THIN=y' "$DEFCONFIG_PATH" || echo 'CONFIG_LTO_CLANG_THIN=y' >> "$DEFCONFIG_PATH"
fi
echo "CONFIG_HEADERS_INSTALL=n" >> "$DEFCONFIG_PATH"
sed -i 's/check_defconfig//' "$WORKSPACE/kernel_workspace/kernel_platform/common/build.config.gki"
echo "✅ defconfig 配置更新完成"
cd ../..
echo "🔨 开始内核编译..."
cd "$WORKSPACE/kernel_workspace/kernel_platform/common"
MAKE_CMD_COMMON="make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC=\"ccache clang\" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all"
export KBUILD_BUILD_USER="xiaoxiaow"
export KBUILD_BUILD_HOST="xiaoxiaow_build"
if [ "$KERNEL_VERSION" = "6.1" ]; then
export KBUILD_BUILD_TIMESTAMP="Tue Mar 10 03:53:33 UTC 2026"
export KBUILD_BUILD_VERSION=1
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH"
eval "$MAKE_CMD_COMMON KCFLAGS+=-O2"
elif [ "$KERNEL_VERSION" = "6.6" ]; then
export KBUILD_BUILD_VERSION=1
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r510928/bin:$PATH"
eval "$MAKE_CMD_COMMON KCFLAGS+=-O2"
elif [ "$KERNEL_VERSION" = "5.15" ]; then
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r450784e/bin:$PATH"
eval "$MAKE_CMD_COMMON"
elif [ "$KERNEL_VERSION" = "5.10" ]; then
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts-master/clang/host/linux-x86/clang-r416183b/bin:$PATH"
eval "make -j$(nproc --all) LLVM_IAS=1 LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC=\"ccache clang\" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all"
else
echo "❌ 不支持的内核版本: $KERNEL_VERSION" && exit 1
fi
echo "📊 当前 ccache 统计信息如下:"
ccache -s
echo "✅ 内核编译完成"
cd "$WORKSPACE"
echo "📦 正在获取 AnyKernel3 并准备打包..."
git clone https://github.com/Xiaomichael/AnyKernel3 --depth=1
rm -rf ./AnyKernel3/.git
IMAGE_PATH=$(find "$WORKSPACE/kernel_workspace/kernel_platform/common/out/" -name "Image" | head -n 1)
if [ -z "$IMAGE_PATH" ]; then echo "❌ 严重错误:编译完成后未找到 Kernel Image!" && exit 1; fi
echo "✅ 已找到 Kernel Image: $IMAGE_PATH"
cp "$IMAGE_PATH" ./AnyKernel3/Image
if [ "$lz4kd" = "On" ]; then
ARTIFACT_NAME="${FEIL}_KernelSU_lz4kd_${KSUVER}"
elif [ "$KERNEL_VERSION" = "6.1" ]; then
ARTIFACT_NAME="${FEIL}_KernelSU_lz4_zstd_${KSUVER}"
elif [ "$KERNEL_VERSION" = "6.6" ]; then
ARTIFACT_NAME="${FEIL}_KernelSU_lz4_${KSUVER}"
else
ARTIFACT_NAME="${FEIL}_KernelSU_${KSUVER}"
fi
if [ "$SUSFS" = "On" ]; then
ARTIFACT_NAME="${ARTIFACT_NAME}_SUSFS"
fi
FINAL_ZIP_NAME="${ARTIFACT_NAME}.zip"
echo "📦 正在创建最终可刷入压缩包: ${FINAL_ZIP_NAME}..."
cd AnyKernel3 && zip -q -r9 "../${FINAL_ZIP_NAME}" ./* && cd ..
echo ""
echo "================================================="
echo " 构建完成!"
echo "================================================="
echo "-> 可刷入内核压缩包路径: $WORKSPACE/${FINAL_ZIP_NAME}"
ZRAM_KO_PATH=$(find "$WORKSPACE/kernel_workspace/kernel_platform/common/out/" -name "zram.ko" | head -n 1)
if [ -n "$ZRAM_KO_PATH" ]; then
cp "$ZRAM_KO_PATH" "$WORKSPACE/"
echo "-> zram.ko 模块路径: $WORKSPACE/zram.ko"
fi
echo "================================================="
echo ""
================================================
FILE: local/Build_Next.sh
================================================
#!/bin/bash
#export all_proxy=socks5://192.168.x.x:x/
set -e
clear
echo "===================================================="
echo " KernelSU Next OnePlus Kernel Build Configuration "
echo "===================================================="
echo " 按回车键可直接使用 [方括号] 中的默认值"
echo ""
ask() {
local prompt default reply
prompt="$1"
default="$2"
read -p "$prompt [$default]: " reply
echo "${reply:-$default}"
}
CPU=$(ask "请输入 CPU 分支 (例如: sm8750, sm8650, sm8550, sm8475)" "sm8650")
FEIL=$(ask "请输入手机型号 (例如: oneplus_13_b, oneplus_12_b, oneplus_11_b)" "oneplus_12_b")
ANDROID_VERSION=$(ask "请输入内核安卓 KMI 版本 (android15, android14, android13, android12)" "android14")
KERNEL_VERSION=$(ask "请输入内核版本 (6.6, 6.1, 5.15, 5.10)" "6.1")
SUSFS=$(ask "是否启用 SUSFS? (On/Off)" "Off")
lz4kd=$(ask "是否启用 lz4kd? (6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4) (On/Off)" "Off")
bbr=$(ask "是否启用 BBR 拥塞控制算法? (On/Off)" "Off")
bbg=$(ask "是否启用 Baseband-Guard 基带防护? (On/Off)" "On")
proxy=$(ask "是否添加代理性能优化? (如为联发科 CPU 必须选择 Off) (On/Off)" "On")
UNICODE_BYPASS=$(ask "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复) (On/Off)" "Off")
clear
echo ""
echo "================================================="
echo " 配置摘要"
echo "================================================="
echo "手机型号 : $FEIL"
echo "CPU 分支 : $CPU"
echo "安卓 KMI 版本 : $ANDROID_VERSION"
echo "内核版本 : $KERNEL_VERSION"
echo "是否启用 SUSFS : $SUSFS"
echo "是否启用 lz4kd : $lz4kd"
echo "是否启用 BBR : $bbr"
echo "是否启用 Baseband-Guard : $bbg"
echo "是否启用代理优化 : $proxy"
echo "是否启用 Unicode 绕过修复 : $UNICODE_BYPASS"
echo "================================================="
read -p "按回车键开始构建流程..."
clear
echo "📦 正在准备构建工作空间..."
WORKSPACE=$PWD/build_workspace
sudo rm -rf "$WORKSPACE"
mkdir -p "$WORKSPACE"
cd "$WORKSPACE"
echo "📦 正在安装构建依赖..."
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
python3 git curl ccache libelf-dev \
build-essential flex bison libssl-dev \
libncurses-dev liblz4-tool zlib1g-dev \
libxml2-utils rsync unzip python3-pip gawk dos2unix
clear
echo "✅ 必要构建依赖安装完成"
echo "⚙️ 正在配置 ccache 缓存..."
if [ "$SUSFS" == "On" ]; then
export CCACHE_DIR="$HOME/.ccache_${FEIL}_Next_SUSFS"
else
export CCACHE_DIR="$HOME/.ccache_${FEIL}_Next_NoSUSFS"
fi
export CCACHE_COMPILERCHECK="%compiler% -dumpmachine; %compiler% -dumpversion"
export CCACHE_NOHASHDIR="true"
export CCACHE_HARDLINK="true"
export CCACHE_MAXSIZE="20G"
export PATH="/usr/lib/ccache:$PATH"
mkdir -p "$CCACHE_DIR"
echo "✅ ccache 缓存目录: $CCACHE_DIR"
ccache -M "$CCACHE_MAXSIZE"
ccache -z
echo "🔐 正在配置 Git 用户信息..."
git config --global user.name "Local Builder"
git config --global user.email "builder@localhost"
echo "✅ Git 用户信息配置完成"
if ! command -v repo &> /dev/null; then
echo "📥 未检测到 repo 工具,正在安装..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo 工具安装完成"
else
echo "ℹ️ 已检测到 repo 工具,跳过安装"
fi
echo "⬇️ 正在准备内核源码目录..."
sudo rm -rf kernel_workspace
mkdir -p kernel_workspace && cd kernel_workspace
echo "🌐 正在初始化 oneplus/${CPU} 分支、机型 ${FEIL} 的 manifest..."
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${CPU} -m ${FEIL}.xml --depth=1
echo "🔄 正在同步内核源码仓库 (使用 $(nproc --all) 线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
echo "✅ 内核源码同步完成"
export adv=$ANDROID_VERSION
echo "🔧 正在清理并修改版本字符串..."
rm -f kernel_platform/common/android/abi_gki_protected_exports_* || echo "common 目录下无受保护导出表,无需删除"
rm -f kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "msm-kernel 目录下无受保护导出表,无需删除"
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "$KERNEL_VERSION" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${ANDROID_VERSION}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sed -i "s/-4k/${ESCAPED_SUFFIX}/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/\${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/\${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核仓库准备完毕并完成版本号清理"
if [ "$bbg" = "On" ]; then
set -e
cd kernel_platform/common
echo "🛡️ 正在配置 Baseband-Guard 基带防护..."
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
cd ../..
echo "✅ Baseband-Guard 配置完成"
fi
echo "⚡ 正在配置 KernelSU Next..."
cd kernel_platform
curl -LSs "https://raw.githubusercontent.com/pershoot/KernelSU-Next/dev-susfs/kernel/setup.sh" | bash -s dev-susfs
cd KernelSU-Next
KSU_VERSION=$(expr $(curl -sI "https://api.github.com/repos/KernelSU-Next/KernelSU-Next/commits?sha=dev&per_page=1" | grep -i "link:" | sed -n 's/.*page=\([0-9]*\)>; rel="last".*/\1/p') "+" 30000)
export KSUVER=$(expr $KSU_VERSION)
sed -i "s/DKSU_VERSION=11998/DKSU_VERSION=${KSU_VERSION}/" kernel/Makefile
echo "✅ KernelSU Next 版本信息配置完成."
cd ../..
echo "🔧 正在克隆所需补丁..."
if [ "$SUSFS" == "On" ]; then
git clone https://github.com/cctv18/susfs4oki.git -b oki-${ANDROID_VERSION}-${KERNEL_VERSION}
fi
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
echo "📝 正在复制补丁文件..."
if [ "$SUSFS" == "On" ]; then
cp ../susfs4oki/kernel_patches/50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch ./common/
cp ../susfs4oki/kernel_patches/fs/* ./common/fs/
cp ../susfs4oki/kernel_patches/include/linux/* ./common/include/linux/
else
cp ../kernel_patches/sukisu/scope_min_manual_hooks_v1.9.patch ./common/
fi
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "$UNICODE_BYPASS" = "On" ]; then
if [ "$KERNEL_VERSION" = "6.1" ] || [ "$KERNEL_VERSION" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "$KERNEL_VERSION" = "5.15" ] || [ "$KERNEL_VERSION" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "$lz4kd" = "On" ]; then
echo "🚀 正在复制 lz4kd 相关补丁..."
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
echo "🔧 正在应用补丁..."
cd ./common
if [ "$UNICODE_BYPASS" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "$lz4kd" = "Off" ] && [ "$KERNEL_VERSION" = "6.1" ]; then
echo "📦 正在为 6.1 应用 lz4 + zstd 补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "$lz4kd" = "Off" ] && [ "$KERNEL_VERSION" = "6.6" ]; then
echo "📦 正在为 6.6 应用 lz4 补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "$lz4kd" = "On" ]; then
echo "📦 正在应用 lz4kd / lz4k_oplus 补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${KERNEL_VERSION}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${KERNEL_VERSION}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
if [ "$SUSFS" == "On" ]; then
patch -p1 < 50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch || true
cp ../../kernel_patches/69_hide_stuff.patch ./
patch -p1 -F 3 < 69_hide_stuff.patch || true
else
echo "📦 应用 MANUAL_HOOK 补丁..."
patch -p1 --fuzz=3 < scope_min_manual_hooks_v1.9.patch
fi
echo "✅ 所有补丁应用完成"
cd ../..
if [ "$KERNEL_VERSION" = "6.6" ]; then
cd kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "$FEIL" = "oneplus_ace5_ultra" ] || [ "$FEIL" = "oneplus_ace5_ultra_b" ]; then
echo "⚠️ Ace5 Ultra 需要使用 mt6991 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "mt6991"
else
echo "⚙️ 使用 sm8750 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "sm8750"
fi
cp ./SCHED_PATCH/fengchi_$FEIL.patch ./
if [[ -f "fengchi_$FEIL.patch" ]]; then
echo "⚙️ 开始应用风驰补丁"
dos2unix "fengchi_$FEIL.patch"
patch -p1 -F 3 < "fengchi_$FEIL.patch"
echo "✅ 完美风驰补丁应用完成"
else
echo "⚠️ 该6.6机型暂不支持风驰补丁, 正在应用OGKI转GKI补丁"
sed -i '1iobj-y += hmbird_patch.o' drivers/Makefile
wget https://github.com/Numbersf/Action-Build/raw/SukiSU-Ultra/patches/hmbird_patch.patch
echo "⚙️ 正在打OGKI转换GKI补丁"
patch -p1 -F 3 < hmbird_patch.patch
echo "✅ OGKI转换GKI_patch完成"
fi
cd ../..
fi
echo "⚙️ 正在配置内核编译选项..."
DEFCONFIG_PATH="$WORKSPACE/kernel_workspace/kernel_platform/common/arch/arm64/configs/gki_defconfig"
echo "CONFIG_KSU=y" >> "$DEFCONFIG_PATH"
if [ "$SUSFS" = "On" ]; then
echo "📦 启用 SUSFS 功能..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_KSU_SUSFS=y
CONFIG_KSU_SUSFS_SUS_PATH=y
CONFIG_KSU_SUSFS_SUS_MOUNT=y
CONFIG_KSU_SUSFS_SUS_KSTAT=y
CONFIG_KSU_SUSFS_SPOOF_UNAME=y
CONFIG_KSU_SUSFS_ENABLE_LOG=y
CONFIG_KSU_SUSFS_HIDE_KSU_SUSFS_SYMBOLS=y
CONFIG_KSU_SUSFS_SPOOF_CMDLINE_OR_BOOTCONFIG=y
CONFIG_KSU_SUSFS_OPEN_REDIRECT=y
CONFIG_KSU_SUSFS_SUS_MAP=y
EOT
else
echo "📦 启用 MANUAL_HOOK..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_KSU_SUSFS=n
CONFIG_KSU_MANUAL_HOOK=y
EOT
fi
#添加对 Mountify (backslashxx/mountify) 模块的支持
echo "CONFIG_TMPFS_XATTR=y" >> "$DEFCONFIG_PATH"
echo "CONFIG_TMPFS_POSIX_ACL=y" >> "$DEFCONFIG_PATH"
if [ "$bbg" = "On" ]; then
echo "⚡ 配置 BBG 中..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_BBG=y
CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,baseband_guard"
EOT
fi
if [ "$bbr" = "On" ]; then
echo "🌐 启用 BBR 网络算法..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BBR=y
CONFIG_NET_SCH_FQ=y
CONFIG_TCP_CONG_BIC=n
CONFIG_TCP_CONG_WESTWOOD=n
CONFIG_TCP_CONG_HTCP=n
EOT
fi
if [ "$lz4kd" = "On" ]; then
echo "📦 启用 lz4kd 与 写回支持..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_CRYPTO_LZ4KD=y
CONFIG_CRYPTO_LZ4K_OPLUS=y
CONFIG_ZRAM_WRITEBACK=y
EOT
fi
if [ "$KERNEL_VERSION" = "6.1" ] || [ "$KERNEL_VERSION" = "6.6" ]; then
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" >> "$DEFCONFIG_PATH"
fi
if [ "$proxy" = "On" ]; then
echo "📦 添加代理相关网络优化选项..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_BPF_STREAM_PARSER=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_SET=y
CONFIG_IP_SET=y
CONFIG_IP_SET_MAX=65534
CONFIG_IP_SET_BITMAP_IP=y
CONFIG_IP_SET_BITMAP_IPMAC=y
CONFIG_IP_SET_BITMAP_PORT=y
CONFIG_IP_SET_HASH_IP=y
CONFIG_IP_SET_HASH_IPMARK=y
CONFIG_IP_SET_HASH_IPPORT=y
CONFIG_IP_SET_HASH_IPPORTIP=y
CONFIG_IP_SET_HASH_IPPORTNET=y
CONFIG_IP_SET_HASH_IPMAC=y
CONFIG_IP_SET_HASH_MAC=y
CONFIG_IP_SET_HASH_NETPORTNET=y
CONFIG_IP_SET_HASH_NET=y
CONFIG_IP_SET_HASH_NETNET=y
CONFIG_IP_SET_HASH_NETPORT=y
CONFIG_IP_SET_HASH_NETIFACE=y
CONFIG_IP_SET_LIST_SET=y
CONFIG_IP6_NF_NAT=y
CONFIG_IP6_NF_TARGET_MASQUERADE=y
EOT
fi
if [ "$KERNEL_VERSION" = "5.10" ] || [ "$KERNEL_VERSION" = "5.15" ]; then
echo "📦 正在为 5.10 / 5.15 系配置 LTO..."
sed -i 's/^CONFIG_LTO=n/CONFIG_LTO=y/' "$DEFCONFIG_PATH"
sed -i 's/^CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG_PATH"
sed -i 's/^CONFIG_LTO_CLANG_NONE=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG_PATH"
grep -q '^CONFIG_LTO_CLANG_THIN=y' "$DEFCONFIG_PATH" || echo 'CONFIG_LTO_CLANG_THIN=y' >> "$DEFCONFIG_PATH"
fi
echo "CONFIG_HEADERS_INSTALL=n" >> "$DEFCONFIG_PATH"
sed -i 's/check_defconfig//' "$WORKSPACE/kernel_workspace/kernel_platform/common/build.config.gki"
echo "✅ defconfig 配置更新完成"
cd ../..
echo "🔨 开始内核编译..."
cd "$WORKSPACE/kernel_workspace/kernel_platform/common"
MAKE_CMD_COMMON="make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC=\"ccache clang\" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all"
export KBUILD_BUILD_USER="xiaoxiaow"
export KBUILD_BUILD_HOST="xiaoxiaow_build"
if [ "$KERNEL_VERSION" = "6.1" ]; then
export KBUILD_BUILD_TIMESTAMP="Tue Mar 10 03:53:33 UTC 2026"
export KBUILD_BUILD_VERSION=1
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH"
eval "$MAKE_CMD_COMMON KCFLAGS+=-O2"
elif [ "$KERNEL_VERSION" = "6.6" ]; then
export KBUILD_BUILD_VERSION=1
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r510928/bin:$PATH"
eval "$MAKE_CMD_COMMON KCFLAGS+=-O2"
elif [ "$KERNEL_VERSION" = "5.15" ]; then
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r450784e/bin:$PATH"
eval "$MAKE_CMD_COMMON"
elif [ "$KERNEL_VERSION" = "5.10" ]; then
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts-master/clang/host/linux-x86/clang-r416183b/bin:$PATH"
eval "make -j$(nproc --all) LLVM_IAS=1 LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC=\"ccache clang\" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all"
else
echo "❌ 不支持的内核版本: $KERNEL_VERSION" && exit 1
fi
echo "📊 当前 ccache 统计信息如下:"
ccache -s
echo "✅ 内核编译完成"
cd "$WORKSPACE"
echo "📦 正在获取 AnyKernel3 并准备打包..."
git clone https://github.com/Xiaomichael/AnyKernel3 --depth=1
rm -rf ./AnyKernel3/.git
IMAGE_PATH=$(find "$WORKSPACE/kernel_workspace/kernel_platform/common/out/" -name "Image" | head -n 1)
if [ -z "$IMAGE_PATH" ]; then echo "❌ 严重错误:编译完成后未找到 Kernel Image!" && exit 1; fi
echo "✅ 已找到 Kernel Image: $IMAGE_PATH"
cp "$IMAGE_PATH" ./AnyKernel3/Image
if [ "$lz4kd" = "On" ]; then
ARTIFACT_NAME="${FEIL}_KernelSU_Next_lz4kd_${KSUVER}"
elif [ "$KERNEL_VERSION" = "6.1" ]; then
ARTIFACT_NAME="${FEIL}_KernelSU_Next_lz4_zstd_${KSUVER}"
elif [ "$KERNEL_VERSION" = "6.6" ]; then
ARTIFACT_NAME="${FEIL}_KernelSU_Next_lz4_${KSUVER}"
else
ARTIFACT_NAME="${FEIL}_KernelSU_Next_${KSUVER}"
fi
if [ "$SUSFS" = "On" ]; then
ARTIFACT_NAME="${ARTIFACT_NAME}_SUSFS"
fi
FINAL_ZIP_NAME="${ARTIFACT_NAME}.zip"
echo "📦 正在创建最终可刷入压缩包: ${FINAL_ZIP_NAME}..."
cd AnyKernel3 && zip -q -r9 "../${FINAL_ZIP_NAME}" ./* && cd ..
echo ""
echo "================================================="
echo " 构建完成!"
echo "================================================="
echo "-> 可刷入内核压缩包路径: $WORKSPACE/${FINAL_ZIP_NAME}"
ZRAM_KO_PATH=$(find "$WORKSPACE/kernel_workspace/kernel_platform/common/out/" -name "zram.ko" | head -n 1)
if [ -n "$ZRAM_KO_PATH" ]; then
cp "$ZRAM_KO_PATH" "$WORKSPACE/"
echo "-> zram.ko 模块路径: $WORKSPACE/zram.ko"
fi
echo "================================================="
echo ""
================================================
FILE: local/Build_Only.sh
================================================
#!/bin/bash
#export all_proxy=socks5://192.168.x.x:x/
set -e
clear
echo "============================================="
echo " OnePlus Kernel Build Configuration "
echo "============================================="
echo " 按回车键可直接使用 [方括号] 中的默认值"
echo ""
ask() {
local prompt default reply
prompt="$1"
default="$2"
read -p "$prompt [$default]: " reply
echo "${reply:-$default}"
}
CPU=$(ask "请输入 CPU 分支 (例如: sm8750, sm8650, sm8550, sm8475)" "sm8650")
FEIL=$(ask "请输入手机型号 (例如: oneplus_13_b, oneplus_12_b, oneplus_11_b)" "oneplus_12_b")
ANDROID_VERSION=$(ask "请输入内核安卓 KMI 版本 (android15, android14, android13, android12)" "android14")
KERNEL_VERSION=$(ask "请输入内核版本 (6.6, 6.1, 5.15, 5.10)" "6.1")
lz4kd=$(ask "是否启用 lz4kd? (6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4) (On/Off)" "Off")
bbr=$(ask "是否启用 BBR 拥塞控制算法? (On/Off)" "Off")
bbg=$(ask "是否启用 Baseband-Guard 基带防护? (On/Off)" "On")
proxy=$(ask "是否添加代理性能优化? (如为联发科 CPU 必须选择 Off) (On/Off)" "On")
UNICODE_BYPASS=$(ask "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复) (On/Off)" "Off")
clear
echo ""
echo "================================================="
echo " 配置摘要"
echo "================================================="
echo "手机型号 : $FEIL"
echo "CPU 分支 : $CPU"
echo "安卓 KMI 版本 : $ANDROID_VERSION"
echo "内核版本 : $KERNEL_VERSION"
echo "是否启用 lz4kd : $lz4kd"
echo "是否启用 BBR : $bbr"
echo "是否启用 Baseband-Guard : $bbg"
echo "是否启用代理优化 : $proxy"
echo "是否启用 Unicode 绕过修复 : $UNICODE_BYPASS"
echo "================================================="
read -p "按回车键开始构建流程..."
clear
echo "📦 正在准备构建工作空间..."
WORKSPACE=$PWD/build_workspace
sudo rm -rf "$WORKSPACE"
mkdir -p "$WORKSPACE"
cd "$WORKSPACE"
echo "📦 正在安装构建依赖..."
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
python3 git curl ccache libelf-dev \
build-essential flex bison libssl-dev \
libncurses-dev liblz4-tool zlib1g-dev \
libxml2-utils rsync unzip python3-pip gawk dos2unix
clear
echo "✅ 必要构建依赖安装完成"
echo "⚙️ 正在配置 ccache 缓存..."
export CCACHE_DIR="$HOME/.ccache_${FEIL}_Kernel"
export CCACHE_COMPILERCHECK="%compiler% -dumpmachine; %compiler% -dumpversion"
export CCACHE_NOHASHDIR="true"
export CCACHE_HARDLINK="true"
export CCACHE_MAXSIZE="20G"
export PATH="/usr/lib/ccache:$PATH"
mkdir -p "$CCACHE_DIR"
echo "✅ ccache 缓存目录: $CCACHE_DIR"
ccache -M "$CCACHE_MAXSIZE"
ccache -z
echo "🔐 正在配置 Git 用户信息..."
git config --global user.name "Local Builder"
git config --global user.email "builder@localhost"
echo "✅ Git 用户信息配置完成"
if ! command -v repo &> /dev/null; then
echo "📥 未检测到 repo 工具,正在安装..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo 工具安装完成"
else
echo "ℹ️ 已检测到 repo 工具,跳过安装"
fi
echo "⬇️ 正在准备内核源码目录..."
sudo rm -rf kernel_workspace
mkdir -p kernel_workspace && cd kernel_workspace
echo "🌐 正在初始化 oneplus/${CPU} 分支、机型 ${FEIL} 的 manifest..."
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${CPU} -m ${FEIL}.xml --depth=1
echo "🔄 正在同步内核源码仓库 (使用 $(nproc --all) 线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
echo "✅ 内核源码同步完成"
export adv=$ANDROID_VERSION
echo "🔧 正在清理并修改版本字符串..."
rm -f kernel_platform/common/android/abi_gki_protected_exports_* || echo "common 目录下无受保护导出表,无需删除"
rm -f kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "msm-kernel 目录下无受保护导出表,无需删除"
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "$KERNEL_VERSION" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${ANDROID_VERSION}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sed -i "s/-4k/${ESCAPED_SUFFIX}/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/\${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/\${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核仓库准备完毕并完成版本号清理"
if [ "$bbg" = "On" ]; then
set -e
cd kernel_platform/common
echo "🛡️ 正在配置 Baseband-Guard 基带防护..."
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
cd ../..
echo "✅ Baseband-Guard 配置完成"
fi
echo "📝 正在复制补丁文件..."
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "$UNICODE_BYPASS" = "On" ]; then
if [ "$KERNEL_VERSION" = "6.1" ] || [ "$KERNEL_VERSION" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "$KERNEL_VERSION" = "5.15" ] || [ "$KERNEL_VERSION" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "$lz4kd" = "On" ]; then
echo "🚀 正在复制 lz4kd 相关补丁..."
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
echo "🔧 正在应用补丁..."
cd ./common
if [ "$UNICODE_BYPASS" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "$lz4kd" = "Off" ] && [ "$KERNEL_VERSION" = "6.1" ]; then
echo "📦 正在为 6.1 应用 lz4 + zstd 补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "$lz4kd" = "Off" ] && [ "$KERNEL_VERSION" = "6.6" ]; then
echo "📦 正在为 6.6 应用 lz4 补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "$lz4kd" = "On" ]; then
echo "📦 正在应用 lz4kd / lz4k_oplus 补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${KERNEL_VERSION}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${KERNEL_VERSION}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
echo "✅ 所有补丁应用完成"
cd ../..
if [ "$KERNEL_VERSION" = "6.6" ]; then
cd kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "$FEIL" = "oneplus_ace5_ultra" ] || [ "$FEIL" = "oneplus_ace5_ultra_b" ]; then
echo "⚠️ Ace5 Ultra 需要使用 mt6991 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "mt6991"
else
echo "⚙️ 使用 sm8750 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b "sm8750"
fi
cp ./SCHED_PATCH/fengchi_$FEIL.patch ./
if [[ -f "fengchi_$FEIL.patch" ]]; then
echo "⚙️ 开始应用风驰补丁"
dos2unix "fengchi_$FEIL.patch"
patch -p1 -F 3 < "fengchi_$FEIL.patch"
echo "✅ 完美风驰补丁应用完成"
else
echo "⚠️ 该6.6机型暂不支持风驰补丁, 正在应用OGKI转GKI补丁"
sed -i '1iobj-y += hmbird_patch.o' drivers/Makefile
wget https://github.com/Numbersf/Action-Build/raw/SukiSU-Ultra/patches/hmbird_patch.patch
echo "⚙️ 正在打OGKI转换GKI补丁"
patch -p1 -F 3 < hmbird_patch.patch
echo "✅ OGKI转换GKI_patch完成"
fi
cd ../..
fi
echo "⚙️ 正在配置内核编译选项..."
DEFCONFIG_PATH="$WORKSPACE/kernel_workspace/kernel_platform/common/arch/arm64/configs/gki_defconfig"
if [ "$bbg" = "On" ]; then
echo "⚡ 配置 BBG 中..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_BBG=y
CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,baseband_guard"
EOT
fi
# 为 Mountify (backslashxx/mountify) 模块开启必要选项
echo "CONFIG_TMPFS_XATTR=y" >> "$DEFCONFIG_PATH"
echo "CONFIG_TMPFS_POSIX_ACL=y" >> "$DEFCONFIG_PATH"
if [ "$bbr" = "On" ]; then
echo "🌐 启用 BBR 网络算法..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BBR=y
CONFIG_NET_SCH_FQ=y
CONFIG_TCP_CONG_BIC=n
CONFIG_TCP_CONG_WESTWOOD=n
CONFIG_TCP_CONG_HTCP=n
EOT
fi
if [ "$lz4kd" = "On" ]; then
echo "📦 启用 lz4kd 与 写回支持..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_CRYPTO_LZ4KD=y
CONFIG_CRYPTO_LZ4K_OPLUS=y
CONFIG_ZRAM_WRITEBACK=y
EOT
fi
if [ "$KERNEL_VERSION" = "6.1" ] || [ "$KERNEL_VERSION" = "6.6" ]; then
echo "CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y" >> "$DEFCONFIG_PATH"
fi
if [ "$proxy" = "On" ]; then
echo "📦 添加代理相关网络优化选项..."
cat <<EOT >> "$DEFCONFIG_PATH"
CONFIG_BPF_STREAM_PARSER=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_SET=y
CONFIG_IP_SET=y
CONFIG_IP_SET_MAX=65534
CONFIG_IP_SET_BITMAP_IP=y
CONFIG_IP_SET_BITMAP_IPMAC=y
CONFIG_IP_SET_BITMAP_PORT=y
CONFIG_IP_SET_HASH_IP=y
CONFIG_IP_SET_HASH_IPMARK=y
CONFIG_IP_SET_HASH_IPPORT=y
CONFIG_IP_SET_HASH_IPPORTIP=y
CONFIG_IP_SET_HASH_IPPORTNET=y
CONFIG_IP_SET_HASH_IPMAC=y
CONFIG_IP_SET_HASH_MAC=y
CONFIG_IP_SET_HASH_NETPORTNET=y
CONFIG_IP_SET_HASH_NET=y
CONFIG_IP_SET_HASH_NETNET=y
CONFIG_IP_SET_HASH_NETPORT=y
CONFIG_IP_SET_HASH_NETIFACE=y
CONFIG_IP_SET_LIST_SET=y
CONFIG_IP6_NF_NAT=y
CONFIG_IP6_NF_TARGET_MASQUERADE=y
EOT
fi
if [ "$KERNEL_VERSION" = "5.10" ] || [ "$KERNEL_VERSION" = "5.15" ]; then
echo "📦 正在为 5.10 / 5.15 系配置 LTO..."
sed -i 's/^CONFIG_LTO=n/CONFIG_LTO=y/' "$DEFCONFIG_PATH"
sed -i 's/^CONFIG_LTO_CLANG_FULL=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG_PATH"
sed -i 's/^CONFIG_LTO_CLANG_NONE=y/CONFIG_LTO_CLANG_THIN=y/' "$DEFCONFIG_PATH"
grep -q '^CONFIG_LTO_CLANG_THIN=y' "$DEFCONFIG_PATH" || echo 'CONFIG_LTO_CLANG_THIN=y' >> "$DEFCONFIG_PATH"
fi
echo "CONFIG_HEADERS_INSTALL=n" >> "$DEFCONFIG_PATH"
sed -i 's/check_defconfig//' "$WORKSPACE/kernel_workspace/kernel_platform/common/build.config.gki"
echo "✅ defconfig 配置更新完成"
cd ../..
echo "🔨 开始内核编译..."
cd "$WORKSPACE/kernel_workspace/kernel_platform/common"
MAKE_CMD_COMMON="make -j$(nproc --all) LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC=\"ccache clang\" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all"
export KBUILD_BUILD_USER="xiaoxiaow"
export KBUILD_BUILD_HOST="xiaoxiaow_build"
if [ "$KERNEL_VERSION" = "6.1" ]; then
export KBUILD_BUILD_TIMESTAMP="Tue Mar 10 03:53:33 UTC 2026"
export KBUILD_BUILD_VERSION=1
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH"
eval "$MAKE_CMD_COMMON KCFLAGS+=-O2"
elif [ "$KERNEL_VERSION" = "6.6" ]; then
export KBUILD_BUILD_VERSION=1
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r510928/bin:$PATH"
eval "$MAKE_CMD_COMMON KCFLAGS+=-O2"
elif [ "$KERNEL_VERSION" = "5.15" ]; then
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts/clang/host/linux-x86/clang-r450784e/bin:$PATH"
eval "$MAKE_CMD_COMMON"
elif [ "$KERNEL_VERSION" = "5.10" ]; then
export PATH="$WORKSPACE/kernel_workspace/kernel_platform/prebuilts-master/clang/host/linux-x86/clang-r416183b/bin:$PATH"
eval "make -j$(nproc --all) LLVM_IAS=1 LLVM=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CC=\"ccache clang\" RUSTC=../../prebuilts/rust/linux-x86/1.73.0b/bin/rustc PAHOLE=../../prebuilts/kernel-build-tools/linux-x86/bin/pahole LD=ld.lld HOSTLD=ld.lld O=out gki_defconfig all"
else
echo "❌ 不支持的内核版本: $KERNEL_VERSION" && exit 1
fi
echo "📊 当前 ccache 统计信息如下:"
ccache -s
echo "✅ 内核编译完成"
cd "$WORKSPACE"
echo "📦 正在获取 AnyKernel3 并准备打包..."
git clone https://github.com/Xiaomichael/AnyKernel3 --depth=1
rm -rf ./AnyKernel3/.git
IMAGE_PATH=$(find "$WORKSPACE/kernel_workspace/kernel_platform/common/out/" -name "Image" | head -n 1)
if [ -z "$IMAGE_PATH" ]; then echo "❌ 严重错误:编译完成后未找到 Kernel Image!" && exit 1; fi
echo "✅ 已找到 Kernel Image: $IMAGE_PATH"
cp "$IMAGE_PATH" ./AnyKernel3/Image
if [ "$lz4kd" = "On" ]; then
ARTIFACT_NAME="Anykernel3_${FEIL}_lz4kd_Kernel_Only"
elif [ "$KERNEL_VERSION" = "6.1" ]; then
ARTIFACT_NAME="Anykernel3_${FEIL}_lz4_zstd_Kernel_Only"
elif [ "$KERNEL_VERSION" = "6.6" ]; then
ARTIFACT_NAME="Anykernel3_${FEIL}_lz4_Kernel_Only"
else
ARTIFACT_NAME="Anykernel3_${FEIL}_Kernel_Only"
fi
FINAL_ZIP_NAME="${ARTIFACT_NAME}.zip"
echo "📦 正在创建最终可刷入压缩包: ${FINAL_ZIP_NAME}..."
cd AnyKernel3 && zip -q -r9 "../${FINAL_ZIP_NAME}" ./* && cd ..
echo ""
echo "================================================="
echo " 构建完成!"
echo "================================================="
echo "-> 可刷入内核压缩包路径: $WORKSPACE/${FINAL_ZIP_NAME}"
ZRAM_KO_PATH=$(find "$WORKSPACE/kernel_workspace/kernel_platform/common/out/" -name "zram.ko" | head -n 1)
if [ -n "$ZRAM_KO_PATH" ]; then
cp "$ZRAM_KO_PATH" "$WORKSPACE/"
echo "-> zram.ko 模块路径: $WORKSPACE/zram.ko"
fi
echo "================================================="
echo ""
================================================
FILE: local/Build_ReSukiSU.sh
================================================
#!/bin/bash
#export all_proxy=socks5://192.168.x.x:x/
set -e
clear
echo "==============================================="
echo " ReSukiSU OnePlus Kernel Build Configuration "
echo "==============================================="
echo " 按回车键可直接使用 [方括号] 中的默认值"
echo ""
ask() {
local prompt default reply
prompt="$1"
default="$2"
read -p "$prompt [$default]: " reply
echo "${reply:-$default}"
}
CPU=$(ask "请输入 CPU 分支 (例如: sm8750, sm8650, sm8550, sm8475)" "sm8650")
FEIL=$(ask "请输入手机型号 (例如: oneplus_13_b, oneplus_12_b, oneplus_11_b)" "oneplus_12_b")
ANDROID_VERSION=$(ask "请输入内核安卓 KMI 版本 (android15, android14, android13, android12)" "android14")
KERNEL_VERSION=$(ask "请输入内核版本 (6.6, 6.1, 5.15, 5.10)" "6.1")
SUSFS=$(ask "是否启用 SUSFS? (On/Off)" "Off")
KPM=$(ask "是否启用 KPM (Kernel Patch Manager)? (On/Off)" "Off")
lz4kd=$(ask "是否启用 lz4kd? (6.1 关闭时使用 lz4 + zstd; 6.6 关闭时使用 lz4) (On/Off)" "Off")
bbr=$(ask "是否启用 BBR 拥塞控制算法? (On/Off)" "Off")
bbg=$(ask "是否启用 Baseband-Guard 基带防护? (On/Off)" "On")
proxy=$(ask "是否添加代理性能优化? (如为联发科 CPU 必须选择 Off) (On/Off)" "On")
UNICODE_BYPASS=$(ask "是否添加Unicode零宽绕过修复补丁(高内核版本不推荐开启, 建议使用 https://t.me/real5ec1cff/271 无痛修复) (On/Off)" "Off")
clear
echo ""
echo "================================================="
echo " 配置摘要"
echo "================================================="
echo "手机型号 : $FEIL"
echo "CPU 分支 : $CPU"
echo "安卓 KMI 版本 : $ANDROID_VERSION"
echo "内核版本 : $KERNEL_VERSION"
echo "是否启用 SUSFS : $SUSFS"
echo "是否启用 KPM : $KPM"
echo "是否启用 lz4kd : $lz4kd"
echo "是否启用 BBR : $bbr"
echo "是否启用 Baseband-Guard : $bbg"
echo "是否启用代理优化 : $proxy"
echo "是否启用 Unicode 绕过修复 : $UNICODE_BYPASS"
echo "================================================="
read -p "按回车键开始构建流程..."
clear
echo "📦 正在准备构建工作空间..."
WORKSPACE=$PWD/build_workspace
sudo rm -rf "$WORKSPACE"
mkdir -p "$WORKSPACE"
cd "$WORKSPACE"
echo "📦 正在安装构建依赖..."
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
python3 git curl ccache libelf-dev \
build-essential flex bison libssl-dev \
libncurses-dev liblz4-tool zlib1g-dev \
libxml2-utils rsync unzip python3-pip gawk dos2unix
clear
echo "✅ 必要构建依赖安装完成"
echo "⚙️ 正在配置 ccache 缓存..."
if [ "$SUSFS" == "On" ]; then
export CCACHE_DIR="$HOME/.ccache_${FEIL}_ReSukiSU_SUSFS"
else
export CCACHE_DIR="$HOME/.ccache_${FEIL}_ReSukiSU_NoSUSFS"
fi
export CCACHE_COMPILERCHECK="%compiler% -dumpmachine; %compiler% -dumpversion"
export CCACHE_NOHASHDIR="true"
export CCACHE_HARDLINK="true"
export CCACHE_MAXSIZE="20G"
export PATH="/usr/lib/ccache:$PATH"
mkdir -p "$CCACHE_DIR"
echo "✅ ccache 缓存目录: $CCACHE_DIR"
ccache -M "$CCACHE_MAXSIZE"
ccache -z
echo "🔐 正在配置 Git 用户信息..."
git config --global user.name "Local Builder"
git config --global user.email "builder@localhost"
echo "✅ Git 用户信息配置完成"
if ! command -v repo &> /dev/null; then
echo "📥 未检测到 repo 工具,正在安装..."
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
chmod a+x ~/repo
sudo mv ~/repo /usr/local/bin/repo
echo "✅ repo 工具安装完成"
else
echo "ℹ️ 已检测到 repo 工具,跳过安装"
fi
echo "⬇️ 正在准备内核源码目录..."
sudo rm -rf kernel_workspace
mkdir -p kernel_workspace && cd kernel_workspace
echo "🌐 正在初始化 oneplus/${CPU} 分支、机型 ${FEIL} 的 manifest..."
repo init -u https://github.com/Xiaomichael/kernel_manifest.git -b refs/heads/oneplus/${CPU} -m ${FEIL}.xml --depth=1
echo "🔄 正在同步内核源码仓库 (使用 $(nproc --all) 线程)..."
repo sync -c -j$(nproc --all) --no-tags --no-clone-bundle --force-sync
echo "✅ 内核源码同步完成"
export adv=$ANDROID_VERSION
echo "🔧 正在清理并修改版本字符串..."
rm -f kernel_platform/common/android/abi_gki_protected_exports_* || echo "common 目录下无受保护导出表,无需删除"
rm -f kernel_platform/msm-kernel/android/abi_gki_protected_exports_* || echo "msm-kernel 目录下无受保护导出表,无需删除"
sed -i 's/ -dirty//g' kernel_platform/common/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i 's/ -dirty//g' kernel_platform/external/dtc/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/common/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$i res=$(echo "$res" | sed '\''s/-dirty//g'\'')' kernel_platform/external/dtc/scripts/setlocalversion
if [ "$KERNEL_VERSION" != "6.6" ]; then
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/common/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/msm-kernel/scripts/setlocalversion
sed -i '$s|echo "\$res"|echo "-'"$adv"'-oki-xiaoxiaow"|' kernel_platform/external/dtc/scripts/setlocalversion
else
ESCAPED_SUFFIX=$(printf '%s\n' "-${ANDROID_VERSION}-oki-xiaoxiaow" | sed 's:[\/&]:\\&:g')
sed -i "s/-4k/${ESCAPED_SUFFIX}/g" kernel_platform/common/arch/arm64/configs/gki_defconfig
sed -i 's/\${scm_version}//' kernel_platform/common/scripts/setlocalversion
sed -i 's/\${scm_version}//' kernel_platform/msm-kernel/scripts/setlocalversion
fi
echo "✅ 内核仓库准备完毕并完成版本号清理"
if [ "$bbg" = "On" ] && [ "$KPM" = "Off" ]; then
set -e
cd kernel_platform/common
echo "🛡️ 正在配置 Baseband-Guard 基带防护..."
curl -sSL https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh -o setup.sh
bash setup.sh
cd ../..
echo "✅ Baseband-Guard 配置完成"
fi
echo "⚡ 正在配置 ReSukiSU..."
cd kernel_platform
curl -LSs "https://raw.githubusercontent.com/ReSukiSU/ReSukiSU/main/kernel/setup.sh" | bash -s main
cd KernelSU
KSU_VERSION_COUNT=$(git rev-list --count main)
export KSUVER=$(expr $KSU_VERSION_COUNT + 30700)
echo "✅ ReSukiSU 配置完成"
cd ../..
echo "🔧 正在克隆所需补丁..."
if [ "$SUSFS" = "On" ]; then
git clone https://github.com/cctv18/susfs4oki.git -b oki-${ANDROID_VERSION}-${KERNEL_VERSION}
fi
git clone https://github.com/Xiaomichael/kernel_patches.git
git clone https://github.com/ShirkNeko/SukiSU_patch.git
cd kernel_platform
echo "📝 正在复制补丁文件..."
if [ "$SUSFS" = "On" ]; then
cp ../susfs4oki/kernel_patches/50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch ./common/
cp ../susfs4oki/kernel_patches/fs/* ./common/fs/
cp ../susfs4oki/kernel_patches/include/linux/* ./common/include/linux/
else
cp ../kernel_patches/sukisu/scope_min_manual_hooks_v1.9.patch ./common/
fi
cp ../kernel_patches/zram_patches/001-lz4.patch ./common/
cp ../kernel_patches/zram_patches/lz4armv8.S ./common/lib
cp ../kernel_patches/zram_patches/002-zstd.patch ./common/
if [ "$UNICODE_BYPASS" = "On" ]; then
if [ "$KERNEL_VERSION" = "6.1" ] || [ "$KERNEL_VERSION" = "6.6" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1+.patch ./common/unicode_bypass_fix.patch
elif [ "$KERNEL_VERSION" = "5.15" ] || [ "$KERNEL_VERSION" = "5.10" ]; then
cp ../kernel_patches/common/unicode_bypass_fix_6.1-.patch ./common/unicode_bypass_fix.patch
fi
fi
if [ "$lz4kd" = "On" ]; then
echo "🚀 正在复制 lz4kd 相关补丁..."
cp -r ../SukiSU_patch/other/zram/lz4k/include/linux/* ./common/include/linux
cp -r ../SukiSU_patch/other/zram/lz4k/lib/* ./common/lib
cp -r ../SukiSU_patch/other/zram/lz4k/crypto/* ./common/crypto
cp -r ../SukiSU_patch/other/zram/lz4k_oplus ./common/lib/
fi
echo "🔧 正在应用补丁..."
cd ./common
if [ "$UNICODE_BYPASS" = "On" ]; then
echo "📦 正在应用Unicode零宽绕过修复补丁..."
patch -p1 < unicode_bypass_fix.patch
fi
if [ "$SUSFS" = "On" ]; then
patch -p1 < 50_add_susfs_in_gki-${ANDROID_VERSION}-${KERNEL_VERSION}.patch || true
else
echo "📦 应用 MANUAL_HOOK 补丁..."
patch -p1 -F 3 < scope_min_manual_hooks_v1.9.patch
fi
if [ "$lz4kd" = "Off" ] && [ "$KERNEL_VERSION" = "6.1" ]; then
echo "📦 正在为 6.1 应用 lz4 + zstd 补丁..."
git apply -p1 < 001-lz4.patch || true
patch -p1 < 002-zstd.patch || true
fi
if [ "$lz4kd" = "Off" ] && [ "$KERNEL_VERSION" = "6.6" ]; then
echo "📦 正在为 6.6 应用 lz4 补丁..."
git apply -p1 < 001-lz4.patch || true
fi
if [ "$lz4kd" = "On" ]; then
echo "📦 正在应用 lz4kd / lz4k_oplus 补丁..."
cp ../../SukiSU_patch/other/zram/zram_patch/${KERNEL_VERSION}/lz4kd.patch ./
patch -p1 -F 3 < lz4kd.patch || true
cp ../../SukiSU_patch/other/zram/zram_patch/${KERNEL_VERSION}/lz4k_oplus.patch ./
patch -p1 -F 3 < lz4k_oplus.patch || true
fi
echo "✅ 所有补丁应用完成"
cd ../..
if [ "$KERNEL_VERSION" = "6.6" ]; then
cd kernel_platform/common
echo "⬇️ 正在拉取风驰补丁"
if [ "$FEIL" = "oneplus_ace5_ultra" ] || [ "$FEIL" = "oneplus_ace5_ultra_b" ]; then
echo "⚠️ Ace5 Ultra 需要使用 mt6991 分支的补丁"
git clone https://github.com/Numbersf/SCHED_PATCH.git -b
gitextract_8shsx1ht/
├── .github/
│ └── workflows/
│ ├── Build Kernel Only.yml
│ ├── Build KernelSU Next.yml
│ ├── Build KernelSU.yml
│ ├── Build ReSukiSU.yml
│ ├── Build SukiSU Ultra.yml
│ ├── Clean_ccache.yml
│ └── Clean_workflows.yml
├── README.md
├── local/
│ ├── Build_KernelSU.sh
│ ├── Build_Next.sh
│ ├── Build_Only.sh
│ ├── Build_ReSukiSU.sh
│ └── Build_SukiSU.sh
└── script/
└── buildbot.py
SYMBOL INDEX (6 symbols across 1 files) FILE: script/buildbot.py function get_caption (line 36) | def get_caption(): function check_environ (line 52) | def check_environ(): function get_kernel_versions (line 75) | def get_kernel_versions(): function get_versions (line 97) | def get_versions(): function check_lz4_zstd (line 111) | def check_lz4_zstd(): function main (line 119) | async def main():
Condensed preview — 14 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (255K chars).
[
{
"path": ".github/workflows/Build Kernel Only.yml",
"chars": 23282,
"preview": "name: Build Kernel Only\non:\n workflow_dispatch:\n inputs:\n \n CPU:\n description: \"CPU分支\"\n requir"
},
{
"path": ".github/workflows/Build KernelSU Next.yml",
"chars": 28536,
"preview": "name: Build KernelSU Next\non:\n workflow_dispatch:\n inputs:\n \n CPU:\n description: \"CPU分支\"\n requ"
},
{
"path": ".github/workflows/Build KernelSU.yml",
"chars": 27358,
"preview": "name: Build KernelSU Official\non:\n workflow_dispatch:\n inputs:\n \n CPU:\n description: \"CPU分支\"\n "
},
{
"path": ".github/workflows/Build ReSukiSU.yml",
"chars": 28453,
"preview": "name: Build ReSukiSU\non:\n workflow_dispatch:\n inputs:\n \n CPU:\n description: \"CPU分支\"\n required:"
},
{
"path": ".github/workflows/Build SukiSU Ultra.yml",
"chars": 29595,
"preview": "name: Build SukiSU Ultra\non:\n workflow_dispatch:\n inputs:\n \n CPU:\n description: \"CPU分支\"\n requi"
},
{
"path": ".github/workflows/Clean_ccache.yml",
"chars": 1332,
"preview": "name: Clean Caches\n\non:\n workflow_dispatch:\n\njobs:\n clean-caches:\n runs-on: ubuntu-latest\n permissions:\n ac"
},
{
"path": ".github/workflows/Clean_workflows.yml",
"chars": 4633,
"preview": "name: Clean Workflows\n\non:\n workflow_dispatch:\n inputs:\n workflow_name:\n type: choice\n descriptio"
},
{
"path": "README.md",
"chars": 1980,
"preview": "# ⭐⭐⭐ Star This Project ⭐⭐⭐\n\n如果您觉得这个项目对您有帮助,请给我一个 ``Star`` 或 ``进行赞助``!您的支持是我持续改进的动力。❤❤❤\n\n如果遇到问题欢迎提交``issue``!也随时欢迎``Pull"
},
{
"path": "local/Build_KernelSU.sh",
"chars": 15463,
"preview": "#!/bin/bash\n#export all_proxy=socks5://192.168.x.x:x/\nset -e\n\nclear\necho \"=============================================="
},
{
"path": "local/Build_Next.sh",
"chars": 15650,
"preview": "#!/bin/bash\n#export all_proxy=socks5://192.168.x.x:x/\nset -e\n\nclear\necho \"=============================================="
},
{
"path": "local/Build_Only.sh",
"chars": 13459,
"preview": "#!/bin/bash\n#export all_proxy=socks5://192.168.x.x:x/\nset -e\n\nclear\necho \"=============================================\""
},
{
"path": "local/Build_ReSukiSU.sh",
"chars": 16084,
"preview": "#!/bin/bash\n#export all_proxy=socks5://192.168.x.x:x/\nset -e\n\nclear\necho \"=============================================="
},
{
"path": "local/Build_SukiSU.sh",
"chars": 16727,
"preview": "#!/bin/bash\n#export all_proxy=socks5://192.168.x.x:x/\nset -e\n\nclear\necho \"=============================================="
},
{
"path": "script/buildbot.py",
"chars": 4060,
"preview": "import asyncio\nimport os\nimport sys\nfrom telethon import TelegramClient\n\nAPI_ID = 611335\nAPI_HASH = \"d524b414d21f4d37f08"
}
]
About this extraction
This page contains the full source code of the Xiaomichael/OnePlus-Actions GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 14 files (221.3 KB), approximately 71.2k tokens, and a symbol index with 6 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.