forked from jymbob/chuangmi-720-hack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rcS
165 lines (152 loc) · 6.16 KB
/
rcS
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/bin/sh
ft_mode=`cat /proc/ft_mode`
ft_cfg_file=ft_config.ini
sd_mountdir=/tmp/sd
ft_running_dir=/tmp/ft
ft_securekey_file=/mnt/data/ft/prikey.pem
ft_decrypt=/mnt/data/ft/rsa_decrypt
mmc_device=""
if [ -b /dev/mmcblk0p1 ];then
mmc_device=/dev/mmcblk0p1
elif [ -b /dev/mmcblk0 ];then
mmc_device=/dev/mmcblk0
fi
if [ "$mmc_device" != "" ] ; then
mkdir $sd_mountdir
mount -t vfat $mmc_device $sd_mountdir
if [ $? -eq 0 ] && [ "$ft_mode" != "1" ];then
if [ -f $sd_mountdir/$ft_cfg_file ];then
config_mode=`awk '$1~/\[.*/{_cdr_par_=0}\
$0 ~ /^ *\[ *config *\]/ {_cdr_par_=1}\
$0~/^[\011 ]*mode *=.*/ { if(_cdr_par_==1) { sub("="," "); print $2; exit 0} }\
' $sd_mountdir/$ft_cfg_file`
if [ "$config_mode" == "P2P" ];then
ft_mode="3"
elif [ "$config_mode" == "SA" ];then
ft_mode="1"
elif [ "$config_mode" == "MTBF" ];then
ft_mode="4"
else
ft_mode="2"
echo $config_mode > /tmp/ft_sub_mode
fi
fi
fi
fi
if [ "$ft_mode" != "0" ];then
if [ ! -f $ft_securekey_file ];then
echo "no securekey file, ft is not allowed"
ft_mode="0"
elif [ ! -d $sd_mountdir/ft ];then
echo ${sd_mountdir}"/ft is not found"
ft_mode="0"
else
dir_count=`find $sd_mountdir/ft -type d | wc -l`
dir_size=`du -m $sd_mountdir/ft | cut -f 0`
if [ $dir_count -gt 1 ];then
echo "subdir found in ft"
ft_mode="0"
elif [ $dir_size -gt 10 ];then
echo "ft size is too large"
ft_mode="0"
else
mkdir $ft_running_dir
md5sum $sd_mountdir/ft/* > $ft_running_dir/md5.sum
sed -i '/secret.bin/d' $ft_running_dir/md5.sum
$ft_decrypt $sd_mountdir/ft/secret.bin $ft_running_dir/md5_org.sum $ft_securekey_file
decrypt_result=$?
if [ -f $ft_running_dir/md5_org.sum ] && [ $decrypt_result -eq 0 ];then
if [ "1" ];then
#if md5sum -cs $ft_running_dir/md5_org.sum;then
echo "md5 check success"
if cp -r $sd_mountdir/ft/* $ft_running_dir;then
echo "ft running is ready"
else
echo "cp ft fail"
ft_mode="0"
fi
else
echo "md5 check fail"
ft_mode="0"
fi
rm $ft_running_dir/md5_org.sum
else
echo "md5 org is not found"
ft_mode="0"
fi
fi
fi
fi
if [ -d $sd_mountdir ];then
umount $sd_mountdir
rmdir $sd_mountdir
fi
echo $ft_mode > /tmp/ft_mode
echo "ft_mode is:"${ft_mode}
if [ "$ft_mode" == "1" ] || [ "$ft_mode" == "2" ] ; then
echo 0 > /proc/sys/kernel/printk
/etc/init.d/S10mdev start
/etc/init.d/S50gm start
exit
elif [ "$ft_mode" == "3" ] ; then
echo 0 > /proc/sys/kernel/printk
# /etc/init.d/S00restore
# /etc/init.d/S01logging
# /etc/init.d/S10mdev start
# /etc/init.d/S41wifi start
# /etc/init.d/S50gm start
# /etc/init.d/S60miio_avstreamer start
# /etc/init.d/S93miio_client start
# /etc/init.d/S93miot_devicekit start
# exit
fi
######### upgrade user partition #############
echo "Start detecting user_data"
OVERWRITE="/mnt/data/overwrite.sh"
if [ -f "$OVERWRITE" ]; then
/mnt/data/overwrite.sh
else
FIRMWARE_NAME="/mnt/data/user_data"
if [ -f "$FIRMWARE_NAME" ]; then
echo "${FIRMWARE_NAME} exist,will upgrade user partition!!!"
mv ${FIRMWARE_NAME} /tmp/
mkdir /tmp/imiApp
sync
tar -xvf /tmp/user_data -C /tmp/imiApp
if [ $? = 0 ];then
#rm /mnt/data/* -rf
mv /tmp/imiApp/os-release /tmp/
cp /tmp/imiApp/* /mnt/data -rf
cp /tmp/os-release /mnt/data -rf
sync
reboot
else
echo "tar user_data fail"
fi
else
echo "$FIRMWARE_NAME not exist"
fi
fi
# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
#for i in /etc/init.d/S??* ;do
for i in /mnt/data/imi/imi_init/S??* ;do
# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue
case "$i" in
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i start
;;
esac
done
/mnt/data/test/boot.sh