- 👋 Hi, I’m @bstring23
- 👀 I’m interested in ... hot russian single busty women! <?---->
- 🌱 I’m currently learning ... things.
- 💞️ I’m looking to collaborate on ... long walks on the beach
- 📫 How to train dolphins just ask me ... bstring+ #!/system/bin/sh
MODE=$1
log_print() { echo "($MODE) $1" echo "($MODE) $1" >> /dev/.launch_daemonsu.log log -p i -t launch_daemonsu "($MODE) $1" }
log_print "start"
if [ mount | grep " /data " >/dev/null 2>&1; echo $?
-ne 0 ]; then
log_print "abort: /data not mounted #1" exit fi
if [ mount | grep " /data " | grep "tmpfs" >/dev/null 2>&1; echo $?
-eq 0 ]; then
log_print "abort: /data not mounted #2" exit fi
if [ cat /proc/mounts | grep /su >/dev/null 2>&1; echo $?
-eq 0 ]; then
if [ -d "/su/bin" ]; then
if [ ps | grep -v "launch_daemonsu.sh" | grep "daemonsu" >/dev/null 2>&1; echo $?
-eq 0 ]; then
# nothing to do here
log_print "abort: daemonsu already running"
exit
fi
fi
fi
setprop sukernel.daemonsu.launch $MODE
loopsetup() {
LOOPDEVICE=
for DEV in $(ls /dev/block/loop*); do
if [ losetup $DEV $1 >/dev/null 2>&1; echo $?
-eq 0 ]; then
LOOPDEVICE=$DEV
break
fi
done
log_print "loopsetup($1): $LOOPDEVICE" }
resize() {
local LAST=
local SIZE=
for i in ls -l /data/su.img
; do
if [ "$LAST" = "root" ]; then
if [ "$i" != "root" ]; then
SIZE=$i
break;
fi
fi
LAST=$i
done
log_print "/data/su.img: $SIZE bytes"
if [ "$SIZE" -lt "96000000" ]; then
log_print "resizing /data/su.img to 96M"
e2fsck -p -f /data/su.img
resize2fs /data/su.img 96M
fi
}
REBOOT=false
if [ ! -d "/su/bin" ]; then
log_print "/su not mounted yet"
log_print "copying boot image backups from /cache to /data" cp -f /cache/stock_boot_* /data/. 2>/dev/null
if [ -f "/data/su.img" ]; then log_print "/data/su.img found" e2fsck -p -f /data/su.img
# make sure the image is the right size
resize
fi
if [ -f "/cache/su.img" ]; then log_print "/cache/su.img found" e2fsck -p -f /cache/su.img OVERWRITE=true
if [ -f "/data/su.img" ]; then
# attempt merge, this will fail pre-M
# will probably also fail with /system installed busybox,
# but then again, is there anything busybox doesn't break?
# falls back to overwrite
log_print "/data/su.img found"
log_print "attempting merge"
mkdir /cache/data_img
mkdir /cache/cache_img
# setup loop devices
loopsetup /data/su.img
LOOPDATA=$LOOPDEVICE
log_print "$LOOPDATA /data/su.img"
loopsetup /cache/su.img
LOOPCACHE=$LOOPDEVICE
log_print "$LOOPCACHE /cache/su.img"
if [ ! -z "$LOOPDATA" ]; then
if [ ! -z "$LOOPCACHE" ]; then
# if loop devices have been setup, mount images
OK=true
if [ `mount -t ext4 -o rw,noatime $LOOPDATA /cache/data_img >/dev/null 2>&1; echo $?` -ne 0 ]; then
OK=false
fi
if [ `mount -t ext4 -o rw,noatime $LOOPCACHE /cache/cache_img >/dev/null 2>&1; echo $?` -ne 0 ]; then
OK=false
fi
if ($OK); then
# if mounts have succeeded, merge the images
if [ `cp -af /cache/cache_img/. /cache/data_img >/dev/null 2>&1; echo $?` -eq 0 ]; then
log_print "merge complete"
OVERWRITE=false
fi
fi
umount /cache/data_img
umount /cache/cache_img
fi
fi
losetup -d $LOOPDATA
losetup -d $LOOPCACHE
rmdir /cache/data_img
rmdir /cache/cache_img
fi
if ($OVERWRITE); then
# no /data/su.img or merge failed, replace
log_print "replacing /data/su.img with /cache/su.img"
mv /cache/su.img /data/su.img
# make sure the new image is the right size
resize
fi
rm /cache/su.img
fi
if [ ! -f "/data/su.img" ]; then if [ -d "/.sufrp" ]; then # create empty image make_ext4fs -l 96M -a /su -S /.sufrp/file_contexts_image /data/su.img chown 0.0 /data/su.img chmod 0600 /data/su.img chcon u:object_r:system_data_file:s0 /data/su.img
# make sure the new image is the right size
resize
fi
fi fi
if [ -f "/cache/SuperSU.apk" ]; then cp /cache/SuperSU.apk /data/SuperSU.apk rm /cache/SuperSU.apk fi if [ -f "/data/SuperSU.apk" ]; then log_print "installing SuperSU APK in /data"
APKPATH=eu.chainfire.supersu-1
for i in ls /data/app | grep eu.chainfire.supersu- | grep -v eu.chainfire.supersu.pro
; do
if [ cat /data/system/packages.xml | grep $i >/dev/null 2>&1; echo $?
-eq 0 ]; then
APKPATH=$i
break;
fi
done
rm -rf /data/app/eu.chainfire.supersu-*
log_print "target path: /data/app/$APKPATH"
mkdir /data/app/$APKPATH chown 1000.1000 /data/app/$APKPATH chmod 0755 /data/app/$APKPATH chcon u:object_r:apk_data_file:s0 /data/app/$APKPATH
cp /data/SuperSU.apk /data/app/$APKPATH/base.apk chown 1000.1000 /data/app/$APKPATH/base.apk chmod 0644 /data/app/$APKPATH/base.apk chcon u:object_r:apk_data_file:s0 /data/app/$APKPATH/base.apk
rm /data/SuperSU.apk
sync
REBOOT=true fi
if ($REBOOT); then log_print "rebooting" if [ "$MODE" = "post-fs-data" ]; then # avoid device freeze (reason unknown) sh -c "sleep 5; reboot" & else reboot fi exit fi
if [ ! -d "/su/bin" ]; then
chown 0.0 /data/su.img chmod 0600 /data/su.img chcon u:object_r:system_data_file:s0 /data/su.img
if [ cat /proc/mounts | grep /su >/dev/null 2>&1; echo $?
-ne 0 ]; then
loopsetup /data/su.img
if [ ! -z "$LOOPDEVICE" ]; then
MOUNT=$(mount -t ext4 -o rw,noatime $LOOPDEVICE /su 2>&1)
log_print "$MOUNT"
fi
fi
if [ cat /proc/mounts | grep /su >/dev/null 2>&1; echo $?
-ne 0 ]; then
setprop sukernel.mount 1
sleep 1
fi
if [ cat /proc/mounts | grep /su >/dev/null 2>&1; echo $?
-ne 0 ]; then
log_print "abort: mount failed"
exit
fi
fi
if [ ! -d "/su/bin" ]; then
if [ -d "/.sufrp" ]; then /.sufrp/frp_install fi fi
mount -o bind /su/bin/su /sbin/su 2>/dev/null mount -o bind /su/bin/su /system/bin/su 2>/dev/null mount -o bind /su/bin/su /system/xbin/su 2>/dev/null
if [ -d "/su/xbin_bind" ]; then cp -f -a /system/xbin/. /su/xbin_bind rm -rf /su/xbin_bind/su ln -s /su/bin/su /su/xbin_bind/su mount -o bind /su/xbin_bind /system/xbin fi
if [ "$MODE" != "post-fs-data" ]; then
log_print "exec daemonsu" exec /su/bin/daemonsu --auto-daemon else
log_print "fork daemonsu" /su/bin/daemonsu --auto-daemon
if [ -d "/su/su.d" ]; then log_print "waiting for su.d" for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do # su.d finished ? if [ -f "/dev/.su.d.complete" ]; then break fi
for j in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
# su.d finished ?
if [ -f "/dev/.su.d.complete" ]; then
break
fi
# sleep 240ms if usleep supported, warm up the CPU if not
# 16*16*240ms=60s maximum if usleep supported, else much shorter
usleep 240000
done
done
fi log_print "end" fi