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<> $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<> $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<> $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<> $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 ' ./fs/proc/base.c; then echo "未找到 #include ,添加缺失的头文件" sed -i '/#include /a #include ' ./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 ' ./fs/proc/base.c; then echo "未找到 #include ,添加缺失的头文件" sed -i '/#include /a #include ' ./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' }}
Notes: - -> 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 )!
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
" FINAL_RELEASE_NOTES+="\nCommit Information" 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
" echo "FULL_RELEASE_NOTES<> $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)移植 |
还支持这几种算法,可在scene的ZRAM切换 ### LZ4K、LZ4HC、deflate、842、~~zstdn~~、lz4k_oplus
### KSU管理器 在编译完成后,你会看到类似 `Next-Manager(12600)`的文件,简单来说这就是与内核一同上传的***最新管理器***。 ![例子](./assets/get_manager.gif) 同样的,在[Release](https://github.com/zzh20188/GKI_KernelSU_SUSFS/releases)也同样包含***最新管理器***! ![release](./assets/release_manager.gif) ### 紧急救援指南 > [!IMPORTANT] > **触发条件** > 当设备因以下原因无法启动时需执行救援: > - 刷入错误/不兼容的内核 > - 内核版本适配异常(如5.10.66刷233版本的内核) 1. 进入FASTBOOT模式 - 物理键组合:电源+音量- 或者 ADB命令: `adb reboot bootloader` 2. 执行刷写命令 ```bash $ fastboot flash boot ``` ### 原版镜像获取途径 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 #include #include #include #include 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.");