Update busybox handling

This commit is contained in:
topjohnwu 2017-02-04 18:44:07 +08:00
parent ef9948a967
commit db501822ef
3 changed files with 49 additions and 37 deletions

View File

@ -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"

View File

@ -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

View File

@ -2,7 +2,6 @@
MODDIR=${0%/*}
LOGFILE=/cache/magisk.log
PATH=$OLDPATH
log_print() {
echo "MagiskSU: $1"