Build K40 Kernel #97
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build K40 Kernel | |
on: | |
workflow_dispatch: | |
inputs: | |
ksu: | |
description: '添加KSU支持' | |
required: false | |
default: 'true' | |
config_path: | |
description: '内核配置文件路径(如果不需要KSU则忽略)/一般默认即可' | |
required: false | |
type: string | |
default: 'arch/arm64/configs/' | |
kernel_tag: | |
description: '内核代码分支/Tag' | |
required: false | |
type: string | |
default: 'master' | |
config_name: | |
description: '内核编译配置文件名' | |
required: false | |
type: string | |
default: 'alioth_hylab_defconfig' | |
git_url: | |
description: '内核仓库地址' | |
required: false | |
type: string | |
default: 'https://github.com/zfdx123/kernel_xiaomi_alioth.git' | |
clang_url: | |
description: '编译器下载地址' | |
required: false | |
type: string | |
default: 'https://github.com/XSans0/WeebX-Clang/releases/download/WeebX-Clang-19.0.0git-release/WeebX-Clang-19.0.0git.tar.gz' | |
jobs: | |
build_kernel: | |
name: Build K40 Kernel | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@main | |
with: | |
ref: master | |
fetch-depth: 0 | |
- name: Initialization environment | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
sudo -E apt-get -qq update | |
# sudo -E apt-get -qq install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1-s1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync | |
sudo -E apt-get -qq install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32readline-dev lib32z1-dev liblz4-tool libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev libc6-dev-i386 libncurses6 libncursesw6 lib32ncurses-dev lib32ncurses6 lib32ncursesw6 libncurses5-dev x11proto-core-dev libx11-dev libgl1-mesa-dev unzip fontconfig make python2 | |
sudo -E apt-get -qq install libfuse-dev | |
sudo -E apt-get -qq autoremove --purge | |
sudo -E apt-get -qq clean | |
sudo timedatectl set-timezone Asia/Shanghai | |
- name: Init Config | |
id: init_config | |
run: | | |
processed_name=$(echo ${{ inputs.config_name }} | awk -F'/' '{ if (NF > 1) print $NF; else print $0 }') | |
echo "processed_name=$(echo $processed_name)" >> $GITHUB_OUTPUT | |
- name: Install Clang | |
run: | | |
mkdir clang | |
wget ${{ inputs.clang_url }} | |
tar -C clang/ -zxvf *.tar.gz | |
- name: Clone Kernel | |
run: | | |
git clone --depth=1 -b ${{ inputs.kernel_tag }} ${{ inputs.git_url }} kernel-source | |
- name: Support KernelSU | |
if: github.event.inputs.ksu == 'true' | |
run: | | |
git clone https://github.com/tiann/KernelSU kernel-source/KernelSU | |
cd kernel-source | |
echo "CONFIG_KPROBES=y" >> ${{ inputs.config_path }}${{ inputs.config_name }} | |
echo "CONFIG_HAVE_KPROBES=y" >> ${{ inputs.config_path }}${{ inputs.config_name }} | |
echo "CONFIG_KPROBE_EVENTS=y" >> ${{ inputs.config_path }}${{ inputs.config_name }} | |
git config --global user.email "robot@example.com" | |
git config --global user.name "robot" | |
git add ${{ inputs.config_path }}${{ inputs.config_name }} | |
git commit -m "KUS" | |
./KernelSU/kernel/setup.sh main | |
- name: Make | |
run: | | |
export ClangHome=$(pwd)/clang | |
export PATH=${ClangHome}/bin:${PATH} | |
cd kernel-source | |
make LLVM=1 LLVM_IAS=1 O=out ARCH=arm64 SUBARCH=arm64 CC=clang LD=ld.lld ${{ inputs.config_name }} | |
make -j$(nproc) LLVM=1 LLVM_IAS=1 O=out ARCH=arm64 SUBARCH=arm64 CC=clang LD=ld.lld CLANG_TRIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-gnu- CROSS_COMPILE_ARM32=arm-linux-gnueabi- KBUILD_BUILD_USER=hylab KBUILD_BUILD_HOST=localhost | |
- name: Patch Boot | |
run: | | |
chmod +x ./magiskboot | |
unzip boot.zip | |
cp -rf kernel-source/out/arch/arm64/boot/* . | |
./magiskboot unpack boot.img | |
rm -rf kernel | |
cp -rf kernel-source/out/arch/arm64/boot/Image ./kernel | |
./magiskboot repack boot.img | |
rm -rf ramdisk.cpio boot.img | |
- name: Zip | |
run: | |
zip -r -9 -o Kernel.zip Image.gz-dtb Image.gz kernel new-boot.img | |
- name: Kernel REL | |
uses: actions/upload-artifact@main | |
with: | |
name: ${{ steps.init_config.outputs.processed_name }} KernelSU | |
path: ./Kernel.zip |