From 0b37d0bfa4c86511c4eaa2c6d4d5509be16cd370 Mon Sep 17 00:00:00 2001 From: osm0sis Date: Tue, 4 Jul 2023 15:31:07 -0300 Subject: [PATCH] AK3+Backend: add preliminary KernelSU support --- META-INF/com/google/android/update-binary | 6 +++--- META-INF/com/google/android/updater-script | 2 +- tools/ak3-core.sh | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/META-INF/com/google/android/update-binary b/META-INF/com/google/android/update-binary index e58858f..54b932e 100755 --- a/META-INF/com/google/android/update-binary +++ b/META-INF/com/google/android/update-binary @@ -393,8 +393,8 @@ do_modules() { local block modcon moddir modtarget module slot umask; if [ "$(file_getprop anykernel.sh do.systemless)" == 1 ]; then cd $AKHOME/modules; - ui_print " " "Creating kernel helper Magisk module..."; - if [ -d /data/adb/magisk -a -f $AKHOME/magisk_patched ]; then + ui_print " " "Creating kernel helper systemless module..."; + if [ -d /data/adb/magisk -a -f $AKHOME/magisk_patched ] || [ -d /data/adb/ksu -a -f $AKHOME/kernelsu_patched ]; then umask=$(umask); umask 022; moddir=/data/adb/modules/ak3-helper; @@ -408,7 +408,7 @@ do_modules() { cp -f $AKHOME/vertmp $moddir/version; umask $umask; else - ui_print "Magisk installation not found. Skipped!"; + ui_print "Magisk/KernelSU installation not found. Skipped!"; fi; else cd $AKHOME/modules; diff --git a/META-INF/com/google/android/updater-script b/META-INF/com/google/android/updater-script index b870ab3..601d278 100644 --- a/META-INF/com/google/android/updater-script +++ b/META-INF/com/google/android/updater-script @@ -3,4 +3,4 @@ # Dummy file; update-binary is a shell script (DO NOT CHANGE) # # -# AK_BASE_VERSION=20230605 +# AK_BASE_VERSION=20230704 diff --git a/tools/ak3-core.sh b/tools/ak3-core.sh index 90d89e1..aea688b 100755 --- a/tools/ak3-core.sh +++ b/tools/ak3-core.sh @@ -345,6 +345,28 @@ flash_boot() { for fdt in dtb extra kernel_dtb recovery_dtbo; do [ -f $fdt ] && $bin/magiskboot dtb $fdt patch; # remove dtb verity/avb done; + elif [ -d /data/adb/ksu -a -f /data/adb/ksu/modules.img ] && [ "$(file_getprop $home/anykernel.sh do.systemless)" == 1 ]; then + ui_print " " "KernelSU detected! Setting up for kernel helper module..."; + comp=$($bin/magiskboot decompress kernel 2>&1 | grep -vE 'raw|zimage' | sed -n 's;.*\[\(.*\)\];\1;p'); + ($bin/magiskboot split $kernel || $bin/magiskboot decompress $kernel kernel) 2>/dev/null; + if [ $? != 0 -a "$comp" ] && $comp --help 2>/dev/null; then + echo "Attempting kernel unpack with busybox $comp..." >&2; + $comp -dc $kernel > kernel; + fi; + if strings kernel 2>/dev/null | grep -q -E '^/data/adb/ksud$'; then + touch $home/kernelsu_patched; + strings kernel 2>/dev/null | grep -E -m1 'Linux version.*#' > $home/vertmp; + else + ui_print " " "Warning: No KernelSU support detected in kernel!"; + fi; + if [ "$comp" ]; then + $bin/magiskboot compress=$comp kernel kernel.$comp; + if [ $? != 0 ] && $comp --help 2>/dev/null; then + echo "Attempting kernel repack with busybox $comp..." >&2; + $comp -9c kernel > kernel.$comp; + fi; + mv -f kernel.$comp kernel; + fi; else case $kernel in *-dtb) rm -f kernel_dtb;;