From 50f44fff9eb856d5f38b0555813a500207a68cde Mon Sep 17 00:00:00 2001 From: Ylarod Date: Sat, 14 Jan 2023 10:43:16 +0800 Subject: [PATCH] kernel: export customized symbols (#58) --- .github/workflows/build-kernel-5.10.yml | 31 ++++++++++++++++++++----- .github/workflows/build-kernel-5.15.yml | 28 +++++++++++++++++++--- kernel/export_symbol.txt | 2 ++ scripts/abi_gki_all.py | 10 ++++++++ 4 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 kernel/export_symbol.txt create mode 100644 scripts/abi_gki_all.py diff --git a/.github/workflows/build-kernel-5.10.yml b/.github/workflows/build-kernel-5.10.yml index 37b30fd5..615d3b34 100644 --- a/.github/workflows/build-kernel-5.10.yml +++ b/.github/workflows/build-kernel-5.10.yml @@ -41,13 +41,23 @@ jobs: - uses: actions/checkout@v3 with: path: KernelSU - - name: Download kernel source + + - name: Setup kernel source run: | cd $GITHUB_WORKSPACE git clone https://gerrit.googlesource.com/git-repo mkdir android-kernel && cd android-kernel ../git-repo/repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-${{ matrix.tag }} ../git-repo/repo sync -j$(nproc --all) + curl -Lo gki-kernel.zip https://dl.google.com/android/gki/gki-certified-boot-${{ matrix.tag }}_r1.zip + unzip gki-kernel.zip + tools/mkbootimg/unpack_bootimg.py --boot_img=$(find . -maxdepth 1 -name "*.img") + + - name: Setup KernelSU + env: + PATCH_PATH: "5.10" + run: | + cd $GITHUB_WORKSPACE/android-kernel echo "[+] KernelSU setup" GKI_ROOT=$(pwd) echo "[+] GKI_ROOT: $GKI_ROOT" @@ -56,13 +66,22 @@ jobs: echo "[+] Add kernel su driver to Makefile" DRIVER_MAKEFILE=$GKI_ROOT/common/drivers/Makefile grep -q "kernelsu" $DRIVER_MAKEFILE || echo "obj-y += kernelsu/" >> $DRIVER_MAKEFILE - echo "[+] KernelSU setup Done." - cd $GKI_ROOT/common/ && git apply $GITHUB_WORKSPACE/KernelSU/.github/patches/5.10/*.patch + echo "[+] Apply KernelSU patches" + cd $GKI_ROOT/common/ && git apply $GITHUB_WORKSPACE/KernelSU/.github/patches/$PATCH_PATH/*.patch cd - - curl -Lo gki-kernel.zip https://dl.google.com/android/gki/gki-certified-boot-${{ matrix.tag }}_r1.zip - unzip gki-kernel.zip - tools/mkbootimg/unpack_bootimg.py --boot_img=$(find . -maxdepth 1 -name "*.img") + echo "[+] KernelSU setup Done." + - name: Symbol magic + run: | + echo "[+] Export all symbol from abi_gki_aarch64.xml" + COMMON_ROOT=$GITHUB_WORKSPACE/android-kernel/common + KSU_ROOT=$GITHUB_WORKSPACE/KernelSU + ABI_XML=$COMMON_ROOT/android/abi_gki_aarch64.xml + SYMBOL_LIST=$COMMON_ROOT/android/abi_gki_aarch64 + # python3 $KSU_ROOT/scripts/abi_gki_all.py $ABI_XML > $SYMBOL_LIST + echo "[+] Add KernelSU symbols" + cat $KSU_ROOT/kernel/export_symbol.txt | awk '{sub("[ \t]+","");print " "$0}' >> $SYMBOL_LIST + - name: Build boot.img working-directory: android-kernel run: BUILD_BOOT_IMG=1 SKIP_VENDOR_BOOT=1 KERNEL_BINARY=Image GKI_RAMDISK_PREBUILT_BINARY=out/ramdisk AVB_SIGN_BOOT_IMG=1 AVB_BOOT_PARTITION_SIZE=$((64*1024*1024)) AVB_BOOT_ALGORITHM=SHA256_RSA2048 AVB_BOOT_KEY=prebuilts/kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem BOOT_IMAGE_HEADER_VERSION=4 LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh diff --git a/.github/workflows/build-kernel-5.15.yml b/.github/workflows/build-kernel-5.15.yml index 7ec854c3..75754e79 100644 --- a/.github/workflows/build-kernel-5.15.yml +++ b/.github/workflows/build-kernel-5.15.yml @@ -29,13 +29,23 @@ jobs: - uses: actions/checkout@v3 with: path: KernelSU - - name: Download Kernel Source + + - name: Setup kernel source run: | cd $GITHUB_WORKSPACE git clone https://gerrit.googlesource.com/git-repo mkdir android-kernel && cd android-kernel ../git-repo/repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-${{ matrix.tag }} ../git-repo/repo sync -j$(nproc --all) + curl -Lo gki-kernel.zip https://dl.google.com/android/gki/gki-certified-boot-${{ matrix.tag }}_r1.zip + unzip gki-kernel.zip + tools/mkbootimg/unpack_bootimg.py --boot_img=$(find . -maxdepth 1 -name "*.img") + + - name: Setup KernelSU + env: + PATCH_PATH: "5.15" + run: | + cd $GITHUB_WORKSPACE/android-kernel echo "[+] KernelSU setup" GKI_ROOT=$(pwd) echo "[+] GKI_ROOT: $GKI_ROOT" @@ -44,9 +54,21 @@ jobs: echo "[+] Add kernel su driver to Makefile" DRIVER_MAKEFILE=$GKI_ROOT/common/drivers/Makefile grep -q "kernelsu" $DRIVER_MAKEFILE || echo "obj-y += kernelsu/" >> $DRIVER_MAKEFILE - echo "[+] KernelSU setup Done." - cd $GKI_ROOT/common/ && git apply $GITHUB_WORKSPACE/KernelSU/.github/patches/5.15/*.patch + echo "[+] Apply KernelSU patches" + cd $GKI_ROOT/common/ && git apply $GITHUB_WORKSPACE/KernelSU/.github/patches/$PATCH_PATH/*.patch cd - + echo "[+] KernelSU setup Done." + + - name: Symbol magic + run: | + echo "[+] Export all symbol from abi_gki_aarch64.xml" + COMMON_ROOT=$GITHUB_WORKSPACE/android-kernel/common + KSU_ROOT=$GITHUB_WORKSPACE/KernelSU + ABI_XML=$COMMON_ROOT/android/abi_gki_aarch64.xml + SYMBOL_LIST=$COMMON_ROOT/android/abi_gki_aarch64 + # python3 $KSU_ROOT/scripts/abi_gki_all.py $ABI_XML > $SYMBOL_LIST + echo "[+] Add KernelSU symbols" + cat $KSU_ROOT/kernel/export_symbol.txt | awk '{sub("[ \t]+","");print " "$0}' >> $SYMBOL_LIST - name: Build boot.img working-directory: android-kernel diff --git a/kernel/export_symbol.txt b/kernel/export_symbol.txt new file mode 100644 index 00000000..d476da16 --- /dev/null +++ b/kernel/export_symbol.txt @@ -0,0 +1,2 @@ +register_kprobe +unregister_kprobe \ No newline at end of file diff --git a/scripts/abi_gki_all.py b/scripts/abi_gki_all.py new file mode 100644 index 00000000..d433634a --- /dev/null +++ b/scripts/abi_gki_all.py @@ -0,0 +1,10 @@ +from xml.dom.minidom import parse +import xml.dom.minidom +import sys + + +DOMTree = xml.dom.minidom.parse(sys.argv[1]) +symbols = DOMTree.getElementsByTagName("elf-symbol") +print("[abi_symbol_list]") +for symbol in symbols: + print(" " + symbol.getAttribute("name"))