#!/system/bin/sh ### Rozhuk Ivan 2020-2021 ### setup_autorun_legacy.sh ### # Workaround to find 'dirname' on system, at least at /system/xbin - busybox required. export PATH=/bin:/sbin:/system/bin:/system/xbin export THIS_SCRIPT_NAME=`readlink -nf ${0}` export OPT_BIN_DIR=`dirname ${THIS_SCRIPT_NAME}` export OPT_ROOT_DIR=`dirname "${OPT_BIN_DIR}"` export OPT_ROOT_PARENT_DIR=`dirname "${OPT_ROOT_DIR}"` # Restore PATH. export PATH=${OPT_ROOT_DIR}/bin:${OPT_ROOT_DIR}/sbin:/bin:/sbin:/system/bin:/system/xbin echo "setup_autorun_legacy.sh: ${0}: setup autorun legacy for entware: ${OPT_ROOT_DIR}" if [ -z "${OPT_ROOT_DIR}" ] || [ '/opt' == "${OPT_ROOT_DIR}" ]; then echo "setup_autorun_legacy.sh: can not use dir: ${OPT_ROOT_DIR}" exit 1 fi # Create service autorun script for magisk. if [ ! -f /data/adb/service.d/entware.sh ]; then echo 'setup_autorun_legacy.sh: creating /data/adb/service.d/entware.sh.' mkdir -p /data/adb/service.d echo '#!/system/bin/sh' > /data/adb/service.d/entware.sh echo '' >> /data/adb/service.d/entware.sh echo "echo 'entware.sh: start' > /dev/kmsg" >> /data/adb/service.d/entware.sh echo '' >> /data/adb/service.d/entware.sh echo "${OPT_BIN_DIR}/optstart.sh > /dev/kmsg 2>&1" >> /data/adb/service.d/entware.sh echo '' >> /data/adb/service.d/entware.sh chmod 0755 /data/adb/service.d/entware.sh chown root:root /data/adb/service.d/entware.sh REBOOT_REQUIRED='yes' fi # Samsung patch kernel to not allow run programs from /data: # https://stackoverflow.com/questions/36674727/permission-denied-on-exec-from-a-binary-running-as-root # https://github.com/termux/termux-packages/issues/3672 # Move magisk`s busybox to /opt and create symlink to override this. DEV_VENDOR=`grep -E 'ro.product.*brand=' /system/build.prop | tr -d '\n' | sed -e 's|.*[a-z][0-9]\?=||g' | tr '[:lower:]' '[:upper:]'` if [ 'SAMSUNG' == "${DEV_VENDOR}" ] && [ -f /data/adb/magisk/busybox ] && [ ! -L /data/adb/magisk/busybox ]; then echo "setup_autorun_legacy.sh: moving busybox to ${OPT_ROOT_DIR}/magisk/." # Unprotect. /system/bin/mount -o rw,remount / > /dev/null 2>&1 /system/bin/mount -o rw,remount "${OPT_ROOT_PARENT_DIR}" > /dev/null 2>&1 # Do job. mkdir -p "${OPT_ROOT_DIR}/magisk" cp -f /data/adb/magisk/busybox /data/adb/magisk/busybox.bak mv -f /data/adb/magisk/busybox "${OPT_ROOT_DIR}/magisk/" ln -sf "${OPT_ROOT_DIR}/magisk/busybox" /data/adb/magisk/ # Protect again. /system/bin/mount -o ro,remount "${OPT_ROOT_PARENT_DIR}" > /dev/null 2>&1 /system/bin/mount -o ro,remount / > /dev/null 2>&1 REBOOT_REQUIRED='yes' fi # Legacy auto detect, experemental. #TARGETS=`dmesg | grep "init: cannot find" | sed -e "s|.*cannot find '||" | sed -e "s|', disabling '.*||"` #for t in $TARGETS; #do # ln -fvs "${OPT_ROOT_DIR}/bin/optstart.sh" "$t" #done echo "setup_autorun_legacy.sh: ${0}: setup autorun legacy done." if [ 'yes' == "${REBOOT_REQUIRED}" ]; then echo "setup_autorun_legacy.sh: ${0}: reboot required, 5 seconds..." sleep 5 /system/bin/reboot fi