diff --git a/scripts/flash_script.sh b/scripts/flash_script.sh index 420507d7f..578a4a923 100644 --- a/scripts/flash_script.sh +++ b/scripts/flash_script.sh @@ -320,18 +320,14 @@ fi ui_print "- Constructing environment" if (is_mounted /data); then - rm -rf /data/busybox /data/magisk 2>/dev/null - mkdir -p /data/busybox /data/magisk + rm -rf /data/magisk 2>/dev/null + mkdir -p /data/magisk cp -af $BINDIR/busybox $BINDIR/sepolicy-inject $BINDIR/resetprop \ $INSTALLER/common/init.magisk.rc $INSTALLER/common/magic_mask.sh /data/magisk cp -af $INSTALLER/common/magisk.apk /data/magisk.apk - /data/magisk/busybox --install -s /data/busybox - ln -s /data/magisk/busybox /data/busybox/busybox - # Prevent issues - rm -f /data/busybox/su /data/busybox/sh /data/busybox/reboot - chcon -hR u:object_r:system_file:s0 /data/magisk /data/busybox - chmod -R 755 /data/magisk /data/busybox - # PATH=/data/busybox:$PATH + chmod -R 755 /data/magisk + chcon -h u:object_r:system_file:s0 /data/magisk /data/magisk/* + PATH=/data/busybox:$PATH else rm -rf /cache/data_bin 2>/dev/null mkdir -p /cache/data_bin @@ -342,6 +338,13 @@ else chmod -R 755 /cache/data_bin fi +# Temporary busybox for installation +mkdir -p $TMPDIR/busybox +$BINDIR/busybox --install -s $TMPDIR/busybox +rm -f $TMPDIR/busybox/su $TMPDIR/busybox/sh $TMPDIR/busybox/reboot +PATH=$TMPDIR/busybox:$PATH + + ########################################################################################## # Image ########################################################################################## @@ -486,11 +489,10 @@ else # MagiskSU ui_print "- Installing MagiskSU" - rm -rf $COREDIR/su 2>/dev/null - mkdir -p $COREDIR/su + mkdir -p $COREDIR/su 2>/dev/null cp -af $BINDIR/su $INSTALLER/common/magisksu.sh $COREDIR/su - chmod -R 755 $COREDIR/su - chown -R 0.0 $COREDIR/su + chmod 755 $COREDIR/su/su $COREDIR/su/magisksu.sh + chown -R 0.0 $COREDIR/su/su $COREDIR/su/magisksu.sh # Patch ramdisk ui_print "- Patching ramdisk" diff --git a/scripts/magic_mask.sh b/scripts/magic_mask.sh index ec8e3ff8a..0fc38689e 100644 --- a/scripts/magic_mask.sh +++ b/scripts/magic_mask.sh @@ -15,8 +15,12 @@ MOUNTINFO=$TMPDIR/mnt # Use the included busybox for maximum compatibility and reliable results # e.g. we rely on the option "-c" for cp (reserve contexts), and -exec for find -TOOLPATH=/data/busybox +TOOLPATH=/dev/busybox BINPATH=/data/magisk +OLDPATH=$PATH +export PATH=$TOOLPATH:$OLDPATH + +APPDIR=/data/data/com.topjohnwu.magisk/files # Default permissions umask 022 @@ -273,24 +277,25 @@ case $1 in mv /cache/magisk.apk /data/magisk.apk 2>/dev/null mv /cache/custom_ramdisk_patch.sh /data/custom_ramdisk_patch.sh 2>/dev/null - if [ -d "/cache/data_bin" ]; then - rm -rf $BINPATH $TOOLPATH - mkdir -p $TOOLPATH + if [ -d /cache/data_bin ]; then + rm -rf $BINPATH mv /cache/data_bin $BINPATH - $BINPATH/busybox --install -s $TOOLPATH - ln -s $BINPATH/busybox $TOOLPATH/busybox - # Prevent issues - rm -f $TOOLPATH/su $TOOLPATH/sh $TOOLPATH/reboot fi + chmod -R 755 $BINPATH + chown -R 0.0 $BINPATH + # Live patch sepolicy $BINPATH/sepolicy-inject --live # Set up environment - export OLDPATH=$PATH - export PATH=$TOOLPATH:$OLDPATH - chmod -R 755 $BINPATH $TOOLPATH - chown -R 0.0 $BINPATH $TOOLPATH + mkdir -p $TOOLPATH + $BINPATH/busybox --install -s $TOOLPATH + ln -s $BINPATH/busybox $TOOLPATH/busybox + # Prevent issues + rm -f $TOOLPATH/su $TOOLPATH/sh $TOOLPATH/reboot + chmod -R 755 $TOOLPATH + chown -R 0.0 $TOOLPATH find $BINPATH $TOOLPATH -exec chcon -h u:object_r:system_file:s0 {} \; # Multirom functions should go here, not available right now @@ -314,7 +319,7 @@ case $1 in # Remove empty directories, legacy paths, symlinks, old temporary images find $MOUNTPOINT -type d -depth ! -path "*core*" -exec rmdir {} \; 2>/dev/null - rm -rf $MOUNTPOINT/zzsupersu $MOUNTPOINT/phh $COREDIR/bin $COREDIR/dummy $COREDIR/mirror /data/magisk/*.img 2>/dev/null + rm -rf $MOUNTPOINT/zzsupersu $MOUNTPOINT/phh $COREDIR/bin $COREDIR/dummy $COREDIR/mirror /data/magisk/*.img /data/busybox 2>/dev/null # Remove modules that are labeled to be removed for MOD in $MOUNTPOINT/* ; do @@ -343,7 +348,12 @@ case $1 in fi # Start MagiskSU if no SuperSU + export PATH=$OLDPATH [ ! -f /sbin/launch_daemonsu.sh ] && sh $COREDIR/su/magisksu.sh + export PATH=$TOOLPATH:$OLDPATH + + # Disable Magic Mount if specified + [ -f $APPDIR/disable ] && unblock log_print "* Preparing modules" @@ -441,16 +451,6 @@ case $1 in bind_mount $COREDIR/hosts /system/etc/hosts fi - # Expose busybox - if [ -f $COREDIR/busybox/enable ]; then - log_print "* Enabling BusyBox" - cp -afc /data/busybox/. $COREDIR/busybox - cp -afc /system/xbin/. $COREDIR/busybox - chmod -R 755 $COREDIR/busybox - chcon -hR u:object_r:system_file:s0 $COREDIR/busybox - bind_mount $COREDIR/busybox /system/xbin - fi - if [ -f /data/magisk.apk ]; then if [ -z `ls /data/app | grep com.topjohnwu.magisk` ]; then mkdir /data/app/com.topjohnwu.magisk-1 @@ -480,9 +480,20 @@ case $1 in /data/magisk/resetprop --file $MOD/system.prop fi done + + # Expose busybox + [ "`getprop persist.magisk.busybox`" = "1" ] && sh /sbin/magic_mask.sh mount_busybox + unblock ;; + mount_busybox ) + log_print "* Enabling BusyBox" + cp -afc /system/xbin/. $TOOLPATH + umount /system/xbin 2>/dev/null + bind_mount $TOOLPATH /system/xbin + ;; + service ) # Version info MAGISK_VERSION_STUB diff --git a/scripts/magisksu.sh b/scripts/magisksu.sh index b5266ead8..0e09e1e82 100644 --- a/scripts/magisksu.sh +++ b/scripts/magisksu.sh @@ -2,7 +2,6 @@ MODDIR=${0%/*} LOGFILE=/cache/magisk.log -PATH=$OLDPATH log_print() { echo "MagiskSU: $1"