Repository: ShirkNeko/GKI_KernelSU_SUSFS
Branch: main
Commit: ee42af6a6a06
Files: 20
Total size: 113.7 KB
Directory structure:
gitextract_gsh06kp2/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── feature_request.yml
│ └── workflows/
│ ├── build-kernel-a12-5-10.yml
│ ├── build-kernel-a13-5-10.yml
│ ├── build-kernel-a13-5-15.yml
│ ├── build-kernel-a14-5-15.yml
│ ├── build-kernel-a14-6-1.yml
│ ├── build-kernel-a15-6-6.yml
│ ├── get-manager.yml
│ ├── gki-kernel.yml
│ ├── kernel-a12-5.10.yml
│ ├── kernel-a13-5.10.yml
│ ├── kernel-a13-5.15.yml
│ ├── kernel-a14-5.15.yml
│ ├── kernel-a14-6.1.yml
│ ├── kernel-a15-6.6.yml
│ └── test_release.yml
├── Original.md
├── README.md
└── hmbird_patch.c
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug Report
description: Create a bug report
labels: [Bug]
body:
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is
validations:
required: true
- type: textarea
attributes:
label: To Reproduce
description: Steps to reproduce the behaviour
placeholder: |
- 1. Go to '...'
- 2. Click on '....'
- 3. Scroll down to '....'
- 4. See error
- type: textarea
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
- type: textarea
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
- type: textarea
attributes:
label: Logs
description: If applicable, add crash or any other logs to help us figure out the problem.
- type: textarea
attributes:
label: Device info
value: |
- Device:
- OS Version:
- KernelSU Version:
- Kernel Version:
- SUSFS Version:
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: Feature Request
description: Create a feature request
labels: [Feature Request]
body:
- type: textarea
attributes:
label: Describe the feature
description: A clear and concise description of what the feature is.
validations:
required: true
- type: textarea
attributes:
label: Link to documentation
description: A clear and concise documentation.
- type: textarea
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
- type: textarea
attributes:
label: Additional context
description: Add any other context here.
================================================
FILE: .github/workflows/build-kernel-a12-5-10.yml
================================================
name: 编译内核a12-5-10
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_dispatch:
inputs:
kernelsu_variant:
# description: "选择 KernelSU | 注意:选中MKSU时为标准版"
description: "选择 KernelSU"
required: true
type: choice
options:
- Official
- Next
- MKSU
- SukiSU
default: SukiSU
kernelsu_branch:
description: "选择 ksu 分支"
required: true
type: choice
options:
- Stable(标准)
- Dev(开发)
- Other(其他/指定)
default: Dev(开发)
# kernelsu_branch_other:
# description: "如果选择了 “其他”,请指定您的自定义分支"
# required: false
# type: string # This input is required if 'Other' is chosen
version:
description: '自定义版本名(如5.10.198后面的字符/留空则使用默认版本号)'
required: false
type: string
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
get_manager:
description: '是否同时获取最新KSU管理器?(实验性功能,报错请关闭)'
required: true
type: boolean
default: true
jobs:
build-kernel-a12-5-10:
uses: ./.github/workflows/kernel-a12-5.10.yml
secrets: inherit
with:
make_release: false
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
# kernelsu_branch_other: ${{ inputs.kernelsu_branch_other }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
get-ksu-manager:
if: ${{ inputs.get_manager }}
uses: ./.github/workflows/get-manager.yml
secrets: inherit
with:
kernelsu_variant: ${{ inputs.kernelsu_variant }}
# build-kernel-a13-5-10:
# uses: ./.github/workflows/kernel-a13-5.10.yml
# secrets: inherit
# with:
# make_release: ${{ inputs.make_release }}
# kernelsu_variant: ${{ inputs.kernelsu_variant }}
# kernelsu_branch: ${{ inputs.kernelsu_branch }}
# kernelsu_branch_other: ${{ inputs.kernelsu_branch_other }}
# version: ${{ inputs.version }}
# build-kernel-a13-5-15:
# uses: ./.github/workflows/kernel-a13-5.15.yml
# secrets: inherit
# with:
# make_release: ${{ inputs.make_release }}
# kernelsu_variant: ${{ inputs.kernelsu_variant }}
# kernelsu_branch: ${{ inputs.kernelsu_branch }}
# kernelsu_branch_other: ${{ inputs.kernelsu_branch_other }}
# version: ${{ inputs.version }}
# build-kernel-a14-5-15:
# uses: ./.github/workflows/kernel-a14-5.15.yml
# secrets: inherit
# with:
# make_release: ${{ inputs.make_release }}
# kernelsu_variant: ${{ inputs.kernelsu_variant }}
# kernelsu_branch: ${{ inputs.kernelsu_branch }}
# kernelsu_branch_other: ${{ inputs.kernelsu_branch_other }}
# version: ${{ inputs.version }}
# build-kernel-a14-6-1:
# uses: ./.github/workflows/kernel-a14-6.1.yml
# secrets: inherit
# with:
# make_release: ${{ inputs.make_release }}
# kernelsu_variant: ${{ inputs.kernelsu_variant }}
# kernelsu_branch: ${{ inputs.kernelsu_branch }}
# kernelsu_branch_other: ${{ inputs.kernelsu_branch_other }}
# version: ${{ inputs.version }}
# build-kernel-a15-6-6:
# uses: ./.github/workflows/kernel-a15-6.6.yml
# secrets: inherit
# with:
# make_release: ${{ inputs.make_release }}
# kernelsu_variant: ${{ inputs.kernelsu_variant }}
# kernelsu_branch: ${{ inputs.kernelsu_branch }}
# kernelsu_branch_other: ${{ inputs.kernelsu_branch_other }}
# version: ${{ inputs.version }}
# trigger-release:
# runs-on: ubuntu-latest
# needs:
# - build-kernel-a12-5-10
# - build-kernel-a13-5-10
# - build-kernel-a13-5-15
# - build-kernel-a14-5-15
# - build-kernel-a14-6-1
# - build-kernel-a15-6-6
# if: ${{ inputs.make_release }}
# env:
# REPO_OWNER: WildPlusKernel
# REPO_NAME: GKI_KernelSU_SUSFS
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# RELEASE_NAME: "*TEST BUILD* GKI Kernels With KernelSU-${{ inputs.kernelsu_variant }} ${{ inputs.kernelsu_branch }} & SUSFS v1.5.5 *TEST BUILD*"
# RELEASE_NOTES: |
# This release contains KernelSU-${{ inputs.kernelsu_variant }} ${{ inputs.kernelsu_branch }} and SUSFS v1.5.5
# Features:
# -> KernelSU-${{ inputs.kernelsu_variant }}-${{ inputs.kernelsu_branch }}
# -> SUSFS ඞ v1.5.5
# -> Manual Syscall Hooks for Better Hiding
# -> Magic Mount Support
# -> Simple Maphide for LineageOS Detections
# -> Futile Maphide for jit-zygote-cache Detections
# -> Wireguard Support
# -> BBR Support
# Notes:
# -> SUS SU Mode 2 will show as disabled or not compatble due to non-kprobe hooks and is not needed anymore!
# -> Kernel Flasher is broken with latest susfs, try https://github.com/libxzr/HorizonKernelFlasher!
# Module:
# -> https://github.com/sidex15/ksu_module_susfs
# steps:
# # Checkout the code
# - name: Checkout code
# uses: actions/checkout@v3
# - name: Determine the branch for KernelSU-${{ inputs.kernelsu_variant }}
# if: ${{ inputs.kernelsu_branch == 'Dev(开发)' || inputs.kernelsu_variant == 'MKSU' }}
# run: |
# # Determine the branch based on user input
# if [[ "${{ inputs.kernelsu_variant }}" == "Official" || "${{ inputs.kernelsu_variant }}" == "MKSU" ]]; then
# BRANCH="main"
# elif [[ "${{ inputs.kernelsu_variant }}" == "Next" ]]; then
# BRANCH="next"
# elif [[ "${{ inputs.kernelsu_branch }}" == "Other(其他/指定)" && -n "${{ inputs.kernelsu_branch_other }}" ]]; then
# BRANCH="${{ inputs.kernelsu_branch_other }}"
# else
# echo "Error: Custom branch not provided for 'Other(其他/指定)'" >&2
# exit 1
# fi
# # Store the selected branch in GITHUB_ENV
# echo "KSU_BRANCH=$BRANCH" >> $GITHUB_ENV
# - name: Get commit hash or tag and generate URL for KernelSU-${{ inputs.kernelsu_variant }}
# run: |
# if [ "${{ inputs.kernelsu_variant }}" == "Official" ]; then
# echo "This is the Official variant"
# REPO_URL="https://github.com/tiann/KernelSU.git"
# REPO_URL2="tiann/KernelSU"
# elif [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
# echo "This is the Next variant"
# REPO_URL="https://github.com/KernelSU-Next/KernelSU-Next.git"
# REPO_URL2="KernelSU-Next/KernelSU-Next"
# elif [ "${{ inputs.kernelsu_variant }}" == "MKSU" ]; then
# echo "This is the MKSU variant"
# REPO_URL="https://github.com/5ec1cff/KernelSU.git"
# REPO_URL2="5ec1cff/KernelSU"
# else
# echo "Unknown variant"
# fi
# if [[ "${{ inputs.kernelsu_branch }}" == "Stable(标准)" && "${{ inputs.kernelsu_variant }}" != "MKSU" ]]; then
# # Fetch the latest tag
# TAG=$(git ls-remote --tags --sort=-v:refname $REPO_URL | grep -o 'refs/tags/.*' | cut -d'/' -f3 | head -n1)
# if [[ -z "$TAG" ]]; then
# echo "Error: Could not fetch latest tag for Stable(标准)" >&2
# exit 1
# fi
# KSU_REF=$TAG
# KSU_URL="https://github.com/$REPO_URL2/releases/tag/$TAG"
# elif [[ "${{ inputs.kernelsu_branch }}" == "Dev(开发)" || "${{ inputs.kernelsu_variant }}" == "MKSU" ]]; then
# # Fetch the latest commit from "next" branch
# COMMIT_HASH=$(git ls-remote $REPO_URL refs/heads/$KSU_BRANCH | awk '{ print $1 }')
# if [[ -z "$COMMIT_HASH" ]]; then
# echo "Error: Could not fetch latest commit for Dev(开发)" >&2
# exit 1
# fi
# KSU_REF=$COMMIT_HASH
# KSU_URL="https://github.com/$REPO_URL2/commit/$COMMIT_HASH"
# else
# # Fetch the specific tag
# TAG=${{ inputs.kernelsu_branch_other }}
# if git ls-remote --tags $REPO_URL | grep -q "refs/tags/$TAG"; then
# KSU_REF=$TAG
# KSU_URL="https://github.com/$REPO_URL2/releases/tag/$TAG"
# else
# echo "Error: Specified tag '$TAG' not found in KernelSU-Next" >&2
# exit 1
# fi
# fi
# # Echo the values to GitHub environment for later use
# echo "KSU_REF=$KSU_REF" >> $GITHUB_ENV
# echo "KSU_URL=$KSU_URL" >> $GITHUB_ENV
# echo "KernelSU Reference: $KSU_REF"
# echo "KernelSU URL: $KSU_URL"
# - name: Get commit hashes and generate commit URLs
# run: |
# GITLAB_OWNER="simonpunk"
# GITLAB_REPO="susfs4ksu"
# declare -A BRANCH_MAP=(
# ["gki_android12_5_10"]="gki-android12-5.10"
# ["gki_android13_5_10"]="gki-android13-5.10"
# ["gki_android13_5_15"]="gki-android13-5.15"
# ["gki_android14_5_15"]="gki-android14-5.15"
# ["gki_android14_6_1"]="gki-android14-6.1"
# )
# for var_name in "${!BRANCH_MAP[@]}"; do
# branch_name="${BRANCH_MAP[$var_name]}"
# COMMIT_HASH=$(git ls-remote https://gitlab.com/$GITLAB_OWNER/$GITLAB_REPO.git refs/heads/$branch_name | awk '{ print $1 }')
# if [[ -n "$COMMIT_HASH" ]]; then
# COMMIT_URL="https://gitlab.com/$GITLAB_OWNER/$GITLAB_REPO/-/commit/$COMMIT_HASH"
# echo "$branch_name Commit: $COMMIT_HASH"
# echo "$branch_name Commit URL: $COMMIT_URL"
# # Store commit hash and commit URL in GitHub environment
# echo "COMMIT_HASH_${var_name}=$COMMIT_HASH" >> "$GITHUB_ENV"
# echo "COMMIT_URL_${var_name}=$COMMIT_URL" >> "$GITHUB_ENV"
# fi
# done
# - name: Append Commit Hashes & Links to `RELEASE_NOTES` & Append KernelSU-Next Reference to `RELEASE_NOTES`
# run: |
# if [ "${{ inputs.kernelsu_variant }}" == "Official" ]; then
# echo "This is the Official variant"
# echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
# echo "$RELEASE_NOTES" >> $GITHUB_ENV
# echo "Official Manager:" >> $GITHUB_ENV
# echo "-> https://github.com/tiann/KernelSU" >> $GITHUB_ENV
# echo "EOF" >> $GITHUB_ENV
# elif [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
# echo "This is the Next variant"
# echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
# echo "$RELEASE_NOTES" >> $GITHUB_ENV
# echo "Next Manager:" >> $GITHUB_ENV
# echo "-> https://github.com/KernelSU-Next/KernelSU-Next" >> $GITHUB_ENV
# echo "EOF" >> $GITHUB_ENV
# elif [ "${{ inputs.kernelsu_variant }}" == "MKSU" ]; then
# echo "This is the MKSU variant"
# echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
# echo "$RELEASE_NOTES" >> $GITHUB_ENV
# echo "MKSU Manager:" >> $GITHUB_ENV
# echo "-> https://github.com/5ec1cff/KernelSU" >> $GITHUB_ENV
# echo "EOF" >> $GITHUB_ENV
# else
# echo "Unknown variant"
# fi
# - name: Append Commit Hashes & Links to `RELEASE_NOTES` & Append KernelSU-Next Reference to `RELEASE_NOTES`
# run: |
# echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
# echo "$RELEASE_NOTES" >> $GITHUB_ENV
# echo "" >> $GITHUB_ENV
# echo "LTO: thin" >> $GITHUB_ENV
# echo "" >> $GITHUB_ENV
# echo "Commit Hashes and Links:" >> $GITHUB_ENV
# echo "KernelSU:" >> $GITHUB_ENV
# echo "${{ inputs.kernelsu_variant }}-${{ inputs.kernelsu_branch }}: [$KSU_REF]($KSU_URL)" >> $GITHUB_ENV
# echo "SUSFS4KSU:" >> $GITHUB_ENV
# echo "gki-android12-5.10: [$COMMIT_HASH_gki_android12_5_10]($COMMIT_URL_gki_android12_5_10)" >> $GITHUB_ENV
# echo "gki-android13-5.10: [$COMMIT_HASH_gki_android13_5_10]($COMMIT_URL_gki_android13_5_10)" >> $GITHUB_ENV
# echo "gki-android13-5.15: [$COMMIT_HASH_gki_android13_5_15]($COMMIT_URL_gki_android13_5_15)" >> $GITHUB_ENV
# echo "gki-android14-5.15: [$COMMIT_HASH_gki_android14_5_15]($COMMIT_URL_gki_android14_5_15)" >> $GITHUB_ENV
# echo "gki-android14-6.1: [$COMMIT_HASH_gki_android14_6_1]($COMMIT_URL_gki_android14_6_1)" >> $GITHUB_ENV
# echo "" >> $GITHUB_ENV
# echo "EOF" >> $GITHUB_ENV
# # Get the Latest Tag from GitHub
# - name: Generate and Create New Tag
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# # Fetch the latest tag from GitHub (this is the latest tag based on the GitHub API)
# LATEST_TAG=$(gh api repos/$REPO_OWNER/$REPO_NAME/tags --jq '.[0].name')
# if [ -z "$LATEST_TAG" ]; then
# LATEST_TAG="v1.5.5-r0"
# fi
# NEW_TAG=$(echo "$LATEST_TAG" | awk -F'-r' '{suffix=$2; if (!suffix) suffix=0; suffix++; printf "%s-r%d", $1, suffix}')
# # Output the new tag to be used
# echo "New tag: $NEW_TAG"
# # Set the new tag as an environment variable to be used in later steps
# echo "NEW_TAG=${NEW_TAG}" >> $GITHUB_ENV
# # Create the tag in the repository
# git tag $NEW_TAG
# git push --tags
# # Download Artifacts for A12 (Only if A12 Build is successful or input is true or empty)
# - name: Download Artifacts
# uses: actions/download-artifact@v4
# with:
# path: ./downloaded-artifacts
# # Create GitHub Release and upload files if make_release is true
# - name: Create GitHub Release
# uses: actions/create-release@v1
# with:
# tag_name: ${{ env.NEW_TAG }} # Use the generated tag for the release
# prerelease: true # Mark the release as a pre-release
# release_name: ${{ env.RELEASE_NAME }} # Pass the RELEASE_NAME to the action
# body: ${{ env.RELEASE_NOTES }} # Pass the RELEASE_NOTES to the action
# - name: Upload Release Assets Dynamically
# run: |
# # Loop through all files in the downloaded-artifacts directory
# for file in ./downloaded-artifacts/kernel-*/*; do
# # Skip directories
# if [ -d "$file" ]; then
# continue
# fi
# # Upload the file to the GitHub release
# echo "Uploading $file..."
# gh release upload ${{ env.NEW_TAG }} "$file"
# done
# # Display Files Uploaded
# - name: Display Files Uploaded
# run: |
# echo "GitHub release created with the following files:"
# ls ./downloaded-artifacts/**/*
# - name: send telegram message on push
# env:
# TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
# TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
# TELEGRAM_MESSAGE_THREAD_ID: ${{ secrets.TELEGRAM_MESSAGE_THREAD_ID }}
# run: |
# curl -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
# -d "chat_id=$TELEGRAM_CHAT_ID" \
# -d "message_thread_id=$TELEGRAM_MESSAGE_THREAD_ID" \
# -d "text=Latest release:
# https://github.com/WildPlusKernel/GKI_KernelSU_SUSFS/releases/tag/${{ env.NEW_TAG }}
# ${{ env.RELEASE_NOTES }}"
================================================
FILE: .github/workflows/build-kernel-a13-5-10.yml
================================================
name: 编译内核a13-5-10
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_dispatch:
inputs:
kernelsu_variant:
description: "选择 KernelSU"
required: true
type: choice
options:
- Official
- Next
- MKSU
- SukiSU
default: SukiSU
kernelsu_branch:
description: "选择 ksu 分支"
required: true
type: choice
options:
- Stable(标准)
- Dev(开发)
- Other(其他/指定)
default: Dev(开发)
version:
description: '自定义版本名(如5.10.198后面的字符/留空则使用默认版本号)'
required: false
type: string
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
get_manager:
description: '是否同时获取最新KSU管理器?(实验性功能,报错请关闭)'
required: true
type: boolean
default: true
jobs:
build-kernel-a13-5-10:
uses: ./.github/workflows/kernel-a13-5.10.yml
secrets: inherit
with:
make_release: false
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
get-ksu-manager:
if: ${{ inputs.get_manager }}
uses: ./.github/workflows/get-manager.yml
secrets: inherit
with:
kernelsu_variant: ${{ inputs.kernelsu_variant }}
================================================
FILE: .github/workflows/build-kernel-a13-5-15.yml
================================================
name: 编译内核a13-5-15
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_dispatch:
inputs:
kernelsu_variant:
description: "选择 KernelSU"
required: true
type: choice
options:
- Official
- Next
- MKSU
- SukiSU
default: SukiSU
kernelsu_branch:
description: "选择 ksu 分支"
required: true
type: choice
options:
- Stable(标准)
- Dev(开发)
- Other(其他/指定)
default: Dev(开发)
version:
description: '自定义版本名(如5.15.167后面的字符/留空则使用默认版本号)'
required: false
type: string
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
set_defbbr:
description: '是否将BBR设为默认拥塞算法?(实验性)'
required: true
type: boolean
default: false
get_manager:
description: '是否同时获取最新KSU管理器?(实验性功能,报错请关闭)'
required: true
type: boolean
default: true
jobs:
build-kernel-a13-5-15:
uses: ./.github/workflows/kernel-a13-5.15.yml
secrets: inherit
with:
make_release: false
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
get-ksu-manager:
if: ${{ inputs.get_manager }}
uses: ./.github/workflows/get-manager.yml
secrets: inherit
with:
kernelsu_variant: ${{ inputs.kernelsu_variant }}
================================================
FILE: .github/workflows/build-kernel-a14-5-15.yml
================================================
name: 编译内核a14-5-15
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_dispatch:
inputs:
kernelsu_variant:
description: "选择 KernelSU"
required: true
type: choice
options:
- Official
- Next
- MKSU
- SukiSU
default: SukiSU
kernelsu_branch:
description: "选择 ksu 分支"
required: true
type: choice
options:
- Stable(标准)
- Dev(开发)
- Other(其他/指定)
default: Dev(开发)
version:
description: '自定义版本名(如5.15.167后面的字符/留空则使用默认版本号)'
required: false
type: string
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
get_manager:
description: '是否同时获取最新KSU管理器?(实验性功能,报错请关闭)'
required: true
type: boolean
default: true
jobs:
build-kernel-a14-5-15:
uses: ./.github/workflows/kernel-a14-5.15.yml
secrets: inherit
with:
make_release: false
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
get-ksu-manager:
if: ${{ inputs.get_manager }}
uses: ./.github/workflows/get-manager.yml
secrets: inherit
with:
kernelsu_variant: ${{ inputs.kernelsu_variant }}
================================================
FILE: .github/workflows/build-kernel-a14-6-1.yml
================================================
name: 编译内核a14-6-1
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_dispatch:
inputs:
kernelsu_variant:
description: "选择 KernelSU"
required: true
type: choice
options:
- Official
- Next
- MKSU
- SukiSU
default: SukiSU
kernelsu_branch:
description: "选择 ksu 分支"
required: true
type: choice
options:
- Stable(标准)
- Dev(开发)
- Other(其他/指定)
default: Dev(开发)
version:
description: '自定义版本名(如6.1.93后面的字符/留空则使用默认版本号)'
required: false
type: string
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
get_manager:
description: '是否同时获取最新KSU管理器?(实验性功能,报错请关闭)'
required: true
type: boolean
default: true
jobs:
build-kernel-a14-6-1:
uses: ./.github/workflows/kernel-a14-6.1.yml
secrets: inherit
with:
make_release: false
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
get-ksu-manager:
if: ${{ inputs.get_manager }}
uses: ./.github/workflows/get-manager.yml
secrets: inherit
with:
kernelsu_variant: ${{ inputs.kernelsu_variant }}
================================================
FILE: .github/workflows/build-kernel-a15-6-6.yml
================================================
name: 编译内核a15-6-6
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_dispatch:
inputs:
kernelsu_variant:
description: "选择 KernelSU"
required: true
type: choice
options:
- Official
- Next
- MKSU
- SukiSU
default: SukiSU
kernelsu_branch:
description: "选择 ksu 分支"
required: true
type: choice
options:
- Stable(标准)
- Dev(开发)
- Other(其他/指定)
default: Dev(开发)
version:
description: '自定义版本名(如位于6.6.77-android15-8<自定义版本名>/留空则使用默认版本号)'
required: false
type: string
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: false
type: boolean
default: true
supp_op:
description: '是否开启一加8E处理器机型支持?(非该机型无须勾)'
required: false
type: boolean
default: false
get_manager:
description: '是否同时获取最新KSU管理器?(实验性功能,报错请关闭)'
required: true
type: boolean
default: true
jobs:
build-kernel-a15-6-6:
uses: ./.github/workflows/kernel-a15-6.6.yml
secrets: inherit
with:
make_release: false
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
supp_op: ${{ inputs.supp_op }}
get-ksu-manager:
if: ${{ inputs.get_manager }}
uses: ./.github/workflows/get-manager.yml
secrets: inherit
with:
kernelsu_variant: ${{ inputs.kernelsu_variant }}
================================================
FILE: .github/workflows/get-manager.yml
================================================
name: GetManager
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: read # Allows triggering actions
on:
workflow_call: # This allows this workflow to be called from another workflow
inputs:
kernelsu_variant:
required: true
type: string
jobs:
get_ksu_manager:
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_HARDLINK: "true"
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: 安装依赖
run: sudo apt update && sudo apt upgrade -y && sudo apt install -y git curl jq
- name: 设定 KSU 环境变量
run: |
if [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
echo "This is the Next variant"
git clone https://github.com/KernelSU-Next/KernelSU-Next.git
cd KernelSU-Next
KSU_GIT_VERSION=$(git rev-list --count HEAD)
# ???
KSU_VERSION=$((10000 + KSU_GIT_VERSION + 200))
echo $KSU_VERSION
echo "KSU_VERSION=$KSU_VERSION" >> $GITHUB_ENV
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
echo "This is the SukiSU variant"
git clone https://github.com/SukiSU-Ultra/SukiSU-Ultra.git
cd SukiSU-Ultra
KSU_GIT_VERSION=$(git rev-list --count HEAD)
KSU_VERSION=$((10000 + KSU_GIT_VERSION + 700))
echo $KSU_VERSION
echo "KSU_VERSION=$KSU_VERSION" >> $GITHUB_ENV
else
echo "Unknown variant"
fi
- name: 添加 KernelSU
run: |
if [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
echo "KernelSU Next..."
REPO="KernelSU-Next/KernelSU-Next"
FILENAME="build-manager-ci.yml"
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
echo "SukiSU..."
REPO="SukiSU-Ultra/SukiSU-Ultra"
FILENAME="build-manager.yml"
fi
# 获取最新成功构建的 ID
BUILD_ID=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/$REPO/actions/workflows/$FILENAME/runs?status=success" | \
jq -r '.workflow_runs[0].id')
echo 'BUILD_ID=$BUILD_ID'
# 获取该构建的 Artifacts
ARTIFACTS=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/$REPO/actions/runs/$BUILD_ID/artifacts")
echo 'ARTIFACTS=$ARTIFACTS'
# 获取 Manager 文件的下载链接
if [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
DOWNLOAD_URL=$(echo "$ARTIFACTS" | jq -r '.artifacts[] | select(.name | contains("Manager")) | .archive_download_url')
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
DOWNLOAD_URL=$(echo "$ARTIFACTS" | jq -r '.artifacts[] | select(.name | contains("Manager")) | .archive_download_url')
fi
# 下载 Manager 文件
curl -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o "${{ inputs.kernelsu_variant }}-管理器(${{ env.KSU_VERSION }}).zip" "$DOWNLOAD_URL"
echo "Manager 文件已下载为:${{ inputs.kernelsu_variant }}-管理器(${{ env.KSU_VERSION }}).zip"
unzip *.zip
- name: 上传编译资产
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.kernelsu_variant }}-Manager(${{ env.KSU_VERSION }})
path: |
*.apk
================================================
FILE: .github/workflows/gki-kernel.yml
================================================
name: GKI Kernel Build
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_call: # This allows this workflow to be called from another workflow
inputs:
make_release:
required: true
type: boolean
default: true
android_version:
required: true
type: string
kernel_version:
required: true
type: string
sub_level:
required: true
type: string
os_patch_level:
required: true
type: string
kernelsu_variant:
required: true
type: string
kernelsu_branch:
required: true
type: string
# kernelsu_branch_other:
# required: false
# type: string
revision:
required: false
type: string
version:
required: false
type: string
use_zram:
required: true
type: boolean
default: true
use_kpm:
required: true
type: boolean
default: true
supp_op:
required: true
type: boolean
default: false
BBG:
required: true
type: boolean
default: false
jobs:
build-kernel-kernelsu-susfs:
runs-on: ubuntu-latest
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpmachine; %compiler% -dumpversion"
CCACHE_NOHASHDIR: "true"
CCACHE_HARDLINK: "true"
steps:
- name: Maximize Build Space
uses: AdityaGarg8/remove-unwanted-software@v5
with:
remove-dotnet: 'true' # Frees ~2 GB
remove-android: 'true' # Frees ~9 GB
remove-haskell: 'true' # Frees ~5.2 GB
remove-codeql: 'true' # Frees ~5.4 GB
remove-docker-images: 'true' # Frees ~3.2 GB
remove-large-packages: 'true' # Frees ~3.1 GB
remove-swapfile: 'true' # Frees ~4 GB
remove-cached-tools: 'false' # Avoid unless confirmed safe
verbose: 'true' # Enable detailed logging
- name: 设定 CONFIG 环境变量
run: |
# Set CONFIG dynamically based on inputs values
CONFIG="${{ inputs.android_version }}-${{ inputs.kernel_version }}-${{ inputs.sub_level }}"
# Set CONFIG as an environment variable for future steps
echo "CONFIG=$CONFIG" >> $GITHUB_ENV
echo "CONFIG set to: $CONFIG"
# Install ccache
- name: 安装 ccache
run: sudo apt update && sudo apt upgrade -y && sudo apt install -y ccache python3 git curl
- name: 配置 ccache
run: |
mkdir -p ~/.cache/bazel
ccache --version
ccache --max-size=2G
ccache --set-config=compression=true
echo "CCACHE_DIR=$HOME/.ccache" >> $GITHUB_ENV
- name: 从缓存中还原ccache
uses: actions/cache@v4
with:
path: ~/.ccache
key: ${{ inputs.android_version }}-${{ inputs.kernel_version }}-${{ inputs.sub_level }}-ccache-${{ github.sha }}
restore-keys: |
${{ inputs.android_version }}-${{ inputs.kernel_version }}-${{ inputs.sub_level }}-ccache-
- name: 缓存工具链
id: cache-toolchain
uses: actions/cache@v4
with:
path: |
kernel-build-tools
mkbootimg
key: toolchain-${{ runner.os }}-v1
# Step 2: Download toolchain if cache was not found
- name: 下载工具链(如果未找到缓存)
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: |
AOSP_MIRROR=https://android.googlesource.com
BRANCH=main-kernel-build-2024
git clone $AOSP_MIRROR/kernel/prebuilts/build-tools -b $BRANCH --depth 1 kernel-build-tools
git clone $AOSP_MIRROR/platform/system/tools/mkbootimg -b $BRANCH --depth 1 mkbootimg
- name: 设置环境变量
run: |
echo "AVBTOOL=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/bin/avbtool" >> $GITHUB_ENV
echo "MKBOOTIMG=$GITHUB_WORKSPACE/mkbootimg/mkbootimg.py" >> $GITHUB_ENV
echo "UNPACK_BOOTIMG=$GITHUB_WORKSPACE/mkbootimg/unpack_bootimg.py" >> $GITHUB_ENV
- name: 密钥设置——已经过mkppk修改
env:
BOOT_SIGN_KEY: ${{ secrets.BOOT_SIGN_KEY }}
run: |
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 > ./kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem
echo "BOOT_SIGN_KEY_PATH=$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem" >> $GITHUB_ENV
- name: 安装仓库
run: |
# Install dependencies
mkdir -p ./git-repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ./git-repo/repo
chmod a+rx ./git-repo/repo
echo "REPO=$GITHUB_WORKSPACE/./git-repo/repo" >> $GITHUB_ENV
- name: 克隆 AnyKernel3 和其他依赖项
run: |
echo "Cloning AnyKernel3 and other dependencies..."
ANYKERNEL_BRANCH="gki-2.0"
SUSFS_BRANCH="gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}"
# Debug print the branches
echo "Using branch for SUSFS: $SUSFS_BRANCH"
# Clone repositories using the branch names
git clone https://github.com/WildPlusKernel/AnyKernel3.git -b "$ANYKERNEL_BRANCH"
git clone https://github.com/ShirkNeko/susfs4ksu.git -b "$SUSFS_BRANCH"
git clone https://github.com/Tools-cx-app/kernel_patches.git
# Sukisu的补丁仓库
git clone https://github.com/ShirkNeko/SukiSU_patch.git
- name: 设置 CONFIG 环境变量
run: |
# Set CONFIG dynamically based on inputs values
CONFIG="${{ inputs.android_version }}-${{ inputs.kernel_version }}-${{ inputs.sub_level }}"
# Set CONFIG as an environment variable for future steps
echo "CONFIG=$CONFIG" >> $GITHUB_ENV
echo "CONFIG set to: $CONFIG"
- name: 初始化和同步内核源代码
run: |
echo "Creating folder for configuration: $CONFIG..."
mkdir -p "$CONFIG"
cd "$CONFIG"
# Initialize and sync kernel source
echo "Initializing and syncing kernel source..."
FORMATTED_BRANCH="${{ inputs.android_version }}-${{ inputs.kernel_version }}-${{ inputs.os_patch_level }}"
$REPO init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-${FORMATTED_BRANCH} --repo-rev=v2.16
REMOTE_BRANCH=$(git ls-remote https://android.googlesource.com/kernel/common ${FORMATTED_BRANCH})
DEFAULT_MANIFEST_PATH=.repo/manifests/default.xml
# Check if branch is deprecated
if grep -q deprecated <<< $REMOTE_BRANCH; then
echo "Found deprecated branch: $FORMATTED_BRANCH"
sed -i "s/\"${FORMATTED_BRANCH}\"/\"deprecated\/${FORMATTED_BRANCH}\"/g" $DEFAULT_MANIFEST_PATH
fi
# Sync repo and apply patches
$REPO --version
$REPO --trace sync -c -j$(nproc --all) --no-tags --fail-fast
echo "REMOTE_BRANCH=$REMOTE_BRANCH" >> $GITHUB_ENV
FORMATTED_BRANCH="${{ inputs.android_version }}-${{ inputs.kernel_version }}"
if grep -q deprecated <<< "$REMOTE_BRANCH" && \
{ [ "$FORMATTED_BRANCH" == "android13-5.15" ] && \
[ ${{ inputs.sub_level }} -lt 123 ]; }; then
echo '修复5.15仅支持旧版C库的BUG'
cd ./common
curl -LSs https://github.com/zzh20188/GKI_KernelSU_SUSFS/raw/refs/heads/legacy/fix_5.15.legacy -o fix_5.15.legacy.patch
patch -p1 < fix_5.15.legacy.patch
fi
- name: 使GKI在一加8E平台正常使用
if: ${{ inputs.supp_op }}
run: |
echo '切换到驱动目录'
cd "$CONFIG/common/drivers/"
echo '当前目录$(pwd),下载支持补丁'
curl -LSs "https://github.com/zzh20188/GKI_KernelSU_SUSFS/raw/refs/heads/dev/hmbird_patch.c" -o hmbird_patch.c
if [ ! -f hmbird_patch.c ]; then
echo "hmbird_patch.c 下载失败"
fi
echo '补丁加入构建'
echo "obj-y += hmbird_patch.o" >> Makefile
tail -n 3 Makefile
- name: 确定 KernelSU 的分支
run: |
branch_input="${{ inputs.kernelsu_branch }}"
variant_input="${{ inputs.kernelsu_variant }}"
case "$branch_input" in
"Stable(标准)")
echo "BRANCH=-s builtin" >> $GITHUB_ENV
;;
"Dev(开发)")
case "$variant_input" in
"Official" | "MKSU") echo "BRANCH=-s main" >> $GITHUB_ENV ;;
"Next") echo "BRANCH=-s next-susfs-dev" >> $GITHUB_ENV ;;
"SukiSU") echo "BRANCH=-s builtin" >> $GITHUB_ENV ;;
*)
echo "错误:未定义开发分支的变体 '$variant_input'" >&2
exit 1
;;
esac
;;
*)
echo "错误:需要自定义分支时未提供参数" >&2
exit 1
;;
esac
- name: 添加 KernelSU
run: |
echo "更改为配置目录: $CONFIG..."
cd "$CONFIG"
if [ "${{ inputs.kernelsu_variant }}" == "Official" ]; then
echo "Adding KernelSU Official..."
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash $BRANCH
elif [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
echo "Adding KernelSU Next..."
curl -LSs "https://raw.githubusercontent.com/rifsxd/KernelSU-Next/next-susfs/kernel/setup.sh" | bash $BRANCH
elif [ "${{ inputs.kernelsu_variant }}" == "MKSU" ]; then
echo "Adding KernelSU MKSU..."
curl -LSs "https://raw.githubusercontent.com/5ec1cff/KernelSU/main/kernel/setup.sh" | bash $BRANCH
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
echo "Adding KernelSU SukiSU..."
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash $BRANCH
fi
- name: 添加 Baseband-guard 支持
if: ${{ github.event.inputs.BBG == 'true' }}
run: |
echo "更改为配置目录: $CONFIG..."
cd "$CONFIG/common"
echo "下载并运行 Baseband-guard setup 脚本..."
wget -O- https://github.com/vc-teahouse/Baseband-guard/raw/main/setup.sh | bash
echo "启用 Baseband-guard 内核配置..."
CONFIG_FILE="arch/arm64/configs/gki_defconfig"
echo "CONFIG_BBG=y" >> "$CONFIG_FILE"
# 对于 GitHub Actions 云编译,修改 LSM Kconfig
echo "修改 security/Kconfig 以包含 baseband_guard..."
sed -i '/^config LSM$/,/^help$/{ /^[[:space:]]*default/ { /baseband_guard/! s/lockdown/lockdown,baseband_guard/ } }' ./security/Kconfig
echo "Baseband-guard 配置完成"
- name: 为 KernelSU 变体安装 SUSFS 补丁
run: |
echo "更改为配置目录: $CONFIG..."
cd "$CONFIG"
echo "Applying SUSFS patches..."
# Copy SUSFS patches
cp ../susfs4ksu/kernel_patches/50_add_susfs_in_gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch ./common/
cp ../susfs4ksu/kernel_patches/fs/* ./common/fs/
cp ../susfs4ksu/kernel_patches/include/linux/* ./common/include/linux/
if [ "${{ inputs.kernelsu_variant }}" == "Official" ]; then
echo "Applying SUSFS patches for Official KernelSU..."
cd ./KernelSU
cp ../../susfs4ksu/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch ./
patch -p1 --forward --fuzz=3 < 10_enable_susfs_for_ksu.patch
elif [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
# echo "Applying SUSFS patches for KernelSU-Next..."
cd ./KernelSU-Next
# curl -LSs https://github.com/zzh20188/GKI_KernelSU_SUSFS/raw/refs/heads/dev/0001-kernel-patch-susfs-v1.5.7-to-KernelSU-Next-v1.0.7.patch -o susfs.patch
# patch -p1 --forward < susfs.patch
# # cp ../../kernel_patches/next/kernel-patch-susfs-v1.5.7-to-KernelSU-Next.patch ./
# # patch -p1 --forward --fuzz=3 < kernel-patch-susfs-v1.5.7-to-KernelSU-Next.patch || true
# # # 临时补丁
# # curl -LSs "https://github.com/zzh20188/GKI_KernelSU_SUSFS/raw/refs/heads/dev/fix_ksun_susfs.patch" -o fix_ksun_susfs.patch
# # echo '应用KSUN临时修复补丁'
# # patch -p1 --forward < fix_ksun_susfs.patch
# sed -i '/bool ksu_devpts_hook = false;/d' ./kernel/sucompat.c
elif [ "${{ inputs.kernelsu_variant }}" == "MKSU" ]; then
echo "Applying SUSFS patches for MKSU..."
cd ./KernelSU
cp ../../susfs4ksu/kernel_patches/KernelSU/10_enable_susfs_for_ksu.patch ./
patch -p1 --forward --fuzz=3 < 10_enable_susfs_for_ksu.patch || true
echo "Applying MKSU specific SUSFS patch..."
cp ../../kernel_patches/mksu/mksu_susfs.patch ./
patch -p1 < mksu_susfs.patch || true
cp ../../kernel_patches/mksu/fix.patch ./
patch -p1 < fix.patch || true
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
echo "Applying SUSFS patches for SukiSU..."
cd ./KernelSU
echo "Applying SukiSU specific SUSFS patch..."
else
echo "Invalid KernelSU variant selected!"
exit 1
fi
cd ../common
FORMATTED_BRANCH="${{ inputs.android_version }}-${{ inputs.kernel_version }}"
if grep -q deprecated <<< "$REMOTE_BRANCH" && \
{ [ "$FORMATTED_BRANCH" == "android12-5.10" ] && \
[ ${{ inputs.sub_level }} -lt 136 ]; }; then
patch -p1 < 50_add_susfs_in_gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
curl -LSs https://github.com/zzh20188/GKI_KernelSU_SUSFS/raw/refs/heads/legacy/fdinfo.c.patch -o fdinfo.c.patch
patch -p1 < fdinfo.c.patch
else
patch -p1 --fuzz=3 < 50_add_susfs_in_gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
fi
- name: 一些修复补丁
run: |
cd "$CONFIG/common"
FORMATTED_BRANCH="${{ inputs.android_version }}-${{ inputs.kernel_version }}"
# Fake Patch to fix failures
fake_patched=0
if [ "$FORMATTED_BRANCH" = "android15-6.6" ]; then
if ! grep -qxF $'\tunsigned int nr_subpages = __PAGE_SIZE / PAGE_SIZE;' ./fs/proc/task_mmu.c; then
echo "未找到 nr_subpages,正在进行补丁修复"
sed -i -e '/int ret = 0, copied = 0;/a \\tunsigned int nr_subpages \= __PAGE_SIZE \/ PAGE_SIZE;' -e '/int ret = 0, copied = 0;/a \\tpagemap_entry_t \*res = NULL;' ./fs/proc/task_mmu.c
fake_patched=1
fi
if ! grep -qxF '#include <linux/dma-buf.h>' ./fs/proc/base.c; then
echo "未找到 #include <linux/dma-buf.h>,添加缺失的头文件"
sed -i '/#include <linux\/cpufreq_times.h>/a #include <linux\/dma-buf.h>' ./fs/proc/base.c
fi
fi
if [ "$FORMATTED_BRANCH" = "android14-6.1" ]; then
if ! grep -qxF $'\tif (!vma_pages(vma))' ./fs/proc/task_mmu.c; then
echo "未找到 vma_pages,正在进行补丁修复"
fake_patched=1
fi
if ! grep -qxF '#include <linux/dma-buf.h>' ./fs/proc/base.c; then
echo "未找到 #include <linux/dma-buf.h>,添加缺失的头文件"
sed -i '/#include <linux\/cpufreq_times.h>/a #include <linux\/dma-buf.h>' ./fs/proc/base.c
fi
fi
if [ "$FORMATTED_BRANCH" = "android12-5.10" ] || [ "$FORMATTED_BRANCH" = "android13-5.10" ] || [ "$FORMATTED_BRANCH" = "android13-5.15" ]; then
if ! grep -qxF $'\tif (!vma_pages(vma))' ./fs/proc/task_mmu.c; then
echo "未找到 vma_pages,正在进行补丁修复"
fake_patched=1
fi
fi
if [ "$fake_patched" = 1 ]; then
if [ "$FORMATTED_BRANCH" = "android15-6.6" ]; then
if grep -qxF $'\tunsigned int nr_subpages = __PAGE_SIZE / PAGE_SIZE;' ./fs/proc/task_mmu.c; then
sed -i -e '/unsigned int nr_subpages \= __PAGE_SIZE \/ PAGE_SIZE;/d' -e '/pagemap_entry_t \*res = NULL;/d' ./fs/proc/task_mmu.c
fi
fi
if [ "$FORMATTED_BRANCH" = "android12-5.10" ] || [ "$FORMATTED_BRANCH" = "android13-5.10" ] || [ "$FORMATTED_BRANCH" = "android13-5.15" ] || [ "$FORMATTED_BRANCH" = "android14-6.1" ]; then
if grep -q 'goto[[:space:]]\+show_pad;' ./fs/proc/task_mmu.c; then
sed -i -e 's/goto show_pad;/return 0;/' ./fs/proc/task_mmu.c
fi
fi
fi
- name: 应用新的HOOKS补丁
run: |
echo "更改为配置目录: $CONFIG..."
cd "$CONFIG/common"
if [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
echo "Applying hooks for KernelSU-Next..."
cp ../../kernel_patches/next/scope_min_manual_hooks_v1.4.patch ./
patch -p1 -F 3 < scope_min_manual_hooks_v1.4.patch
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
echo "Applying hooks for SukiSU..."
fi
- name: 复制源文件 & 应用LZ4KD & ZSTDN补丁
if: ${{ inputs.use_zram }}
run: |
echo "更改为配置目录: $CONFIG..."
cd "$CONFIG/common"
cp -r ../../SukiSU_patch/other/zram/lz4k/include/linux/* ./include/linux/
cp -r ../../SukiSU_patch/other/zram/lz4k/lib/* ./lib/
cp -r ../../SukiSU_patch/other/zram/lz4k/crypto/* ./crypto/
cp -r ../../SukiSU_patch/other/zram/lz4k_oplus ./lib/
cp ../../SukiSU_patch/other/zram/zram_patch/${{ inputs.kernel_version }}/lz4kd.patch ./
echo "正在打lz4kd补丁"
patch -p1 -F 3 < lz4kd.patch || true
echo '完成LZ4KD补丁'
cp ../../SukiSU_patch/other/zram/zram_patch/${{ inputs.kernel_version }}/lz4k_oplus.patch ./
echo "正在打lz4k_oplus补丁"
patch -p1 -F 3 < lz4k_oplus.patch || true
echo '完成lz4k_oplus补丁'
- name: 应用隐藏某特征的补丁
run: |
echo "更改为配置目录: $CONFIG..."
cd "$CONFIG/common"
# Apply additional patch
if [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
cp ../../SukiSU_patch/69_hide_stuff.patch ./
patch -p1 -F 3 < 69_hide_stuff.patch
else
cp ../../kernel_patches/69_hide_stuff.patch ./
patch -p1 -F 3 < 69_hide_stuff.patch
fi
- name: LZ4KD & Lz4k_oplus配置
if: ${{ inputs.use_zram }}
run: |
set -x
set -e
echo "写入LZ4KD&ZSTDN config依赖"
CONFIG_FILE="$CONFIG/common/arch/arm64/configs/gki_defconfig"
if [ "${{ inputs.kernel_version }}" = "5.10" ]; then
echo "CONFIG_ZSMALLOC=y" >> "$CONFIG_FILE"
echo "CONFIG_ZRAM=y" >> "$CONFIG_FILE"
echo "CONFIG_MODULE_SIG=n" >> "$CONFIG_FILE"
echo "CONFIG_CRYPTO_LZO=y" >> "$CONFIG_FILE"
echo "CONFIG_ZRAM_DEF_COMP_LZ4KD=y" >> "$CONFIG_FILE"
fi
if [ "${{ inputs.kernel_version }}" != "6.6" ] && [ "${{ inputs.kernel_version }}" != "5.10" ]; then
# sed -i 's/CONFIG_MODULE_SIG=y/CONFIG_MODULE_SIG=n/g' "$CONFIG_FILE"
if grep -q "CONFIG_ZSMALLOC" -- "$CONFIG_FILE"; then
echo "提示:文件 $CONFIG_FILE 包含字符串 CONFIG_ZSMALLOC。"
sed -i 's/CONFIG_ZSMALLOC=m/CONFIG_ZSMALLOC=y/g' "$CONFIG_FILE"
else
echo "警告:文件 $CONFIG_FILE 不包含字符串 CONFIG_ZSMALLOC。"
echo "CONFIG_ZSMALLOC=y" >> "$CONFIG_FILE"
fi
sed -i 's/CONFIG_ZRAM=m/CONFIG_ZRAM=y/g' "$CONFIG_FILE"
fi
if [ "${{ inputs.kernel_version }}" = "6.6" ]; then
echo "CONFIG_ZSMALLOC=y" >> "$CONFIG_FILE"
sed -i 's/CONFIG_ZRAM=m/CONFIG_ZRAM=y/g' "$CONFIG_FILE"
fi
if [ "${{ inputs.android_version }}" = "android14" ] || [ "${{ inputs.android_version }}" = "android15" ]; then
sed -i 's/"drivers\/block\/zram\/zram\.ko",//g; s/"mm\/zsmalloc\.ko",//g' "$CONFIG/common/modules.bzl"
echo "CONFIG_MODULE_SIG_FORCE=n" >> "$CONFIG_FILE"
echo 'Android14_Bazel:已修复zram&zsmalloc'
fi
if grep -q "CONFIG_ZSMALLOC=y" "$CONFIG_FILE" && grep -q "CONFIG_ZRAM=y" "$CONFIG_FILE"; then
echo "CONFIG_CRYPTO_LZ4HC=y" >> "$CONFIG_FILE"
echo "CONFIG_CRYPTO_LZ4K=y" >> "$CONFIG_FILE"
echo "CONFIG_CRYPTO_LZ4KD=y" >> "$CONFIG_FILE"
echo "CONFIG_CRYPTO_842=y" >> "$CONFIG_FILE"
echo "CONFIG_CRYPTO_LZ4K_OPLUS=y" >> "$CONFIG_FILE"
echo "CONFIG_ZRAM_WRITEBACK=y" >> "$CONFIG_FILE"
fi
- name: 设置BBR为默认拥塞算法
if: ${{ inputs.set_defbbr }}
run: |
CONFIG_FILE="$CONFIG/common/arch/arm64/configs/gki_defconfig"
echo "Changing to configuration directory: $CONFIG_FILE..."
echo "CONFIG_DEFAULT_BBR=y" >> "$CONFIG_FILE"
- name: 添加SUSFS配置设置
run: |
echo "更改为配置目录: $CONFIG..."
cd "$CONFIG"
echo "Adding configuration settings to gki_defconfig..."
# Add KSU configuration settings
echo "CONFIG_KSU=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
echo "CONFIG_KSU_KPROBES_HOOK=n" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_SU=n" >> ./common/arch/arm64/configs/gki_defconfig
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
echo "CONFIG_KPM=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_SU=n" >> ./common/arch/arm64/configs/gki_defconfig
elif [ "${{ inputs.kernelsu_variant }}" == "MKSU" ]; then
echo "CONFIG_KSU_SUSFS_SUS_SU=n" >> ./common/arch/arm64/configs/gki_defconfig
fi
# Add additional tmpfs config setting
echo "CONFIG_TMPFS_XATTR=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_TMPFS_POSIX_ACL=y" >> ./common/arch/arm64/configs/gki_defconfig
# Add additional config setting
echo "CONFIG_IP_NF_TARGET_TTL=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_TARGET_HL=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_IP6_NF_MATCH_HL=y" >> ./common/arch/arm64/configs/gki_defconfig
# Add BBR Config
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
# Add SUSFS configuration settings
echo "CONFIG_KSU_SUSFS=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_SUS_MAP=y" >> ./common/arch/arm64/configs/gki_defconfig
if [ "${{ inputs.kernel_version }}" != "6.6" ]; then
echo "CONFIG_KSU_SUSFS_SUS_PATH=y" >> ./common/arch/arm64/configs/gki_defconfig
else
echo "CONFIG_KSU_SUSFS_SUS_PATH=n" >> ./common/arch/arm64/configs/gki_defconfig
fi
echo "CONFIG_KSU_SUSFS_SUS_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_KSU_DEFAULT_MOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_AUTO_ADD_SUS_BIND_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_TRY_UMOUNT=y" >> ./common/arch/arm64/configs/gki_defconfig
echo "CONFIG_KSU_SUSFS_AUTO_ADD_TRY_UMOUNT_FOR_BIND_MOUNT=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
# Remove check_defconfig
sed -i 's/check_defconfig//' ./common/build.config.gki
- name: 配置内核名称
run: |
echo "更改为配置目录: $CONFIG..."
cd "$CONFIG"
if [ ! -z ${{ inputs.version }} ]; then
echo "版本号不为空"
sed -i '$s|echo "\$res"|echo "${{ inputs.version }}"|' ./common/scripts/setlocalversion
else
echo "版本号为空,使用默认值"
sed -i '$s|echo "\$res"|echo "\$res-zakozakoooooo-1145141919"|' ./common/scripts/setlocalversion
fi
# 如果你需要改构建时间,请把以下变量 CURRENT_TIME 修改为如下例子字符串,如:CURRENT_TIME="Sat Jun 07 06:29:29 UTC 2025"
# 该字符串表示 UTC时间: 2025年6月7日 06:29:29,"Sat" 是星期六的缩写,而 "Jun" 是六月的缩写
# 如果你想使用北京时间应为:CURRENT_TIME="Sat Jun 07 14:29:29 CST 2025"
CURRENT_TIME=$(date -u +"%a %b %d %H:%M:%S UTC %Y")
echo "CURRENT_TIME=$CURRENT_TIME"
perl -pi -e "s{UTS_VERSION=\"\\\$\(echo \\\$UTS_VERSION \\\$CONFIG_FLAGS \\\$TIMESTAMP \\| cut -b -\\\$UTS_LEN\)\"}{UTS_VERSION=\"#1 SMP PREEMPT $CURRENT_TIME\"}" ./common/scripts/mkcompile_h
# Apply specific Makefile modification for kernel versions 6.1 and 6.6 only
if [ "${{ inputs.kernel_version }}" = "6.1" ] || [ "${{ inputs.kernel_version }}" = "6.6" ]; then
sed -i -e "s|\$(preempt-flag-y) \"\$(build-timestamp)\"|\$(preempt-flag-y) \"$CURRENT_TIME\"|" ./common/init/Makefile
fi
if [ -f "build/build.sh" ]; then
sed -i 's/-dirty//' ./common/scripts/setlocalversion
else
sed -i '/^[[:space:]]*"protected_exports_list"[[:space:]]*:[[:space:]]*"android\/abi_gki_protected_exports_aarch64",$/d' ./common/BUILD.bazel
rm -rf ./common/android/abi_gki_protected_exports_*
sed -i "/stable_scmversion_cmd/s/-maybe-dirty//g" ./build/kernel/kleaf/impl/stamp.bzl
# sed -E -i '/^CONFIG_LOCALVERSION=/ s/(.*)"$/\1"/' ./common/arch/arm64/configs/gki_defconfig
if [ ! -z ${{ inputs.version }} ]; then
sed -i '/^CONFIG_LOCALVERSION=/ s/="\([^"]*\)"/="${{ inputs.version }}"/' ./common/arch/arm64/configs/gki_defconfig
fi
fi
- name: Build with retry
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
retry_on: timeout
command: |
set -e
set -x
cd "$CONFIG"
# 替换 BUILD_SYSTEM_DLKM=1 为 BUILD_SYSTEM_DLKM=0
sed -i 's/BUILD_SYSTEM_DLKM=1/BUILD_SYSTEM_DLKM=0/' common/build.config.gki.aarch64
# 删除 MODULES_ORDER=android/gki_aarch64_modules 行
sed -i '/MODULES_ORDER=android\/gki_aarch64_modules/d' common/build.config.gki.aarch64
sed -i '/KMI_SYMBOL_LIST_STRICT_MODE/d' common/build.config.gki.aarch64
echo "Building the kernel..."
if [ -f "build/build.sh" ]; then
LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh CC="/usr/bin/ccache clang" || exit 1
else
tools/bazel build --disk_cache=/home/runner/.cache/bazel --config=fast --lto=thin //common:kernel_aarch64_dist || exit 1
fi
ccache --show-stats
- name: 修补 Image 文件 安卓12和安卓13(仅限sukisu)
if: ${{ inputs.use_kpm && inputs.kernelsu_variant == 'SukiSU' && (inputs.android_version == 'android12' || inputs.android_version == 'android13') }}
run: |
if [ "${{ inputs.kernel_version }}" != "6.6" ]; then
echo "Patching Image file..."
cd "$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist"
curl -LSs "https://raw.githubusercontent.com/ShirkNeko/SukiSU_patch/refs/heads/main/kpm/patch_linux" -o patch
chmod 777 patch
./patch
rm -rf Image
mv oImage Image
cd ../../../..
fi
- name: 修补 Image 文件 安卓14和安卓15(仅限sukisu)
if: ${{ inputs.use_kpm && inputs.kernelsu_variant == 'SukiSU' && (inputs.android_version == 'android14' || inputs.android_version == 'android15') }}
run: |
if [ "${{ inputs.kernel_version }}" != "6.6" ]; then
echo "Patching Image file..."
cd "$CONFIG/bazel-bin/common/kernel_aarch64/"
curl -LSs "https://raw.githubusercontent.com/ShirkNeko/SukiSU_patch/refs/heads/main/kpm/patch_linux" -o patch
chmod 777 patch
./patch
rm -rf Image
mv oImage Image
cd ../../..
fi
- name: 创建Bootimgs文件夹并复制镜像
if: ${{ inputs.android_version == 'android12' || inputs.android_version == 'android13' }}
run: |
echo "更改为配置目录: $CONFIG..."
mkdir bootimgs
echo "Creating bootimgs folder and copying images..."
cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image ./bootimgs
cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image.lz4 ./bootimgs
cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image ./
cp ./$CONFIG/out/${{ inputs.android_version }}-${{ inputs.kernel_version }}/dist/Image.lz4 ./
# Create gzip of the Image file
gzip -n -k -f -9 ./Image > ./Image.gz
- name: 创建Bootimgs文件夹并复制镜像
if: ${{ inputs.android_version == 'android14' || inputs.android_version == 'android15' }}
run: |
echo "更改为配置目录: $CONFIG..."
mkdir bootimgs
echo "Creating bootimgs folder and copying images..."
cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image ./bootimgs
cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image.lz4 ./bootimgs
cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image ./
cp ./$CONFIG/bazel-bin/common/kernel_aarch64/Image.lz4 ./
# Create gzip of the Image file
gzip -n -k -f -9 ./Image > ./Image.gz
- name: 创建不同格式的ZIP文件
run: |
echo "Creating zip files for all formats..."
cd ./AnyKernel3
# Create and upload zip for each format
ZIP_NAME="${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-AnyKernel3.zip"
echo "Creating zip file: $ZIP_NAME..."
mv ../Image ./Image
zip -r "../$ZIP_NAME" ./*
rm ./Image
ZIP_NAME="${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-AnyKernel3-lz4.zip"
echo "Creating zip file: $ZIP_NAME..."
mv ../Image.lz4 ./Image.lz4
zip -r "../$ZIP_NAME" ./*
rm ./Image.lz4
ZIP_NAME="${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-AnyKernel3-gz.zip"
echo "Creating zip file: $ZIP_NAME..."
mv ../Image.gz ./Image.gz
zip -r "../$ZIP_NAME" ./*
rm ./Image.gz
- name: 运行boot镜像 ${{ inputs.android_version }} 编译脚本
if: ${{ inputs.android_version == 'android12' }}
run: |
echo "更改为配置目录: $CONFIG..."
cd bootimgs
GKI_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-"${{ inputs.os_patch_level }}"_"${{ inputs.revision }}".zip
FALLBACK_URL=https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-2023-01_r1.zip
# Check if the GKI URL is available
echo "Checking if GKI kernel URL is reachable: $GKI_URL"
status=$(curl -sL -w "%{http_code}" "$GKI_URL" -o /dev/null)
if [ "$status" = "200" ]; then
echo "[+] Downloading from GKI_URL"
curl -Lo gki-kernel.zip "$GKI_URL"
else
echo "[+] $GKI_URL not found, using $FALLBACK_URL"
curl -Lo gki-kernel.zip "$FALLBACK_URL"
fi
# Unzip the downloaded kernel and remove the zip
echo "Unzipping the downloaded kernel..."
unzip gki-kernel.zip && rm gki-kernel.zip
echo "Unpacking boot.img..."
FULL_PATH=$(pwd)/boot-5.10.img
echo "Unpacking using: $FULL_PATH"
echo "Running unpack_bootimg.py..."
$UNPACK_BOOTIMG --boot_img="$FULL_PATH"
echo "Building Image.gz"
gzip -n -k -f -9 ./Image > ./Image.gz
echo "Building boot.img"
$MKBOOTIMG --header_version 4 --kernel Image --output boot.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
$AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
cp ./boot.img ../${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot.img
echo "Building boot-gz.img"
$MKBOOTIMG --header_version 4 --kernel Image.gz --output boot-gz.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
$AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-gz.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
cp ./boot-gz.img ../${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot-gz.img
echo "Building boot-lz4.img"
$MKBOOTIMG --header_version 4 --kernel Image.lz4 --output boot-lz4.img --ramdisk out/ramdisk --os_version 12.0.0 --os_patch_level "${{ inputs.os_patch_level }}"
$AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-lz4.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
cp ./boot-lz4.img ../${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot-lz4.img
- name: 运行boot镜像 ${{ inputs.android_version }} 编译脚本
if: ${{ inputs.android_version == 'android13' || inputs.android_version == 'android14' || inputs.android_version == 'android15' }}
run: |
cd bootimgs
echo "Building Image.gz"
gzip -n -k -f -9 ./Image > ./Image.gz
echo "Building boot.img"
$MKBOOTIMG --header_version 4 --kernel Image --output boot.img
$AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
cp ./boot.img ../${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot.img
echo "Building boot-gz.img"
$MKBOOTIMG --header_version 4 --kernel Image.gz --output boot-gz.img
$AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-gz.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
cp ./boot-gz.img ../${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot-gz.img
echo "Building boot-lz4.img"
$MKBOOTIMG --header_version 4 --kernel Image.lz4 --output boot-lz4.img
$AVBTOOL add_hash_footer --partition_name boot --partition_size $((64 * 1024 * 1024)) --image boot-lz4.img --algorithm SHA256_RSA2048 --key $BOOT_SIGN_KEY_PATH
cp ./boot-lz4.img ../${{ inputs.android_version }}-${{ inputs.kernel_version }}.${{ inputs.sub_level }}-${{ inputs.os_patch_level }}-boot-lz4.img
- name: 上传编译资产
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.kernelsu_variant }}_kernel-${{ env.CONFIG }}
path: |
*AnyKernel3.zip
*.img
================================================
FILE: .github/workflows/kernel-a12-5.10.yml
================================================
name: Android 12 5.10
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_call: # This allows this workflow to be called from another workflow
inputs:
make_release:
required: true
type: boolean
default: true
kernelsu_variant:
required: true
type: string
default: Next
kernelsu_branch:
required: true
type: string
default: Stable
# kernelsu_branch_other:
# required: false
# type: string
# default: ""
version:
required: false
type: string
default: ""
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
BBG:
description: '是否启用内核层面阻止对关键分区/设备节点的非法写入(LSM)?'
required: true
type: boolean
default: false
jobs:
build-kernel-a12-5-10-kernelsu-susfs:
strategy:
fail-fast: false
matrix:
include:
#- sub_level: "66"
# os_patch_level: "2022-01"
# revision: "r11"
#- sub_level: "81"
# os_patch_level: "2022-03"
# revision: "r11"
#- sub_level: "101"
# os_patch_level: "2022-04"
# revision: "r28"
- sub_level: "136"
os_patch_level: "2022-11"
revision: "r15"
#- sub_level: "168"
# os_patch_level: "2023-04"
# revision: "r9"
- sub_level: "198"
os_patch_level: "2024-01"
revision: "r17"
#- sub_level: "205"
# os_patch_level: "2024-03"
# revision: "r9"
- sub_level: "209"
os_patch_level: "2024-05"
revision: "r13"
#- sub_level: "218"
# os_patch_level: "2024-08"
# revision: "r14"
#- sub_level: "226"
# os_patch_level: "2024-11"
# revision: "r8"
#- sub_level: "233"
# os_patch_level: "2025-02"
# revision: "r1"
- sub_level: "236"
os_patch_level: "2025-05"
revision: "r1"
#- sub_level: "240"
# os_patch_level: "2025-09"
# revision: "r1"
- sub_level: "X"
os_patch_level: "lts"
revision: "r1"
uses: ./.github/workflows/gki-kernel.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release || false }}
android_version: "android12"
kernel_version: "5.10"
sub_level: ${{ matrix.sub_level }}
os_patch_level: ${{ matrix.os_patch_level }}
revision: ${{ matrix.revision }}
kernelsu_variant: ${{ inputs.kernelsu_variant || 'Next' }}
kernelsu_branch: ${{ inputs.kernelsu_branch || 'Dev' }}
# kernelsu_branch_other: ${{ inputs.kernelsu_branch_other || '' }}
version: ${{ inputs.version || '' }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
supp_op: ${{ inputs.supp_op || false }}
BBG: ${{ inputs.BBG || false }}
================================================
FILE: .github/workflows/kernel-a13-5.10.yml
================================================
name: Android 13 5.10
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_call: # This allows this workflow to be called from another workflow
inputs:
make_release:
required: true
type: boolean
default: true
kernelsu_variant:
required: true
type: string
default: Next
kernelsu_branch:
required: true
type: string
default: Stable
version:
required: false
type: string
default: ""
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
BBG:
description: '是否启用内核层面阻止对关键分区/设备节点的非法写入(LSM)?'
required: true
type: boolean
default: false
jobs:
build-kernel-a13-5-10-kernelsu-susfs:
strategy:
fail-fast: false
matrix:
include:
# - sub_level: "189"
# os_patch_level: "2023-11"
#- sub_level: "198"
# os_patch_level: "2024-01"
#- sub_level: "205"
# os_patch_level: "2024-03"
#- sub_level: "209"
# os_patch_level: "2024-05"
#- sub_level: "210"
# os_patch_level: "2024-06"
#- sub_level: "214"
# os_patch_level: "2024-07"
#- sub_level: "218"
# os_patch_level: "2024-08"
#- sub_level: "223"
# os_patch_level: "2024-11"
#- sub_level: "228"
# os_patch_level: "2025-01"
- sub_level: "X"
os_patch_level: "lts"
uses: ./.github/workflows/gki-kernel.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release || false }}
android_version: "android13"
kernel_version: "5.10"
sub_level: ${{ matrix.sub_level }}
os_patch_level: ${{ matrix.os_patch_level }}
kernelsu_variant: ${{ inputs.kernelsu_variant || 'Next' }}
kernelsu_branch: ${{ inputs.kernelsu_branch || 'Dev' }}
version: ${{ inputs.version || '' }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
supp_op: ${{ inputs.supp_op || false }}
BBG: ${{ inputs.BBG || false }}
================================================
FILE: .github/workflows/kernel-a13-5.15.yml
================================================
name: Android 13 5.15
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_call: # This allows this workflow to be called from another workflow
inputs:
make_release:
required: true
type: boolean
default: true
kernelsu_variant:
required: true
type: string
default: Next
kernelsu_branch:
required: true
type: string
default: Stable
version:
required: false
type: string
default: ""
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
BBG:
description: '是否启用内核层面阻止对关键分区/设备节点的非法写入(LSM)?'
required: true
type: boolean
default: false
jobs:
build-kernel-a13-5-15-kernelsu-susfs:
strategy:
fail-fast: false
matrix:
include:
# 从谷歌提交找到补丁,修复94与104的兼容性问题
- sub_level: "74"
os_patch_level: "2023-01"
#- sub_level: "94"
# os_patch_level: "2023-05"
#- sub_level: "104"
# os_patch_level: "2023-07"
- sub_level: "123"
os_patch_level: "2023-11"
#- sub_level: "137"
# os_patch_level: "2024-01"
#- sub_level: "144"
# os_patch_level: "2024-03"
- sub_level: "148"
os_patch_level: "2024-05"
# - sub_level: "149"
# os_patch_level: "2024-07"
#- sub_level: "151"
# os_patch_level: "2024-08"
#- sub_level: "167"
# os_patch_level: "2024-11"
- sub_level: "170"
os_patch_level: "2025-01"
- sub_level: "178"
os_patch_level: "2025-03"
- sub_level: "180"
os_patch_level: "2025-05"
- sub_level: "189"
os_patch_level: "2025-09"
#- sub_level: "X"
# os_patch_level: "lts"
uses: ./.github/workflows/gki-kernel.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release || false }}
android_version: "android13"
kernel_version: "5.15"
sub_level: ${{ matrix.sub_level }}
os_patch_level: ${{ matrix.os_patch_level }}
kernelsu_variant: ${{ inputs.kernelsu_variant || 'Next' }}
kernelsu_branch: ${{ inputs.kernelsu_branch || 'Dev' }}
version: ${{ inputs.version || '' }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
supp_op: ${{ inputs.supp_op || false }}
BBG: ${{ inputs.BBG || false }}
================================================
FILE: .github/workflows/kernel-a14-5.15.yml
================================================
name: Android 14 5.15
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_call: # This allows this workflow to be called from another workflow
inputs:
make_release:
required: true
type: boolean
default: true
kernelsu_variant:
required: true
type: string
default: Next
kernelsu_branch:
required: true
type: string
default: Stable
version:
required: false
type: string
default: ""
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
BBG:
description: '是否启用内核层面阻止对关键分区/设备节点的非法写入(LSM)?'
required: true
type: boolean
default: false
jobs:
build-kernel-a14-5-15-kernelsu-susfs:
strategy:
fail-fast: false
matrix:
include:
#- sub_level: "131"
# os_patch_level: "2023-11"
#- sub_level: "137"
# os_patch_level: "2024-01"
#- sub_level: "144"
# os_patch_level: "2024-03"
#- sub_level: "148"
# os_patch_level: "2024-05"
#- sub_level: "153"
# os_patch_level: "2024-07"
#- sub_level: "158"
# os_patch_level: "2024-08"
#- sub_level: "167"
# os_patch_level: "2024-11"
#- sub_level: "170"
# os_patch_level: "2025-01"
#- sub_level: "178"
# os_patch_level: "2025-03"
#- sub_level: "180"
# os_patch_level: "2025-05"
- sub_level: "X"
os_patch_level: "lts"
uses: ./.github/workflows/gki-kernel.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release || false }}
android_version: "android14"
kernel_version: "5.15"
sub_level: ${{ matrix.sub_level }}
os_patch_level: ${{ matrix.os_patch_level }}
kernelsu_variant: ${{ inputs.kernelsu_variant || 'Next' }}
kernelsu_branch: ${{ inputs.kernelsu_branch || 'Dev' }}
version: ${{ inputs.version || '' }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
supp_op: ${{ inputs.supp_op || false }}
BBG: ${{ inputs.BBG || false }}
================================================
FILE: .github/workflows/kernel-a14-6.1.yml
================================================
name: Android 14 6.1
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_call: # This allows this workflow to be called from another workflow
inputs:
make_release:
required: true
type: boolean
default: true
kernelsu_variant:
required: true
type: string
default: Next
kernelsu_branch:
required: true
type: string
default: Stable
version:
required: false
type: string
default: ""
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: true
type: boolean
default: true
BBG:
description: '是否启用内核层面阻止对关键分区/设备节点的非法写入(LSM)?'
required: true
type: boolean
default: false
jobs:
build-kernel-a14-6-1-kernelsu-susfs:
strategy:
fail-fast: false
matrix:
include:
#- sub_level: "25"
# os_patch_level: "2023-10"
#- sub_level: "43"
# os_patch_level: "2023-11"
#- sub_level: "57"
# os_patch_level: "2024-01"
#- sub_level: "68"
# os_patch_level: "2024-03"
#- sub_level: "75"
# os_patch_level: "2024-05"
- sub_level: "78"
os_patch_level: "2024-06"
#- sub_level: "84"
# os_patch_level: "2024-07"
- sub_level: "90"
os_patch_level: "2024-08"
#- sub_level: "93"
# os_patch_level: "2024-09"
- sub_level: "99"
os_patch_level: "2024-10"
#- sub_level: "112"
# os_patch_level: "2024-11"
#- sub_level: "115"
# os_patch_level: "2024-12"
#- sub_level: "118"
# os_patch_level: "2025-01"
- sub_level: "124"
os_patch_level: "2025-02"
#- sub_level: "128"
# os_patch_level: "2025-03"
#- sub_level: "129"
# os_patch_level: "2025-04"
#- sub_level: "134"
# os_patch_level: "2025-05"
- sub_level: "145"
os_patch_level: "2025-09"
#- sub_level: "X"
# os_patch_level: "lts"
uses: ./.github/workflows/gki-kernel.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release || false }}
android_version: "android14"
kernel_version: "6.1"
sub_level: ${{ matrix.sub_level }}
os_patch_level: ${{ matrix.os_patch_level }}
kernelsu_variant: ${{ inputs.kernelsu_variant || 'Next' }}
kernelsu_branch: ${{ inputs.kernelsu_branch || 'Dev' }}
version: ${{ inputs.version || '' }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
supp_op: ${{ inputs.supp_op || false }}
BBG: ${{ inputs.BBG || false }}
================================================
FILE: .github/workflows/kernel-a15-6.6.yml
================================================
name: Android 15 6.6
permissions:
contents: write # Allow writing to repository contents (for pushing tags)
actions: write # Allows triggering actions
on:
workflow_call: # This allows this workflow to be called from another workflow
inputs:
make_release:
required: true
type: boolean
default: true
kernelsu_variant:
required: true
type: string
default: Next
kernelsu_branch:
required: true
type: string
default: Stable
version:
required: false
type: string
default: ""
use_zram:
description: '是否开启增加更多ZRAM算法?'
required: true
type: boolean
default: true
use_kpm:
description: '是否开启KPM功能?'
required: false
type: boolean
default: false
supp_op:
description: '是否开启一加8E处理器机型支持?(非该机型无须勾)'
required: false
type: boolean
default: false
BBG:
description: '是否启用内核层面阻止对关键分区/设备节点的非法写入(LSM)?'
required: true
type: boolean
default: false
jobs:
build-kernel-a15-6-6-kernelsu-susfs:
strategy:
fail-fast: false
matrix:
include:
#- sub_level: "30"
# os_patch_level: "2024-08"
# - sub_level: "46"
# os_patch_level: "2024-09"
- sub_level: "50"
os_patch_level: "2024-10"
#- sub_level: "56"
# os_patch_level: "2024-11"
#- sub_level: "57"
# os_patch_level: "2024-12"
#- sub_level: "58"
# os_patch_level: "2025-01"
- sub_level: "66"
os_patch_level: "2025-02"
#- sub_level: "77"
# os_patch_level: "2025-03"
#- sub_level: "82"
# os_patch_level: "2025-04"
#- sub_level: "87"
# os_patch_level: "2025-05"
- sub_level: "102"
os_patch_level: "2025-10"
#- sub_level: "X"
# os_patch_level: "lts"
uses: ./.github/workflows/gki-kernel.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release || false }}
android_version: "android15"
kernel_version: "6.6"
sub_level: ${{ matrix.sub_level }}
os_patch_level: ${{ matrix.os_patch_level }}
kernelsu_variant: ${{ inputs.kernelsu_variant || 'Next' }}
kernelsu_branch: ${{ inputs.kernelsu_branch || 'Dev' }}
version: ${{ inputs.version || '' }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
supp_op: ${{ inputs.supp_op }}
BBG: ${{ inputs.BBG || false }}
================================================
FILE: .github/workflows/test_release.yml
================================================
name: Test Release
permissions:
contents: write
actions: write
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
inputs:
make_release:
description: 'Do you want to create a release?'
required: true
type: boolean
default: true
kernels_to_build:
description: |
Comma-separated list of kernels to build/release, e.g.:
a12-5.10,a13-5.10,a13-5.15,a14-5.15,a14-6.1,a15-6.6
or "all" to build every kernel.
required: true
type: string
default: 'all'
kernelsu_variant:
description: "Select KernelSU"
required: true
type: choice
options:
- Official
- Next
- MKSU
- SukiSU
default: SukiSU
kernelsu_branch:
description: "Select KSU branch"
required: true
type: choice
options:
- Stable(标准)
- Dev(开发)
- Other(其他/指定)
default: Stable(标准)
version:
description: 'Custom version name (e.g., characters after 5.10.198 / leave blank to use default version number)'
required: false
type: string
use_zram:
description: 'Enable more ZRAM algorithms?'
required: true
type: boolean
default: true
use_kpm:
description: 'Enable KPM functionality?'
required: true
type: boolean
default: true
BBG:
description: "是否启用内核层面阻止对关键分区/设备节点的非法写入(LSM)?"
required: true
type: boolean
default: false
get_manager:
description: 'Get the latest KSU Manager at the same time?'
required: true
type: boolean
default: false
jobs:
get_manager:
if: ${{ inputs.get_manager }}
uses: ./.github/workflows/get-manager.yml
secrets: inherit
with:
kernelsu_variant: ${{ inputs.kernelsu_variant }}
build-kernel-a12-5-10:
if: contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a12-5.10')
uses: ./.github/workflows/kernel-a12-5.10.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release }}
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
BBG: ${{ inputs.BBG }}
build-kernel-a13-5-10:
if: contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a13-5.10')
uses: ./.github/workflows/kernel-a13-5.10.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release }}
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
BBG: ${{ inputs.BBG }}
build-kernel-a13-5-15:
if: contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a13-5.15')
uses: ./.github/workflows/kernel-a13-5.15.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release }}
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
BBG: ${{ inputs.BBG }}
build-kernel-a14-5-15:
if: contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a14-5.15')
uses: ./.github/workflows/kernel-a14-5.15.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release }}
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
BBG: ${{ inputs.BBG }}
build-kernel-a14-6-1:
if: contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a14-6.1')
uses: ./.github/workflows/kernel-a14-6.1.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release }}
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
BBG: ${{ inputs.BBG }}
build-kernel-a15-6-6:
if: contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a15-6.6')
uses: ./.github/workflows/kernel-a15-6.6.yml
secrets: inherit
with:
make_release: ${{ inputs.make_release }}
kernelsu_variant: ${{ inputs.kernelsu_variant }}
kernelsu_branch: ${{ inputs.kernelsu_branch }}
version: ${{ inputs.version }}
use_zram: ${{ inputs.use_zram }}
use_kpm: ${{ inputs.use_kpm }}
BBG: ${{ inputs.BBG }}
check-build-status:
runs-on: ubuntu-latest
needs:
- get_manager
- build-kernel-a12-5-10
- build-kernel-a13-5-10
- build-kernel-a13-5-15
- build-kernel-a14-5-15
- build-kernel-a14-6-1
- build-kernel-a15-6-6
if: always()
outputs:
should_release: ${{ steps.check.outputs.should_release }}
env:
SHOULD_RUN_A12_5_10: ${{ contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a12-5.10') }}
SHOULD_RUN_A13_5_10: ${{ contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a13-5.10') }}
SHOULD_RUN_A13_5_15: ${{ contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a13-5.15') }}
SHOULD_RUN_A14_5_15: ${{ contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a14-5.15') }}
SHOULD_RUN_A14_6_1: ${{ contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a14-6.1') }}
SHOULD_RUN_A15_6_6: ${{ contains(github.event.inputs.kernels_to_build, 'all') || contains(github.event.inputs.kernels_to_build, 'a15-6.6') }}
RESULT_GET_MANAGER: ${{ needs.get_manager.result }}
RESULT_A12_5_10: ${{ needs.build-kernel-a12-5-10.result }}
RESULT_A13_5_10: ${{ needs.build-kernel-a13-5-10.result }}
RESULT_A13_5_15: ${{ needs.build-kernel-a13-5-15.result }}
RESULT_A14_5_15: ${{ needs.build-kernel-a14-5-15.result }}
RESULT_A14_6_1: ${{ needs.build-kernel-a14-6-1.result }}
RESULT_A15_6_6: ${{ needs.build-kernel-a15-6-6.result }}
steps:
- name: Determine if release should proceed
id: check
run: |
SHOULD_PROCEED="true"
ERROR_MESSAGE=""
echo "--- Checking Job Statuses ---"
echo "get_manager result: $RESULT_GET_MANAGER"
# 1. Check get_manager job only if it was supposed to run
if [[ "${{ inputs.get_manager }}" == "true" ]]; then
if [[ "$RESULT_GET_MANAGER" != "success" ]]; then
SHOULD_PROCEED="false"
ERROR_MESSAGE+="get_manager job did not succeed (result: $RESULT_GET_MANAGER). "
fi
fi
# Function to check a kernel job
check_kernel_job() {
local kernel_id=$1
local should_run_flag=$2
local actual_result=$3
echo "Checking kernel $kernel_id (Should Run: $should_run_flag, Actual Result: $actual_result)..."
if [[ "$should_run_flag" == "true" ]]; then
if [[ "$actual_result" != "success" ]]; then
SHOULD_PROCEED="false"
ERROR_MESSAGE+="Job for $kernel_id was expected to run but did not succeed (result: $actual_result). "
fi
else
if [[ "$actual_result" == "failure" ]]; then
SHOULD_PROCEED="false"
ERROR_MESSAGE+="Job for $kernel_id was NOT expected to run but failed (result: $actual_result). This indicates a problem. "
fi
fi
}
check_kernel_job "a12-5.10" "$SHOULD_RUN_A12_5_10" "$RESULT_A12_5_10"
check_kernel_job "a13-5.10" "$SHOULD_RUN_A13_5_10" "$RESULT_A13_5_10"
check_kernel_job "a13-5.15" "$SHOULD_RUN_A13_5_15" "$RESULT_A13_5_15"
check_kernel_job "a14-5.15" "$SHOULD_RUN_A14_5_15" "$RESULT_A14_5_15"
check_kernel_job "a14-6.1" "$SHOULD_RUN_A14_6_1" "$RESULT_A14_6_1"
check_kernel_job "a15-6.6" "$SHOULD_RUN_A15_6_6" "$RESULT_A15_6_6"
echo "Final decision - SHOULD_PROCEED: $SHOULD_PROCEED"
echo "Accumulated Errors: $ERROR_MESSAGE"
echo "should_release=$SHOULD_PROCEED" >> "$GITHUB_OUTPUT"
if [[ "$SHOULD_PROCEED" == "false" ]]; then
echo "::error::Release blocked due to issues: $ERROR_MESSAGE"
exit 1
fi
trigger-release:
runs-on: ubuntu-latest
permissions:
contents: write
needs:
- check-build-status
- get_manager
if: always()
env:
RELEASE_NAME: "GKI Kernel: ${{ inputs.kernelsu_variant == 'Next' && 'KernelSU-' || '' }} ${{ inputs.kernelsu_variant }}"
INITIAL_RELEASE_NOTES: |
This release includes **${{ inputs.kernelsu_variant == 'Next' && 'KernelSU' || '' }}${{ inputs.kernelsu_variant }}**
Features:
-> ${{ inputs.kernelsu_variant == 'Next' && 'KernelSU-' || '' }}${{ inputs.kernelsu_variant }}-${{ inputs.kernelsu_branch }}
-> SUSFS ඞ v2.1.0
-> Manual Syscall Hooks for better hiding
-> Magic Mount Support
-> Simple hiding for LineageOS detection
-> Futile hiding for jit-zygote-cache detection
-> Wireguard Support
-> BBR Support
${{ inputs.BBG && '-> BBG Support' || '' }}
-> BBG ${{ inputs.BBG && 'supported' || 'not supported' }}
${{ inputs.use_kpm && '-> KPM Support' || '' }}
-> **LZ4KD&ONEPLUS_LZ4K** ${{ inputs.use_zram && 'supported' || 'not supported' }}
<details>
<summary>Notes:</summary>
- -> In SUS SU Mode 2, it will show as disabled or incompatible, the reason is that non-kprobe hooks were used (when compiling the kernel), and non-kprobe hooks are no longer needed!
- -> In the latest version of susfs, flashing AK3 compressed package with Kernel Flasher will brick your device, try [Horizon Kernel Flasher](https://github.com/libxzr/HorizonKernelFlasher )!
</details>
Modules:
-> https://github.com/sidex15/ksu_module_susfs
steps:
- name: Conditional Release Check
id: release_check
if: ${{ inputs.make_release && needs.check-build-status.outputs.should_release == 'true' }}
run: echo "Release conditions met. Proceeding with release."
- name: Checkout code
if: ${{ steps.release_check.outcome == 'success' }}
uses: actions/checkout@v4
- name: Install GitHub CLI
if: ${{ steps.release_check.outcome == 'success' }}
run: |
type -p gh >/dev/null || {
sudo apt update
sudo apt install -y gh
}
- name: Generate and Create New Tag (Atomic)
if: ${{ steps.release_check.outcome == 'success' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -e
BASE_VERSION="v2.1.0"
# Fetch all existing tags using git ls-remote
EXISTING_TAGS=$(git ls-remote --tags https://github.com/${{ github.repository }}.git | awk '{print $2}' | sed 's/refs\/tags\///' || true)
# Find highest revision number for this base version
MAX_REVISION=0
while IFS= read -r tag; do
if [[ "$tag" =~ ^$BASE_VERSION-r([0-9]+)$ ]]; then
revision="${BASH_REMATCH[1]}"
if (( revision > MAX_REVISION )); then
MAX_REVISION=$revision
fi
fi
done <<< "$EXISTING_TAGS"
# Generate new revision number and tag
NEW_REVISION=$((MAX_REVISION + 1))
NEW_TAG="$BASE_VERSION-r$NEW_REVISION"
echo "New tag generated: $NEW_TAG"
echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV
# Optional: Check if tag already exists in remote
if git ls-remote --exit-code --tags origin "$NEW_TAG" > /dev/null 2>&1; then
echo "::error::Tag '$NEW_TAG' already exists in remote repository. Aborting."
exit 1
fi
# Configure Git
git config --global user.name "GitHub Actions"
git config --global user.email "actions@github.com"
# Create and push new tag
git tag -a "$NEW_TAG" -m "Release $NEW_TAG"
git push origin "$NEW_TAG"
echo "Tag $NEW_TAG created and pushed successfully"
- name: Set KSU Version and Release Name
if: ${{ steps.release_check.outcome == 'success' }}
run: |
# Use temporary directories to avoid conflicts
if [ "${{ inputs.kernelsu_variant }}" = "Next" ]; then
echo "Processing Next variant"
git clone https://github.com/KernelSU-Next/KernelSU-Next.git ksu-next-tmp
cd ksu-next-tmp
KSU_GIT_VERSION=$(git rev-list --count HEAD)
KSU_VERSION=$((10000 + KSU_GIT_VERSION + 200))
echo "Next version: $KSU_VERSION"
cd ..
rm -rf ksu-next-tmp
echo "RELEASE_NAME=\"GKI Kernel: KernelSU-Next ($KSU_VERSION) & SUSFS v2.1.0\"" >> $GITHUB_ENV
elif [ "${{ inputs.kernelsu_variant }}" = "SukiSU" ]; then
echo "Processing SukiSU variant"
git clone https://github.com/SukiSU-Ultra/SukiSU-Ultra.git suki-tmp
cd suki-tmp
KSU_GIT_VERSION=$(git rev-list --count HEAD)
KSU_VERSION=$((4 * 10000 + KSU_GIT_VERSION - 2815))
echo "SukiSU version: $KSU_VERSION"
cd ..
rm -rf suki-tmp
echo "RELEASE_NAME=\"GKI Kernel: SukiSU ($KSU_VERSION) & SUSFS v2.1.0\"" >> $GITHUB_ENV
else
echo "Using default naming for variant: ${{ inputs.kernelsu_variant }}"
echo "RELEASE_NAME=\"GKI Kernel: ${{ inputs.kernelsu_variant }} & SUSFS v2.1.0\"" >> $GITHUB_ENV
fi
- name: Fetch KSU and SUSFS Commit Info
id: build_notes
if: ${{ steps.release_check.outcome == 'success' }}
run: |
# Handle 'Other' branch selection
if [[ "${{ inputs.kernelsu_branch }}" == "Other(其他/指定)" ]]; then
echo "Using custom branch selection"
if [[ "${{ inputs.kernelsu_variant }}" == "Official" ]]; then
KSU_BRANCH="main"
elif [[ "${{ inputs.kernelsu_variant }}" == "Next" ]]; then
KSU_BRANCH="next"
else
KSU_BRANCH="main" # Default for MKSU/SukiSU
fi
elif [[ "${{ inputs.kernelsu_branch }}" == "Dev(开发)" || "${{ inputs.kernelsu_variant }}" == "MKSU" || "${{ inputs.kernelsu_variant }}" == "SukiSU" ]]; then
if [[ "${{ inputs.kernelsu_variant }}" == "Official" || "${{ inputs.kernelsu_variant }}" == "MKSU" || "${{ inputs.kernelsu_variant }}" == "SukiSU" ]]; then
KSU_BRANCH="main"
elif [[ "${{ inputs.kernelsu_variant }}" == "Next" ]]; then
KSU_BRANCH="next"
fi
elif [[ "${{ inputs.kernelsu_branch }}" == "Stable(标准)" && "${{ inputs.kernelsu_variant }}" != "MKSU" ]]; then
KSU_REPO_URL=""
if [ "${{ inputs.kernelsu_variant }}" == "Official" ]; then
KSU_REPO_URL="https://github.com/tiann/KernelSU.git"
elif [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
KSU_REPO_URL="https://github.com/KernelSU-Next/KernelSU-Next.git"
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
KSU_REPO_URL="https://github.com/SukiSU-Ultra/SukiSU-Ultra.git"
fi
if [ -n "$KSU_REPO_URL" ]; then
TAG=$(git ls-remote --tags --sort=-v:refname "$KSU_REPO_URL" | grep -o 'refs/tags/.*' | cut -d'/' -f3 | head -n1)
KSU_BRANCH="${TAG:-UNKNOWN_TAG}"
else
KSU_BRANCH="main"
fi
fi
echo "KSU_BRANCH=$KSU_BRANCH" >> $GITHUB_ENV
KSU_REPO_URL=""
KSU_REPO_URL2=""
if [ "${{ inputs.kernelsu_variant }}" == "Official" ]; then
KSU_REPO_URL="https://github.com/tiann/KernelSU.git"
KSU_REPO_URL2="tiann/KernelSU"
elif [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
KSU_REPO_URL="https://github.com/KernelSU-Next/KernelSU-Next.git"
KSU_REPO_URL2="KernelSU-Next/KernelSU-Next"
elif [ "${{ inputs.kernelsu_variant }}" == "MKSU" ]; then
KSU_REPO_URL="https://github.com/5ec1cff/KernelSU.git"
KSU_REPO_URL2="5ec1cff/KernelSU"
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
KSU_REPO_URL="https://github.com/SukiSU-Ultra/SukiSU-Ultra.git"
KSU_REPO_URL2="SukiSU-Ultra/SukiSU-Ultra"
else
echo "Warning: Unknown KernelSU variant selected. Defaulting to Official for URL generation."
KSU_REPO_URL="https://github.com/tiann/KernelSU.git"
KSU_REPO_URL2="tiann/KernelSU"
fi
KSU_REF=""
KSU_URL=""
if [[ "${{ inputs.kernelsu_branch }}" == "Stable(标准)" && "${{ inputs.kernelsu_variant }}" != "MKSU" ]]; then
TAG=$(git ls-remote --tags --sort=-v:refname "$KSU_REPO_URL" | grep -o 'refs/tags/.*' | cut -d'/' -f3 | head -n1)
KSU_REF="${TAG:-UNKNOWN_TAG}"
KSU_URL="https://github.com/$KSU_REPO_URL2/releases/tag/$KSU_REF"
elif [[ -n "$KSU_BRANCH" ]]; then
COMMIT_HASH=$(git ls-remote "$KSU_REPO_URL" "refs/heads/$KSU_BRANCH" | awk '{ print $1 }')
KSU_REF="${COMMIT_HASH:-UNKNOWN_COMMIT}"
KSU_URL="https://github.com/$KSU_REPO_URL2/commit/$KSU_REF"
else
echo "Error: KSU branch could not be determined. KSU commit information will be incomplete." >&2
fi
FINAL_RELEASE_NOTES="${{ env.INITIAL_RELEASE_NOTES }}"
if [ "${{ inputs.kernelsu_variant }}" == "Official" ]; then
FINAL_RELEASE_NOTES+="\nOfficial Manager:\n-> https://github.com/tiann/KernelSU"
elif [ "${{ inputs.kernelsu_variant }}" == "Next" ]; then
FINAL_RELEASE_NOTES+="\nNext Manager:\n-> https://github.com/KernelSU-Next/KernelSU-Next"
elif [ "${{ inputs.kernelsu_variant }}" == "MKSU" ]; then
FINAL_RELEASE_NOTES+="\nMKSU Manager:\n-> https://github.com/5ec1cff/KernelSU"
elif [ "${{ inputs.kernelsu_variant }}" == "SukiSU" ]; then
FINAL_RELEASE_NOTES+="\nSukiSU Manager:\n-> https://github.com/SukiSU-Ultra/SukiSU-Ultra"
fi
FINAL_RELEASE_NOTES+="\n\nLTO: thin"
FINAL_RELEASE_NOTES+="\n\n<details>"
FINAL_RELEASE_NOTES+="\n<summary>Commit Information</summary>"
FINAL_RELEASE_NOTES+="\n\nCommit hashes and links (the following commits refer to the progress of KSU or SUSFS at the time of this compilation):"
FINAL_RELEASE_NOTES+="\n- **KernelSU is ${{ inputs.kernelsu_variant }}-${KSU_BRANCH}** (Commit): [${KSU_REF}](${KSU_URL})"
FINAL_RELEASE_NOTES+="\n- **SUSFS4KSU** (Commit):"
GITLAB_OWNER="simonpunk"
GITLAB_REPO="susfs4ksu"
declare -A BRANCH_MAP=(
["a12-5.10"]="gki-android12-5.10"
["a13-5.10"]="gki-android13-5.10"
["a13-5.15"]="gki-android13-5.15"
["a14-5.15"]="gki-android14-5.15"
["a14-6.1"]="gki-android14-6.1"
["a15-6.6"]="gki-android15-6.6"
)
declare -a KERNELS_TO_FETCH_SUSFS
if [[ "${{ inputs.kernels_to_build }}" == "all" ]]; then
for key in "${!BRANCH_MAP[@]}"; do
KERNELS_TO_FETCH_SUSFS+=("$key")
done
else
IFS=',' read -r -a INPUT_KERNELS <<< "${{ inputs.kernels_to_build }}"
for kernel_input in "${INPUT_KERNELS[@]}"; do
case "$kernel_input" in
"a12")
KERNELS_TO_FETCH_SUSFS+=("a12-5.10")
;;
"a13")
KERNELS_TO_FETCH_SUSFS+=("a13-5.10" "a13-5.15")
;;
"a14")
KERNELS_TO_FETCH_SUSFS+=("a14-5.15" "a14-6.1")
;;
"a15")
KERNELS_TO_FETCH_SUSFS+=("a15-6.6")
;;
*)
if [[ -n "${BRANCH_MAP[$kernel_input]}" ]]; then
KERNELS_TO_FETCH_SUSFS+=("$kernel_input")
else
echo "Warning: Input kernel '$kernel_input' does not have a defined SUSFS branch mapping. Skipping." >&2
fi
;;
esac
done
fi
mapfile -t SORTED_KERNELS < <(printf '%s\n' "${KERNELS_TO_FETCH_SUSFS[@]}" | sort)
KERNELS_TO_FETCH_SUSFS=("${SORTED_KERNELS[@]}")
for kernel_id in "${KERNELS_TO_FETCH_SUSFS[@]}"; do
susfs_branch_name="${BRANCH_MAP[$kernel_id]}"
if [[ -n "$susfs_branch_name" ]]; then
SUSFS_COMMIT_HASH=$(git ls-remote "https://gitlab.com/$GITLAB_OWNER/$GITLAB_REPO.git" "refs/heads/$susfs_branch_name" | awk '{ print $1 }')
SUSFS_COMMIT_HASH="${SUSFS_COMMIT_HASH:-UNKNOWN_COMMIT}"
SUSFS_COMMIT_URL="https://gitlab.com/$GITLAB_OWNER/$GITLAB_REPO/-/commit/$SUSFS_COMMIT_HASH"
FINAL_RELEASE_NOTES+="\n - ${kernel_id}: [${SUSFS_COMMIT_HASH}](${SUSFS_COMMIT_URL})"
else
echo "Warning: SUSFS branch name not found for kernel ID: $kernel_id. Cannot fetch commit info." >&2
fi
done
FINAL_RELEASE_NOTES+="\n\n</details>"
echo "FULL_RELEASE_NOTES<<EOF" >> $GITHUB_ENV
echo -e "$FINAL_RELEASE_NOTES" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Download Artifacts
if: ${{ steps.release_check.outcome == 'success' }}
uses: actions/download-artifact@v4
with:
path: release-artifacts-${{ github.run_id }}
- name: Prepare Artifacts for Upload
if: ${{ steps.release_check.outcome == 'success' }}
run: |
# Create a new directory for release assets
mkdir -p release-assets
# Find and copy all artifacts to a flat directory structure
find ./release-artifacts-${{ github.run_id }} -type f -exec cp -v {} ./release-assets \;
# Generate checksums
cd release-assets
sha256sum * > SHA256SUMS.txt
cd ..
echo "Artifacts prepared for upload:"
ls -lh ./release-assets
- name: Create GitHub Release and Upload Assets
if: ${{ steps.release_check.outcome == 'success' }}
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.NEW_TAG }}
prerelease: true
name: ${{ env.RELEASE_NAME }}
body: ${{ env.FULL_RELEASE_NOTES }}
files: ./release-assets/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Send Telegram Message
if: ${{ steps.release_check.outcome == 'success' }}
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
TELEGRAM_MESSAGE_THREAD_ID: ${{ secrets.TELEGRAM_MESSAGE_THREAD_ID }}
run: |
curl -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "message_thread_id=$TELEGRAM_MESSAGE_THREAD_ID" \
-d "text=Latest release:
https://github.com/ShirkNeko/GKI_KernelSU_SUSFS/releases/tag/${{ env.NEW_TAG }}
${{ env.FULL_RELEASE_NOTES }}"
================================================
FILE: Original.md
================================================
# Wild Kernels for Android
## Your warranty is no longer valid!
I am **not responsible** for bricked devices, damaged hardware, or any issues that arise from using this kernel.
**Please** do thorough research and fully understand the features included in this kernel before flashing it!
By flashing this kernel, **YOU** are choosing to make these modifications. If something goes wrong, **do not blame me**!
---
### Proceed at your own risk!
---
# Kernels:
[GKI](https://github.com/WildPlusKernel/GKI_KernelSU_SUSFS)
[Sultan](https://github.com/WildPlusKernel/Sultan_KernelSU_SUSFS)
[OnePlus](https://github.com/WildPlusKernel/OnePlus_KernelSU_SUSFS)
[Legacy Pixels](https://github.com/WildPlusKernel/Pixel_KernelSU_SUSFS)
---
# Other Links:
[Kernel Patches](https://github.com/WildPlusKernel/kernel_patches)
[Old Build Scripts](https://github.com/TheWildJames/kernel_build_scripts)
[Kernel Flasher](https://github.com/capntrips/KernelFlasher/releases)
---
# Installation instructions:
Follow the steps for GKI:
[Installation](https://kernelsu.org/guide/installation.html)
To get boot.img format:
[Telegram Bot](https://t.me/wildpluskernel/22076)
[Get My Kernel Format](https://github.com/TheWildJames/Get_My_Kernel_Format)
---
# Features
- **KernelSU**: KernelSU is a root solution for Android GKI devices, it works in kernel mode and grants root permission to userspace applications directly in kernel space.
- **SUSFS**: An addon root hiding kernel patches and userspace module for KernelSU.
---
# Credits
- **KernelSU**: Developed by [tiann](https://github.com/tiann).
- **KernelSU-Next**: Developed by [rifsxd](https://github.com/rifsxd/KernelSU-Next).
- **Magic-KSU**: Developed by [5ec1cff](https://github.com/5ec1cff/KernelSU).
- **SUSFS**: Developed by [simonpunk](https://gitlab.com/simonpunk/susfs4ksu.git).
- **SUSFS Module**: Developed by [sidex15](https://github.com/sidex15).
- **Sultan Kernels**: Developed by [kerneltoast](https://github.com/kerneltoast).
Special thanks to the open-source community for their contributions!
---
# Support
If you encounter any issues or need help, feel free to open an issue in this repository or reach out to me.
---
# Disclaimer
Flashing this kernel will void your warranty, and there is always a risk of bricking your device. Please make sure to back up your data and ensure you understand the risks before proceeding.
**Proceed at your own risk!**
---
# To-DO
- [X] Get Stoned & Build kernels!
---
### If you need your kernel version added please let me know and I will build it!
[Telegram](https://t.me/TheWildJames) NO DMS PLEASE! Ask in chat below!
[Telegram Group](https://t.me/wildpluskernel)
# Special thanks to the following people for their contributions!
This helps me alot! <3
[simonpunk](https://gitlab.com/simonpunk/susfs4ksu.git) - Created SUSFS!
[sidex15](https://github.com/sidex15) - Created module!
[backslashxx](https://github.com/backslashxx) - Helped with patches!
[Teemo](https://github.com/liqideqq) - Helped with patches!
[幕落](https://github.com/MuLuo688) - Donation!
If you have contributed and are not here please remind me!
================================================
FILE: README.md
================================================
### 这是一个自动构建GKI内核的仓库
> 非GKI可以尝试[SukiSU云盘](https://alist.shirkneko.top)的资源,不支持一加ColorOS14、15
>
> 第一次使用务必**详细阅读**以下内容,不要因为懒惰而占用他人时间!
>
> 最近更新:1.一加8ELITE处理器可使用6.6内核(未测试)、2.修复这些GKI版本编译报错——[5.10.(66、81、101)、5.15.(74、94、104)]
### 下载
可以[在此](https://github.com/zzh20188/GKI_KernelSU_SUSFS/releases)下载您的资源
1. 关于Anykernel3.zip,下载即用!
- 然后使用刷入软件,例如[HorizonKernelFlasher](https://github.com/libxzr/HorizonKernelFlasher/releases)进行刷写内核
2. 关于boot.img,下载与你内核格式相匹配的(无压缩、gz、lz4),[参考](https://kernelsu.org/zh_CN/guide/installation.html#install-by-kernelsu-boot-image) **找到合适的 boot.img** 一节
- 使用[FASTBOOT](https://magiskcn.com/)刷入,或者使用刷写软件刷写到ROOT所在插槽的boot分区(例如爱玩机、Kernelflasher)
### 支持
| 功能 | 说明 |
| --- | --- |
| [KernelSU](https://kernelsu.org/zh_CN/) | 包括**原版、MKSU、SUKISU、NEXT** |
| [SUSFS4](https://gitlab.com/simonpunk/susfs4ksu) | 在内核层面辅助KSU隐藏的功能补丁 |
| [BBR](https://blog.thinkin.top/archives/ke-pu-bbrdao-di-shi-shi-me) | TCP拥塞控制算法,使网络更快? |
| [Wireguard](https://zh.wikipedia.org/wiki/WireGuard) | 参考左侧wiki链接 |
| [LZ4KD](https://github.com/ShirkNeko/SukiSU_patch/tree/main/other) | 听说是来自HUAWEI source的ZRAM算法,补丁由[云彩之枫](http://www.coolapk.com/u/24963680)移植 |
<details>
<summary>还支持这几种算法,可在scene的ZRAM切换</summary>
### LZ4K、LZ4HC、deflate、842、~~zstdn~~、lz4k_oplus
</details>
### KSU管理器
在编译完成后,你会看到类似 `Next-Manager(12600)`的文件,简单来说这就是与内核一同上传的***最新管理器***。

同样的,在[Release](https://github.com/zzh20188/GKI_KernelSU_SUSFS/releases)也同样包含***最新管理器***!

### 紧急救援指南
> [!IMPORTANT]
> **触发条件**
> 当设备因以下原因无法启动时需执行救援:
> - 刷入错误/不兼容的内核
> - 内核版本适配异常(如5.10.66刷233版本的内核)
1. 进入FASTBOOT模式
- 物理键组合:电源+音量- 或者 ADB命令: `adb reboot bootloader`
2. 执行刷写命令
```bash
$ fastboot flash boot <boot.img文件全称>
```
### 原版镜像获取途径
1. 从现有固件提取
- 卡刷包:解压后使用[payload-dumper工具](https://magiskcn.com/payload-dumper-go-boot.html)
- 线刷包:直接解压获取boot.img
2.外部资源获取
- 社区平台搜索:机型+原厂boot (如XDA/酷安)
- [移动端在线提取远程获取](https://magiskcn.com/payload-dumper-compose.html)
> [!TIP]
> ### 内核版本兼容性说明
>
> **1. 跨子版本刷机规则**
> 当手机GKI主版本为5.10.x时(如5.10.168),可刷写同主版本更高子版本的内核(如5.10.198)。
> 关于**X-lts**版本,以 `android12-5.10.X-lts-AnyKernel3.zip` 为例:
> - **X-lts** 表示长期支持版(子版本号最大,当前示例为5.10.236)
> - LTS随着GKI源码更新,编译版本号将持续递增(其他如198的版本,是永久固定的)
> - ⚠️ 注意:LTS虽为最新,**但**最新版≠最稳定(如6.6.x存在自动重启BUG)
>
> **2. 内核版本伪装方法**
> 在MT管理器终端执行:
> ```bash
> uname -r | sed 's/^[^-]*//'
> ```
> 获取后直接复制,将此版本号填入Action编译面板即可实现内核版本伪装。
>
> **3. 编译优化建议**
> 修改 [配置文件](.github/workflows/kernel-a12-5.10.yml)(如kernel-a12-5.10.yml):
> - ▶️ 删除/注释不需要的GKI版本配置(**加速编译**)
> - ➕ 添加指定GKI版本(参考[定制指南](https://www.coolapk.com/feed/62820671?shareKey=OGMxYmZmNTk0YzIxNjgxNzM1MzI~&shareUid=11253396&shareFrom=com.coolapk.market_15.2.2))
> - 📅 内核构建时间,参照[gki-kernel.yml](.github/workflows/gki-kernel.yml) 文件 **`第490行左右的注释`** 进行修改
### 更多内容
可以提及您的意见...我会尝试!
================================================
FILE: hmbird_patch.c
================================================
#include <linux/init.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/slab.h>
#include <linux/string.h>
static int __init hmbird_patch_init(void)
{
struct device_node *ver_np;
const char *type;
int ret;
ver_np = of_find_node_by_path("/soc/oplus,hmbird/version_type");
if (!ver_np)
{
pr_info("hmbird_patch: version_type node not found\n");
return 0;
}
ret = of_property_read_string(ver_np, "type", &type);
if (ret)
{
pr_info("hmbird_patch: type property not found\n");
of_node_put(ver_np);
return 0;
}
if (strcmp(type, "HMBIRD_OGKI"))
{
of_node_put(ver_np);
return 0;
}
struct property *prop = of_find_property(ver_np, "type", NULL);
if (prop)
{
struct property *new_prop = kmalloc(sizeof(*prop), GFP_KERNEL);
if (!new_prop)
{
pr_info("hmbird_patch: kmalloc for new_prop failed\n");
of_node_put(ver_np);
return 0;
}
memcpy(new_prop, prop, sizeof(*prop));
new_prop->value = kmalloc(strlen("HMBIRD_GKI") + 1, GFP_KERNEL);
if (!new_prop->value)
{
pr_info("hmbird_patch: kmalloc for new_prop->value failed\n");
kfree(new_prop);
of_node_put(ver_np);
return 0;
}
strcpy(new_prop->value, "HMBIRD_GKI");
new_prop->length = strlen("HMBIRD_GKI") + 1;
if (of_remove_property(ver_np, prop) != 0)
{
pr_info("hmbird_patch: of_remove_property failed\n");
return 0;
}
if (of_add_property(ver_np, new_prop) != 0)
{
pr_info("hmbird_patch: of_add_property failed\n");
return 0;
}
pr_info("hmbird_patch: success from HMBIRD_OGKI to HMBIRD_GKI\n");
}
else
{
pr_info("hmbird_patch: type property structure not found\n");
}
of_node_put(ver_np);
return 0;
}
early_initcall(hmbird_patch_init);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("reigadegr");
MODULE_DESCRIPTION("Forcefully convert HMBIRD_OGKI to HMBIRD_GKI.");
gitextract_gsh06kp2/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── feature_request.yml │ └── workflows/ │ ├── build-kernel-a12-5-10.yml │ ├── build-kernel-a13-5-10.yml │ ├── build-kernel-a13-5-15.yml │ ├── build-kernel-a14-5-15.yml │ ├── build-kernel-a14-6-1.yml │ ├── build-kernel-a15-6-6.yml │ ├── get-manager.yml │ ├── gki-kernel.yml │ ├── kernel-a12-5.10.yml │ ├── kernel-a13-5.10.yml │ ├── kernel-a13-5.15.yml │ ├── kernel-a14-5.15.yml │ ├── kernel-a14-6.1.yml │ ├── kernel-a15-6.6.yml │ └── test_release.yml ├── Original.md ├── README.md └── hmbird_patch.c
SYMBOL INDEX (1 symbols across 1 files) FILE: hmbird_patch.c function hmbird_patch_init (line 7) | static int __init hmbird_patch_init(void)
Condensed preview — 20 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (128K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 1413,
"preview": "name: Bug Report\ndescription: Create a bug report\nlabels: [Bug]\n\nbody:\n - type: textarea\n attributes:\n label:"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.yml",
"chars": 687,
"preview": "name: Feature Request\ndescription: Create a feature request\nlabels: [Feature Request]\n\nbody:\n - type: textarea\n attr"
},
{
"path": ".github/workflows/build-kernel-a12-5-10.yml",
"chars": 16076,
"preview": "name: 编译内核a12-5-10\n\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions:"
},
{
"path": ".github/workflows/build-kernel-a13-5-10.yml",
"chars": 1664,
"preview": "name: 编译内核a13-5-10\n\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions:"
},
{
"path": ".github/workflows/build-kernel-a13-5-15.yml",
"chars": 1794,
"preview": "name: 编译内核a13-5-15\n\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions:"
},
{
"path": ".github/workflows/build-kernel-a14-5-15.yml",
"chars": 1664,
"preview": "name: 编译内核a14-5-15\n\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions:"
},
{
"path": ".github/workflows/build-kernel-a14-6-1.yml",
"chars": 1659,
"preview": "name: 编译内核a14-6-1\n\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions: "
},
{
"path": ".github/workflows/build-kernel-a15-6-6.yml",
"chars": 1844,
"preview": "name: 编译内核a15-6-6\n\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions: "
},
{
"path": ".github/workflows/get-manager.yml",
"chars": 3531,
"preview": "name: GetManager\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions: re"
},
{
"path": ".github/workflows/gki-kernel.yml",
"chars": 36723,
"preview": "name: GKI Kernel Build\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actio"
},
{
"path": ".github/workflows/kernel-a12-5.10.yml",
"chars": 3186,
"preview": "name: Android 12 5.10\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n action"
},
{
"path": ".github/workflows/kernel-a13-5.10.yml",
"chars": 2398,
"preview": "name: Android 13 5.10\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n action"
},
{
"path": ".github/workflows/kernel-a13-5.15.yml",
"chars": 2764,
"preview": "name: Android 13 5.15\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n action"
},
{
"path": ".github/workflows/kernel-a14-5.15.yml",
"chars": 2463,
"preview": "name: Android 14 5.15\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n action"
},
{
"path": ".github/workflows/kernel-a14-6.1.yml",
"chars": 2992,
"preview": "name: Android 14 6.1\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions"
},
{
"path": ".github/workflows/kernel-a15-6.6.yml",
"chars": 2642,
"preview": "name: Android 15 6.6\npermissions:\n contents: write # Allow writing to repository contents (for pushing tags)\n actions"
},
{
"path": ".github/workflows/test_release.yml",
"chars": 24797,
"preview": "name: Test Release\n\npermissions:\n contents: write\n actions: write\n\nconcurrency:\n group: release-${{ github.ref }}\n c"
},
{
"path": "Original.md",
"chars": 3179,
"preview": "# Wild Kernels for Android\n\n## Your warranty is no longer valid!\n\nI am **not responsible** for bricked devices, damaged "
},
{
"path": "README.md",
"chars": 2810,
"preview": "### 这是一个自动构建GKI内核的仓库\n\n> 非GKI可以尝试[SukiSU云盘](https://alist.shirkneko.top)的资源,不支持一加ColorOS14、15\n>\n> 第一次使用务必**详细阅读**以下内容,不要因"
},
{
"path": "hmbird_patch.c",
"chars": 2143,
"preview": "#include <linux/init.h>\n#include <linux/module.h>\n#include <linux/of.h>\n#include <linux/slab.h>\n#include <linux/string.h"
}
]
About this extraction
This page contains the full source code of the ShirkNeko/GKI_KernelSU_SUSFS GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 20 files (113.7 KB), approximately 33.5k tokens, and a symbol index with 1 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.