From 7bc40ffbd1074088116c3ded63f45a9f7e1ae895 Mon Sep 17 00:00:00 2001 From: Howard Wu Date: Mon, 12 Feb 2024 08:51:10 +0800 Subject: [PATCH] Fix env at first boot --- scripts/build.sh | 2 ++ scripts/init.lsp.magisk.rc | 2 ++ scripts/post-fs-data.sh | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 scripts/init.lsp.magisk.rc create mode 100644 scripts/post-fs-data.sh diff --git a/scripts/build.sh b/scripts/build.sh index 1727ed4c2..3c83171e9 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -474,6 +474,8 @@ if [ "$HAS_GAPPS" ] || [ "$ROOT_SOL" = "magisk" ]; then "add 0644 overlay.d/sbin/magisk32.xz $WORK_DIR/magisk/magisk32.xz" \ "add 0644 overlay.d/sbin/stub.xz $WORK_DIR/magisk/stub.xz" \ "mkdir 000 .backup" \ + "add 000 overlay.d/init.lsp.magisk.rc init.lsp.magisk.rc" \ + "add 000 overlay.d/sbin/post-fs-data.sh post-fs-data.sh" \ || abort "Unable to patch initrd" elif [ "$ROOT_SOL" = "kernelsu" ]; then echo "Extracting KernelSU" diff --git a/scripts/init.lsp.magisk.rc b/scripts/init.lsp.magisk.rc new file mode 100644 index 000000000..444331ef6 --- /dev/null +++ b/scripts/init.lsp.magisk.rc @@ -0,0 +1,2 @@ +on post-fs-data + exec u:r:magisk:s0 0 0 -- /system/bin/sh ${MAGISKTMP}/post-fs-data.sh diff --git a/scripts/post-fs-data.sh b/scripts/post-fs-data.sh new file mode 100644 index 000000000..b7adef5de --- /dev/null +++ b/scripts/post-fs-data.sh @@ -0,0 +1,38 @@ +#!/system/bin/sh +MAGISKTMP=/sbin +[ -d /sbin ] || MAGISKTMP=/debug_ramdisk +MAGISKBIN=/data/adb/magisk +if [ ! -d /data/adb ]; then + mkdir -m 700 /data/adb + chcon u:object_r:adb_data_file:s0 /data/adb +fi +if [ ! -x $MAGISKBIN/busybox ]; then + # shellcheck disable=SC2174 + mkdir -p -m 755 $MAGISKBIN + chcon u:object_r:system_file:s0 $MAGISKBIN + ABI=$(/system/bin/getprop ro.product.cpu.abi) + /system/bin/unzip -d $MAGISKBIN -j $MAGISKTMP/stub.apk "lib/$ABI/libbusybox.so" + mv $MAGISKBIN/libbusybox.so $MAGISKBIN/busybox + chmod 755 $MAGISKBIN/busybox + /system/bin/unzip -d $MAGISKBIN -j $MAGISKTMP/stub.apk "lib/$ABI/libmagiskpolicy.so" + mv $MAGISKBIN/libmagiskpolicy.so $MAGISKBIN/magiskpolicy + chmod 755 $MAGISKBIN/magiskpolicy +fi +if [ ! -x $MAGISKBIN/magiskpolicy ]; then + /system/bin/unzip -d $MAGISKBIN -j $MAGISKTMP/stub.apk "lib/$ABI/libmagiskpolicy.so" + mv $MAGISKBIN/libmagiskpolicy.so $MAGISKBIN/magiskpolicy + chmod 755 $MAGISKBIN/magiskpolicy +fi +for file in magiskboot magiskinit; do + [ -x "$MAGISKBIN/$file" ] || { + /system/bin/unzip -d $MAGISKBIN -j $MAGISKTMP/stub.apk "lib/$ABI/lib$file.so" + mv $MAGISKBIN/lib$file.so $MAGISKBIN/$file + chmod 755 "$MAGISKBIN/$file" + } +done +for file in util_functions.sh boot_patch.sh; do + [ -x "$MAGISKBIN/$file" ] || { + /system/bin/unzip -d $MAGISKBIN -j $MAGISKTMP/stub.apk "assets/$file" + chmod 755 "$MAGISKBIN/$file" + } +done