|
1 | | -name: Build Lavender 4.4 Kernel (BPF+Custom Name) |
| 1 | +name: Build Lavender Kernel (AK3 Pack) |
2 | 2 | on: |
3 | 3 | push: |
4 | | - branches: [main] |
| 4 | + branches: [ main ] |
5 | 5 | workflow_dispatch: |
6 | 6 |
|
7 | 7 | jobs: |
8 | 8 | build_kernel: |
9 | 9 | runs-on: ubuntu-22.04 |
10 | | - timeout-minutes: 120 |
11 | 10 | steps: |
12 | | - - name: 1. 配置Git |
13 | | - run: git config --global core.compression 0 |
14 | | - |
15 | | - - name: 2. 浅克隆lavender内核源码(13分支) |
| 11 | + - name: 拉取内核源码 |
16 | 12 | uses: actions/checkout@v4 |
17 | 13 | with: |
18 | | - repository: projects-nexus/nexus_kernel_xiaomi_lavender |
19 | | - ref: 13 |
| 14 | + repository: jsdizkcks/android_kernel_xiaomi_sdm660.git |
20 | 15 | path: kernel |
21 | | - fetch-depth: 1 |
22 | | - |
23 | | - - name: 3. 浅克隆BPF补丁仓库 |
24 | | - uses: actions/checkout@v4 |
25 | | - with: |
26 | | - repository: AL1S69/kernel |
27 | | - ref: main |
28 | | - path: patch_repo |
29 | | - fetch-depth: 1 |
30 | | - |
31 | | - - name: 4. 安装编译依赖 |
32 | | - run: | |
33 | | - sudo apt update && sudo apt upgrade -y |
34 | | - sudo apt install -y gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi make git wget zip unzip patch bc bison flex libssl-dev libelf-dev libncurses5-dev libncursesw5-dev crossbuild-essential-arm64 crossbuild-essential-armhf |
35 | | - sudo apt install -y gcc-10-aarch64-linux-gnu gcc-10-arm-linux-gnueabi --no-install-recommends |
36 | | - echo "✅ 编译依赖安装完成" |
| 16 | + submodules: recursive |
37 | 17 |
|
38 | | - - name: 5. 合并BPF补丁 |
| 18 | + - name: 安装编译依赖 |
39 | 19 | run: | |
40 | | - cd kernel |
41 | | - patch -p1 --ignore-whitespace < ../patch_repo/kernel_4.4.patch || echo "⚠️ 补丁部分冲突,继续编译" |
42 | | - echo "✅ BPF补丁合并完成" |
| 20 | + sudo apt update |
| 21 | + sudo apt install -y gcc-aarch64-linux-gnu make bc bison flex libssl-dev libelf-dev git python3 zip unzip |
43 | 22 |
|
44 | | - - name: 6. 加载lavender配置并开启BPF项+关闭32位VDSO |
| 23 | + - name: 配置内核(自定义名称+开启BPF) |
45 | 24 | run: | |
46 | 25 | cd kernel |
47 | | - make ARCH=arm64 lavender_defconfig |
48 | | - # 开启BPF配置 |
49 | | - scripts/config --enable CONFIG_CGROUP_BPF |
50 | | - scripts/config --enable CONFIG_BPF |
51 | | - scripts/config --enable CONFIG_BPF_SYSCALL |
52 | | - scripts/config --enable CONFIG_BPF_JIT_ALWAYS_ON |
53 | | - scripts/config --enable CONFIG_NETFILTER_XT_MATCH_BPF |
54 | | - scripts/config --enable CONFIG_NET_CLS_BPF |
55 | | - scripts/config --enable CONFIG_BPF_JIT |
56 | | - scripts/config --enable CONFIG_HAVE_EBPF_JIT |
57 | | - # 关闭32位兼容VDSO,避免CROSS_COMPILE_COMPAT报错 |
58 | | - scripts/config --disable CONFIG_COMPAT_VDSO |
59 | | - make ARCH=arm64 olddefconfig |
60 | | - echo "✅ BPF配置开启+32位VDSO关闭完成" |
61 | | -
|
62 | | - - name: 7. 修改内核名(zako~kernel) |
| 26 | + # 生成lavender默认配置 |
| 27 | + make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- lavender_defconfig |
| 28 | + # 开启CONFIG_BPF_JIT_ALWAYS_ON |
| 29 | + echo "CONFIG_BPF_JIT_ALWAYS_ON=y" >> .config |
| 30 | + make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- olddefconfig |
| 31 | + # 修改内核名为-zako~kernel |
| 32 | + sed -i 's/^LOCALVERSION=.*/LOCALVERSION=-zako~kernel/' Makefile |
| 33 | +
|
| 34 | + - name: 编译内核 |
63 | 35 | run: | |
64 | 36 | cd kernel |
65 | | - scripts/config --set-str LOCALVERSION "-zako~kernel" |
66 | | - make ARCH=arm64 olddefconfig |
67 | | - echo 'LOCALVERSION := -zako~kernel' >> Makefile |
68 | | - [ -d "AnyKernel3" ] && sed -i 's/^kernel.string=.*/kernel.string=zako~kernel/' AnyKernel3/anykernel.sh |
69 | | - echo "✅ 内核名修改完成" |
| 37 | + make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image.gz-dtb |
| 38 | + # 检查编译产物是否存在 |
| 39 | + ls -l arch/arm64/boot/Image.gz-dtb |
70 | 40 |
|
71 | | - - name: 8. 编译内核(定义CROSS_COMPILE_COMPAT变量) |
| 41 | + - name: 拉取AK3打包工具 |
72 | 42 | run: | |
73 | | - cd kernel |
74 | | - # 补充32位编译器变量,解决未定义错误 |
75 | | - export CROSS_COMPILE=aarch64-linux-gnu- |
76 | | - export CROSS_COMPILE_COMPAT=arm-linux-gnueabi- # 关键:定义32位兼容编译器 |
77 | | - export CROSS_COMPILE_ARM32=arm-linux-gnueabi- |
78 | | - export CC=aarch64-linux-gnu-gcc-10 |
79 | | - export HOSTCC=gcc-10 |
80 | | - export ARCH=arm64 |
81 | | - export KBUILD_BUILD_USER=AL1S69 |
82 | | - export KBUILD_BUILD_HOST=GitHubActions |
83 | | - # 编译,屏蔽警告 |
84 | | - make -j$(nproc) KCFLAGS=-Wno-error KCFLAGS+=-Wno-dangling-pointer KCFLAGS+=-Wno-incompatible-pointer-types |
85 | | - echo "✅ 内核编译完成" |
| 43 | + git clone https://github.com/ak3rdparty/AnyKernel3.git -b lavender anykernel3 |
| 44 | + # 替换AK3中的内核镜像 |
| 45 | + cp kernel/arch/arm64/boot/Image.gz-dtb anykernel3/Image.gz-dtb |
86 | 46 |
|
87 | | - - name: 9. 打包可刷内核包 |
| 47 | + - name: 打包AK3刷机包 |
88 | 48 | run: | |
89 | | - cd kernel |
90 | | - if [ -f "arch/arm64/boot/Image.gz-dtb" ]; then |
91 | | - if [ ! -d "AnyKernel3" ]; then |
92 | | - git clone --depth=1 https://github.com/osm0sis/AnyKernel3.git |
93 | | - sed -i 's/kernel.string=.*/kernel.string=zako~kernel/' AnyKernel3/anykernel.sh |
94 | | - sed -i 's/device.name1=.*/device.name1=lavender/' AnyKernel3/anykernel.sh |
95 | | - fi |
96 | | - cp arch/arm64/boot/Image.gz-dtb AnyKernel3/ |
97 | | - cd AnyKernel3 |
98 | | - zip -r9 zako~kernel-BPF-lavender-4.4-$(date +%Y%m%d).zip * -x .git* *.md |
99 | | - echo "✅ 内核包打包完成" |
100 | | - else |
101 | | - echo "❌ 未生成Image.gz-dtb,编译失败" |
102 | | - exit 1 |
103 | | - fi |
| 49 | + cd anykernel3 |
| 50 | + # 打包为ZIP(命名包含内核名) |
| 51 | + zip -r9 zako-kernel-lavender.zip * -x .git* README.md *.sh |
104 | 52 |
|
105 | | - - name: 10. 上传编译产物 |
| 53 | + - name: 上传AK3刷机包 |
106 | 54 | uses: actions/upload-artifact@v4 |
107 | 55 | with: |
108 | | - name: zako~kernel-lavender-4.4-BPF |
109 | | - path: kernel/AnyKernel3/zako~kernel-BPF-lavender-4.4-*.zip |
110 | | - if-no-files-found: error |
| 56 | + name: zako-kernel-lavender-AK3 |
| 57 | + path: anykernel3/zako-kernel-lavender.zip |
0 commit comments