Guest User

Untitled

a guest
Jun 25th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 8.98 KB | None | 0 0
  1. #!/sbin/sh
  2. # Installer script for Team ICSSGS
  3. # © 2012 Team ICSSGS
  4. # Written by DemonWav
  5.  
  6. set -x
  7. PATH=$PATH:/tmp:/tmp/updates
  8.  
  9. BUSYBOX="/tmp/icssgs-data/busybox"
  10.  
  11. mount_part()
  12. {
  13.     if ! [ $($BUSYBOX mount | $BUSYBOX grep "/$1" | $BUSYBOX wc -l) -eq "1" ] ; then
  14.         $BUSYBOX mkdir -p /$1
  15.         $BUSYBOX umount -l /dev/block/$2
  16.         if ! $BUSYBOX mount -t $3 /dev/block/$2 /$1 ; then
  17.             echo "$1 cannot be mounted successfully."
  18.         fi
  19.     else
  20.         $BUSYBOX umount -l /dev/block/$2
  21.         if ! $BUSYBOX mount -t $3 /dev/block/$2 /$1 ; then
  22.             echo "$1 cannot be mounted successfully."
  23.         fi
  24.     fi
  25. }
  26.  
  27. format_data()
  28. {
  29.     #mount system
  30.     mount_part system mtdblock2 yaffs2
  31.     #copy needed libs for mkfs.ext4
  32.     $BUSYBOX cp -r /tmp/updates/lib/* /system/lib/
  33.     #make needed symlink for mkfs.ext4
  34.     $BUSYBOX ln -s /tmp/updates/mke2fs /tmp/updates/mkfs.ext4
  35.     ext4_format mmcblk0p2
  36.     mount_new data mmcblk0p2
  37. }
  38.  
  39. ext4_format()
  40. {
  41.     /tmp/updates/mkfs.ext4 -F -J size=32 -T default /dev/block/$1
  42.     /tmp/updates/tune2fs -c 100 -i 100d -m 0 /dev/block/$1
  43. }
  44.  
  45. mount_new()
  46. {
  47.     /tmp/updates/e2fsck -p /dev/block/$2
  48.     $BUSYBOX mount -t ext4 -o noatime,barrier=0,data=ordered,barrier=1,noauto_da_alloc /dev/block/$2 /$1
  49.     echo -e "\n"
  50. }
  51.  
  52. wipedata()
  53. {
  54.     #mount sdcard
  55.     mount_part sdcard mmcblk0p1 vfat
  56.  
  57.     #check if the data needs to be wiped or not
  58.     if [ -e /sdcard/wipedata ] ; then
  59.         #the data does need to be wiped
  60.         #format cache
  61.         $BUSYBOX umount -l /cache
  62.         /tmp/erase_image cache
  63.         #format data
  64.         $BUSYBOX umount /data
  65.         format_data
  66.         #format datadata
  67.         $BUSYBOX umount -l /datadata
  68.         /tmp/erase_image datadata
  69.         #cleanup sdcard
  70.         $BUSYBOX rm -rf /sdcard/.android_secure
  71.         $BUSYBOX rm -rf /sdcard/wipedata
  72.     else
  73.         #the data does not need to be wiped, so restore batterystats.bin
  74.         #ensure that /data/system exists, just to be safe
  75.         mount_part data mmcblk0p2 ext4
  76.         $BUSYBOX mkdir -p /data/system/
  77.         #restore batterystats.bin and remove the backup from the sdcard
  78.         $BUSYBOX cp /sdcard/batterystats.bin /data/system/batterystats.bin
  79.         $BUSYBOX rm -rf /sdcard/batterystats.bin
  80.     fi
  81.  
  82.     $BUSYBOX umount -l /sdcard
  83.     $BUSYBOX umount -l /data
  84. }
  85.  
  86. rebootchecker()
  87. {
  88.     #check if the device is MTD or not
  89.     if [ $($BUSYBOX mount | $BUSYBOX grep "stl" | $BUSYBOX wc -l) -gt "0" ] ; then
  90.         #the device is not MTD, so a reboot will be needed
  91.         exit 0
  92.     else
  93.         #the device is MTD, so check if it is CM7 or not
  94.         if $BUSYBOX test `$BUSYBOX cat /sys/class/mtd/mtd2/size` != 262144000 ; then
  95.             #the device is CM7, so a reboot will be necesary
  96.             exit 0
  97.         fi
  98.     fi
  99.     exit 1
  100. }
  101.  
  102. backup_efs()
  103. {
  104.     if [ -e /sdcard/backup/efs ] ; then
  105.         $BUSYBOX mv /sdcard/backup/efs /sdcard/backup/efs-$$
  106.     fi
  107.     $BUSYBOX rm -rf /sdcard/backup/efs
  108.     $BUSYBOX mkdir -p /sdcard/backup/efs
  109.     $BUSYBOX cp -a /efs/ /sdcard/backup
  110. }
  111.  
  112. restore_efs()
  113. {
  114.     $BUSYBOX umount -l /efs
  115.     /tmp/erase_image efs
  116.     mount_part efs mtdblock4 yaffs2
  117.     $BUSYBOX cp -a /sdcard/backup/efs /
  118.     $BUSYBOX chmod 0755 /efs
  119.     $BUSYBOX umount -l /efs
  120. }
  121.  
  122. reboot()
  123. {
  124.     #check if the device is MTD or not
  125.     if [ $($BUSYBOX mount | $BUSYBOX grep "stl" | $BUSYBOX wc -l) -gt "0" ] ; then
  126.         #the device is not MTD, so a reboot will be needed
  127.         #mount cache and clear recovery
  128.         mount_part sdcard mmcblk0p1 vfat
  129.  
  130.         mount_part cache stl11 rfs
  131.  
  132.         if ! [ -d /cache/recovery ] ; then
  133.             $BUSYBOX mkdir /cache/recovery
  134.         else
  135.             $BUSYBOX rm -rf /cache/recovery/extendedcommand
  136.         fi
  137.  
  138.         #backup /efs
  139.         mount_part efs stl3 rfs
  140.         backup_efs
  141.  
  142.         $BUSYBOX rm -rf /sdcard/clockworkmod/.settings
  143.  
  144.         #reboot and restart flash
  145.         if [ -n "$UPDATE_PACKAGE" ] ; then
  146.             PACKAGE_LOCATION=${UPDATE_PACKAGE#/mnt}
  147.             $BUSYBOX echo "$PACKAGE_LOCATION" > /sdcard/cyanogenmod.cfg
  148.         fi
  149.  
  150.         #export tmp files to sdcard
  151.         if [ -d /sdcard/icssgsinstall/tmpfiles ] ; then
  152.             $BUSYBOX cp -a /tmp/icssgs-data/* /sdcard/icssgsinstall/tmpfiles/
  153.         else
  154.             $BUSYBOX mkdir -p /sdcard/icssgsinstall/tmpfiles
  155.             $BUSYBOX cp -a /tmp/icssgs-data/* /sdcard/icssgsinstall/tmpfiles/
  156.         fi
  157.  
  158.         $BUSYBOX touch /sdcard/icssgsinstall/tmpfiles/check.prop
  159.         $BUSYBOX echo -e "continue_install=yes\n" > /sdcard/icssgsinstall/tmpfiles/check.prop
  160.  
  161.         $BUSYBOX touch /sdcard/icssgsinstall/continue_install
  162.        
  163.         $BUSYBOX sync
  164.         $BUSYBOX reboot now
  165.     else
  166.         #the device is MTD, so check if it is CM7 or not
  167.         if $BUSYBOX test `$BUSYBOX cat /sys/class/mtd/mtd2/size` != 262144000 ; then
  168.             #the device is CM7, so a reboot will be necesary
  169.  
  170.             $BUSYBOX rm -rf /sdcard/clockworkmod/.settings
  171.  
  172.             #mount sdcard
  173.             mount_part sdcard mmcblk0p1 vfat
  174.  
  175.             mount_part system mtdblock2 yaffs2
  176.             $BUSYBOX rm -f /system/build.prop
  177.             $BUSYBOX umount -l /system
  178.  
  179.             #reboot and restart flash
  180.             if $BUSYBOX [ -n "$UPDATE_PACKAGE" ] ; then
  181.                 $BUSYBOX echo "$UPDATE_PACKAGE" > /sdcard/cyanogenmod.cfg
  182.             fi
  183.  
  184.             $BUSYBOX sync
  185.             /sbin/reboot now
  186.         else
  187.             #the device is not CM7, so cleanup and restore efs
  188.             mount_part sdcard mmcblk0p1 vfat
  189.             #prevent the device from looping
  190.             $BUSYBOX rm -rf /sdcard/cyanogenmod.cfg
  191.             #restore /efs
  192.             restore_efs
  193.         fi
  194.     fi
  195.     $BUSYBOX umount -l /sdcard
  196. }
  197.  
  198. modem()
  199. {
  200.     #check to make sure a modem exists to flash
  201.     if [ -e /tmp/modem.bin ] ; then
  202.         #format /radio
  203.         $BUSYBOX umount -l /radio
  204.         /tmp/erase_image radio
  205.  
  206.         #make sure /radio is mounted properly
  207.         mount_part radio mtdblock5 yaffs2
  208.  
  209.         #copy new modem.bin
  210.         $BUSYBOX cp /tmp/modem.bin /radio/modem.bin
  211.  
  212.         #set modem.bin permissions and owner
  213.         $BUSYBOX chmod 0600 /radio/modem.bin
  214.         $BUSYBOX chown radio.radio /radio/modem.bin
  215.     fi
  216. }
  217.  
  218. datarestore()
  219. {
  220.     mount_part sdcard mmcblk0p1 vfat
  221.     mount_part data mmcblk0p2 ext4
  222.     #restore data backup
  223.     if [ -d /data/data ] ; then
  224.         if [ -d /sdcard/icssgsbackup/data ] ; then
  225.             $BUSYBOX cp -a /sdcard/icssgsinstall/backup/data/* /data/data/
  226.         fi
  227.     else
  228.         $BUSYBOX mkdir -p /data/data
  229.         if [ -d /sdcard/icssgsbackup/data ] ; then
  230.             $BUSYBOX cp -a /sdcard/icssgsinstall/backup/data/* /data/data/
  231.         fi
  232.     fi
  233.     #restore app backup
  234.     if [ -d /data/app ] ; then
  235.         if [ -d /sdcard/icssgsbackup/data ] ; then
  236.             $BUSYBOX cp -a /sdcard/icssgsinstall/backup/app/* /data/app/
  237.         fi
  238.     else
  239.         $BUSYBOX mkdir -p /data/app
  240.         if [ -d /sdcard/icssgsbackup/app ] ; then
  241.             $BUSYBOX cp -a /sdcard/icssgsinstall/backup/app/* /data/app/
  242.         fi
  243.     fi
  244. }
  245.  
  246. databackup()
  247. {
  248.     if [ $($BUSYBOX mount | $BUSYBOX grep "stl" | $BUSYBOX wc -l) -gt "0" ] ; then
  249.         #the device is BML, check if /data is rfs or ext4
  250.         $BUSYBOX mount -t rfs /dev/block/mmcblk0p2 /data
  251.         if [ $($BUSYBOX mount | $BUSYBOX grep "/dev/block/mmcblk0p2 on /data type rfs" | $BUSYBOX wc -l) -eq "1" ]; then
  252.             echo "/data is successfully mounted as RFS"
  253.         else
  254.             $BUSYBOX mount -t ext4 /dev/block/mmcblk0p2 /data
  255.             echo "/data is successfully mounted as EXT4"
  256.         fi
  257.     else
  258.         #the device is MTD
  259.         $BUSYBOX mount -t ext4 /dev/block/mmcblk0p2 /data
  260.     fi
  261.     mount_part sdcard mmcblk0p1 vfat
  262.     DEL=$($BUSYBOX find /data/data/com.android*)
  263.     $BUSYBOX rm -rf $DEL
  264.     $BUSYBOX mkdir -p /sdcard/icssgsinstall/backup/app
  265.     $BUSYBOX cp -a /data/app/* /sdcard/icssgsinstall/backup/app/
  266.     $BUSYBOX mkdir -p /sdcard/icssgsinstall/backup/data
  267.     $BUSYBOX cp -a /data/data/* /sdcard/icssgsinstall/backup/data/
  268. }
  269.  
  270. checkdata()
  271. {
  272.     #check if the device is MTD or not
  273.     if ! [ $($BUSYBOX mount | $BUSYBOX grep "stl" | $BUSYBOX wc -l) -gt "0" ] ; then
  274.         #the device is MTD
  275.         #mount sdcard and system
  276.         mount_part sdcard mmcblk0p1 vfat
  277.         mount_part system mtdblock2 yaffs2
  278.         #check to see if a data wipe is going to be neceasary
  279.         if [ $($BUSYBOX cat /system/build.prop | $BUSYBOX grep "update.device.version=" | $BUSYBOX awk '{print $2}') -le 3 ] ; then
  280.             exit 0
  281.         else
  282.             #a data wipe will not be needed, so go ahead and backup the batterystats.bin
  283.             #mount sdcard and data
  284.             mount_part sdcard mmcblk0p1 vfat
  285.             mount_part data mmcblk0p2 ext4
  286.             #save the batterystats.bin on the sdcard
  287.             $BUSYBOX cp /data/system/batterystats.bin /sdcard/batterystats.bin
  288.         fi
  289.     else
  290.         #the device is not MTD, so a data wipe will be needed
  291.         #mount sdcard
  292.         exit 0
  293.     fi
  294.     $BUSYBOX umount -l /sdcard/
  295.     $BUSYBOX umount -l /system
  296.     $BUSYBOX umount -l /data
  297.     exit 1
  298. }
  299.  
  300. checker()
  301. {
  302.     mount_part sdcard mmcblk0p1 vfat
  303.  
  304.     if [ -e /sdcard/icssgsinstall/continue_install ] ; then
  305.         #export tmp files back to /tmp
  306.         $BUSYBOX mkdir -p /tmp/icssgs-data/
  307.         $BUSYBOX cp -a /sdcard/icssgsinstall/tmpfiles/* /tmp/icssgs-data/
  308.     else
  309.         exit 1
  310.     fi
  311.     exit 0
  312. }
  313.  
  314. nodatawipe()
  315. {
  316.     echo "selected.0=1" > /tmp/icssgs-data/wipedatachoose.prop
  317. }
  318.  
  319. mount_efs()
  320. {
  321.     mount_part efs mtdblock4 yaffs2
  322. }
  323.  
  324. mount_sdcard()
  325. {
  326.     mount_part sdcard mmcblk0p1 vfat
  327. }
  328.  
  329. backup()
  330. {
  331.     if [ -e /tmp/icssgs-data/backup.prop ] ; then
  332.         exit 0
  333.     else
  334.         exit 1
  335.     fi
  336. }
  337.  
  338. wipedatachoose()
  339. {
  340.     if [ -e /tmp/icssgs-data/wipedatachoose.prop ] ; then
  341.         YES=$($BUSYBOX cat /tmp/icssgs-data/wipedatachoose.prop | $BUSYBOX grep "selected.0=1" | $BUSYBOX wc -l)
  342.         if [ $YES -eq 1 ] ; then
  343.             exit 0
  344.         else
  345.             exit 1
  346.         fi
  347.     else
  348.         exit 1
  349.     fi
  350. }
  351.  
  352. cleanup()
  353. {
  354.     mount_part sdcard mmcblk0p1 vfat
  355.     $BUSYBOX rm -rf /sdcard/icssgsinstall
  356. }
  357.  
  358. $1
Add Comment
Please, Sign In to add comment