Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/system/bin/sh
- ##### md5sum e24d678d9c18c7811e16f4755dfd1e19 /system/sbin/busybox-armv7l
- which free >/dev/null 2>&1
- if [[ $? -ne 0 ]]
- then
- echo "Unable to find 'which' and/or 'free' command, install busybox-armv7l
- # mount -o rw,remount /system
- # mkdir /system/sbin
- # download https://busybox.net/downloads/binaries/latest/busybox-armv7l to /system/sbin
- # chmod 777 /system/sbin/busybox-armv7l
- # /system/sbin/busybox-armv7l --install -s /system/sbin
- # rm -f /system/sbin/ps"
- exit 1
- fi
- # Not sure if we need this or if it should be "snapshot" or what
- #setprop sys.warp.mode true
- mount -o ro,remount /
- # Starting off by stopping zygote and servicemanager, they like to work against us respawning processes.
- stop zygote
- stop servicemanager
- RESTART="zygote servicemanager"
- COUNT=0
- while [[ $COUNT -lt 100 ]]
- do
- #echo "Closing Services attempt [${COUNT}]"
- process_list=`/system/bin/ps | grep -v "\/sh$" | grep -v "\/sysd$" | grep "\/system" | awk '{print $NF}' | tr '\n' ' ' `
- if [[ "${process_list}" == "" ]]
- then
- echo "All system processes are closed, this is a good thing."
- COUNT=1000
- else
- for process_name in ${process_list}
- do
- #echo "Closing process [${process_name}]"
- service_name=`grep "^service.*${process_name}" /*rc | grep -v goldfish | awk '{print $2}'`
- if [[ "${service_name}" != "" ]]
- then
- echo "Found match for process_name=[${process_name}] service_name=[${service_name}], STOPPING!"
- stop ${service_name}
- RESTART="${RESTART} ${service_name}"
- else
- echo "No match for process_name=[${process_name}], doing killall and hoping it ends"
- killall ${process_name}
- fi
- done
- fi
- COUNT=$(( $COUNT + 1 ))
- done
- #### Tried stopping modules to prevent kernel panics, does not appear to make a difference so leaving them be
- # echo "Stopping Modules"
- # module_list=`lsmod | awk '{print $1}' | tr '\n' ' '`
- # for module_name in ${module_list}
- # do
- # echo "removing module [${module_name}]"
- # rmmod ${module_name}
- # done
- #### Some helpful info for Debugging
- echo "RESTART LIST = [${RESTART}]"
- echo "##################################################"
- /system/bin/ps
- echo "##################################################"
- echo "Done stopping pre-services..."
- #### sysd stays pegged... so this idea doesn't work.
- #echo -n "Waiting for system to calm down."
- #grep "^0" /proc/loadavg
- #while [ $? -ne 0 ]
- #do
- # tail -n1 /proc/loadavg
- # sleep 1
- # sync
- # grep "^0" /proc/loadavg
- #done
- #echo "Load is acceptable now, Continuing on."
- # We just stopped a ton of processes, give the system a moment to settle
- sleep 5
- sync
- ### Zero out the memory for a small clean snapshot
- head -n2 /proc/meminfo
- sync && echo 3 > /proc/sys/vm/drop_caches && echo ""
- memfree=$(free -m | awk '/^Mem/ {print $4-32}')
- echo "memfree=[${memfree}]"
- if [ $memfree -gt 0 ]; then
- dd if=/dev/zero of=/dev/null bs=${memfree}M count=1
- fi
- head -n2 /proc/meminfo
- sleep 5
- echo "Stopping sysd, we only have another 15-30 seconds before watchdog reboots us unless we restart sysd in time"
- stop sysd
- #stop console
- sync
- sync
- sync
- #<Before the snapshot retaining Intent>
- # am broadcast -a jp.co.lineo.warp.android.ACTION_WARP_SNAPSHOT_START
- #time busybox killall dhcpcd
- #### Actually do the snapshot passing on any arguments
- /sbin/snapshot $*
- echo "snapshot RETURN=[$?]"
- #### From here down gets run every boot from the snapshot created.
- start sysd
- #start console
- echo "We're back!"
- #### We didn't stop the modules so we don't need to start them
- #echo "re-loading modules"
- #for module_name in ${module_list}
- #do
- # echo "Loading module [${module_name}]"
- # find /system/lib/modules/ -name ${module_name}.ko -exec insmod {} \;
- #done
- #<Warp Processing immediately after the starting>
- STAT=/proc/warp/stat
- echo "STAT=[${STAT}]"
- #case $STAT in
- # 0)
- #<Processing at time of snapshot retention >
- # am broadcast -a jp.co.lineo.warp.android.ACTION_WARP_WAKE_UP --es mode 3
- # ;;
- # *)
- #<Processing at time of loom starting >
- # am broadcast -a jp.co.lineo.warp.android.ACTION_WARP_WAKE_UP --es mode 4
- # ;;
- # esac
- #/system/bin/logwrapper /system/bin/dhcpcd eth0 &
- chmod 777 /extdata
- chmod 666 /extdata/MIXTRAX/*
- chmod -R 777 /extdata/iGO/ /extdata/synctool/
- chown system:system /extdata/DataManager /extdata/DataManager/*
- for service in ${RESTART}
- do
- echo "Restarting ${service}"
- start ${service}
- done
Advertisement
Add Comment
Please, Sign In to add comment