forked from CyanogenDefy/android_external_bootmenu
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrecovery.sh
executable file
·115 lines (84 loc) · 2.51 KB
/
recovery.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/sbin/sh
######## BootMenu Script
######## Execute [Latest Recovery] Menu
source /system/bootmenu/script/_config.sh
######## Main Script
## /tmp folder can be a link to /data/tmp, bad thing !
[ -L /tmp ] && rm /tmp
mkdir -p /tmp
mkdir -p /res
rm -f /etc
mkdir /etc
# hijack mke2fs CWM3
rm -f /sbin/mke2fs
rm -f /sbin/tune2fs
rm -f /sbin/e2fsck
rm -f /sdcard
mkdir /sdcard
chmod 755 /sbin
chmod 755 /res
cp -r -f $BM_ROOTDIR/recovery/res/* /res/
cp -p -f $BM_ROOTDIR/recovery/sbin/* /sbin/
if [ ! -f /sbin/recovery ]; then
ln -s /sbin/recovery_stable /sbin/recovery
fi
cd /sbin
ln -s recovery edify
ln -s recovery setprop
ln -s recovery dump_image
ln -s recovery erase_image
ln -s recovery flash_image
ln -s recovery mkyaffs2image
ln -s recovery unyaffs
ln -s recovery nandroid
ln -s recovery volume
ln -s recovery reboot
chmod +rx /sbin/*
rm -f /sbin/postrecoveryboot.sh
if [ ! -e /etc/recovery.fstab ]; then
cp $BM_ROOTDIR/recovery/recovery.fstab /etc/recovery.fstab
fi
# for ext3 format
cp $BM_ROOTDIR/config/mke2fs.conf /etc/
mkdir -p /cache/recovery
touch /cache/recovery/command
touch /cache/recovery/log
touch /cache/recovery/last_log
touch /tmp/recovery.log
killall adbd
ps | grep -v grep | grep adbd
ret=$?
if [ ! $ret -eq 0 ]; then
# $BM_ROOTDIR/script/adbd.sh
# don't use adbd here, will load many android process which locks /system
killall adbd
killall adbd.root
fi
#############################
# mount in /sbin/postrecoveryboot.sh
umount /system
usleep 50000
mount -t $FS_SYSTEM -o rw,noatime,nodiratime $PART_SYSTEM /system
# retry without type & options if not mounted
[ ! -f /system/build.prop ] && mount -o rw $PART_SYSTEM /system
# set red led if problem with system
echo 0 > /sys/class/leds/red/brightness
echo 0 > /sys/class/leds/green/brightness
echo 0 > /sys/class/leds/blue/brightness
[ ! -f /system/build.prop ] && echo 1 > /sys/class/leds/red/brightness
#############################
/sbin/recovery
# Post Recovery (back to bootmenu)
# remount system & data if unmounted
[ ! -d /data/data ] && mount -t $FS_DATA -o rw,noatime,nodiratime,errors=continue $PART_DATA /data
[ ! -f /system/build.prop ] && mount -t $FS_SYSTEM -o rw,noatime,nodiratime,errors=continue $PART_SYSTEM /system
if [ -f /system/build.prop ] ; then
echo 0 > /sys/class/leds/red/brightness
echo 0 > /sys/class/leds/green/brightness
echo 1 > /sys/class/leds/blue/brightness
else
echo 1 > /sys/class/leds/red/brightness
echo 0 > /sys/class/leds/green/brightness
echo 0 > /sys/class/leds/blue/brightness
fi
exit