3 MODULE_MOUNT_FLAG=@MODULE_MOUNT_FLAG@
8 UPI_NO_DELTA_ERROR=fdfa
11 STATUS_DIR=${FAKE_ROOT}/opt/data/recovery
12 STATUS_FILE=${STATUS_DIR}/RW.STATUS
13 DELTA_PATH_FILE=${STATUS_DIR}/DELTA.PATH
14 INT_LOG_DIR=${STATUS_DIR}
15 INT_LOG_FILE=${INT_LOG_DIR}/fota_internal.log
17 FOTA_LOG_DIR=/opt/data/fota
18 FOTA_RESULT_DIR=${FOTA_LOG_DIR}
19 FOTA_TEMP_DIR=${FOTA_LOG_DIR}
21 PART_TBL_FILE="part_tbl.txt"
22 PART_TBL_PATH=${FOTA_TEMP_DIR}/${PART_TBL_FILE}
33 PARTX="/usr/sbin/partx"
34 BLKID="/usr/sbin/blkid"
42 #------------------------------------------------
44 #------------------------------------------------
46 EMMC_DEVICE="/dev/mmcblk0"
47 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE})
48 TEST=$(echo "$RET_PARTX" | "$TR" -s ' ' | "$SED" -e '1d' -e 's/^ //' | "$CUT" -d ' ' -f 6)
49 if [ "z$TEST" == "z" ]; then
50 PART_ROOTFS=$("$BLKID" -L "rootfs" -o device)
51 PART_SYSTEM_DATA=$("$BLKID" -L "system-data" -o device)
52 PART_USER=$("$BLKID" -L "user" -o device)
54 PART_ROOTFS=${EMMC_DEVICE}p$(
56 "$TR" -s ' ' | "$TR" '[:upper:]' '[:lower:]' |
57 "$GREP" "rootfs" | "$SED" 's/^ //' |
59 PART_SYSTEM_DATA=${EMMC_DEVICE}p$(
61 "$TR" -s ' ' | "$TR" '[:upper:]' '[:lower:]' |
62 "$GREP" "system-data" | "$SED" 's/^ //' |
64 PART_USER=${EMMC_DEVICE}p$(
66 "$TR" -s ' ' | "$TR" '[:upper:]' '[:lower:]' |
67 "$GREP" "user" | "$SED" 's/^ //' |
72 #------------------------------------------------
74 #------------------------------------------------
78 "$MOUNT" -t ext4 -o ro ${PART_ROOTFS} ${FAKE_ROOT}
79 "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/${SYSTEM_DATA_MNT}
80 "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/${USER_MNT}
82 "$MOUNT" -t proc none ${FAKE_ROOT}/proc
83 "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys
84 "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev
85 "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts
88 #------------------------------------------------
90 #------------------------------------------------
93 "$UMOUNT" ${FAKE_ROOT}/dev/pts
94 "$UMOUNT" ${FAKE_ROOT}/dev
95 "$UMOUNT" ${FAKE_ROOT}/sys
96 "$UMOUNT" ${FAKE_ROOT}/proc
98 "$UMOUNT" ${FAKE_ROOT}/${USER_MNT}
99 "$UMOUNT" ${FAKE_ROOT}/${SYSTEM_DATA_MNT}
100 "$UMOUNT" ${FAKE_ROOT}
103 #------------------------------------------------
105 #------------------------------------------------
107 echo "delta does not exist ..." >> ${INT_LOG_FILE}
109 echo "${UPI_NO_DELTA_ERROR}" > ${RESULT_FILE}
112 #------------------------------------------------
114 #------------------------------------------------
116 echo "ua does not exist ..." >> ${INT_LOG_FILE}
118 echo "${UPI_NO_UA_ERROR}" > ${RESULT_FILE}
121 #------------------------------------------------
122 # do_create_part_table
123 #------------------------------------------------
124 do_create_part_table() {
126 EMMC_DEVICE="/dev/mmcblk0"
127 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE})
128 TEST=$(echo "$RET_PARTX" | "$TR" -s ' ' | "$SED" -e '1d' -e 's/^ //' | "$CUT" -d ' ' -f 6)
129 if [ "z$TEST" == "z" ]; then
130 RET_PARTX=$("$BLKID" -o full | "$GREP" ${EMMC_DEVICE}p |
131 "$SED" -e 's/\/dev\/mmcblk0p//g' -e 's/\ .*LABEL=\"\(.*\).*$/\1/' |
132 "$CUT" -d '"' -f 1 | "$SED" 's/\:/\ /' |
133 "$TR" '[:lower:]' '[:upper:]' |
136 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE} | "$SED" -e '1d' -e 's/^ //' |
137 "$TR" -s ' ' | "$CUT" -d ' ' -f 1,6 |
138 "$TR" '[:lower:]' '[:upper:]')
140 PART_NUM=$(echo "$RET_PARTX" | "$WC" -l)
142 echo "$PART_NUM" > ${PART_TBL_PATH}
143 echo "$RET_PARTX" >> ${PART_TBL_PATH}
147 #------------------------------------------------
149 #------------------------------------------------
151 echo "fota update start ..." >> ${INT_LOG_FILE}
153 DELTA_DIR=`cat ${DELTA_PATH_FILE}`
154 echo "DELTA_DIR = ${DELTA_DIR}" >> ${INT_LOG_FILE}
156 RESULT_FILE=${FAKE_ROOT}${FOTA_RESULT_DIR}/result
157 if [ -e ${RESULT_FILE} ]; then
158 rm -fr ${RESULT_FILE}
161 UA=${DELTA_DIR}/delta.ua
162 if [ ! -s ${UA} ]; then
169 DELTA=${DELTA_DIR}/delta.tar
170 if [ ! -s ${DELTA} ]; then
176 if [ ! -e ${PART_TBL_PATH} ]; then
177 echo "No partition table" >> ${INT_LOG_FILE}
181 ${UA} ${DELTA_DIR} ${FOTA_TEMP_DIR} 0
182 if [ $? -ne 0 ]; then
183 echo "update agent fail!!!" >> ${INT_LOG_FILE}
186 echo "update agent success"
192 #------------------------------------------------
194 #------------------------------------------------
195 init_internal_log() {
197 if [ -e "${INT_LOG_FILE}" ]; then
198 /bin/rm -fr ${INT_LOG_FILE}
203 #------------------------------------------------
205 #------------------------------------------------
208 TEST_DIR=${FAKE_ROOT}${FOTA_LOG_DIR}
209 if [ ! -e ${TEST_DIR} ]; then
210 "$MKDIR" -p ${TEST_DIR}
211 if [ "$?" = "0" ]; then
212 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
216 TEST_DIR=${FAKE_ROOT}${FOTA_RESULT_DIR}
217 if [ ! -e ${TEST_DIR} ]; then
218 "$MKDIR" -p ${TEST_DIR}
219 if [ "$?" = "0" ]; then
220 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
224 TEST_DIR=${FAKE_ROOT}${FOTA_TEMP_DIR}
225 if [ ! -e ${TEST_DIR} ]; then
226 "$MKDIR" -p ${TEST_DIR}
227 if [ "$?" = "0" ]; then
228 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
234 #------------------------------------------------
236 #------------------------------------------------
248 #------------------------------------------------
249 # check_for_rw_power_fail
250 #------------------------------------------------
251 check_for_rw_power_fail() {
252 # Case : Power fail during RW update after RO update
253 if [ -r ${STATUS_FILE} ]; then
254 echo "${STATUS_FILE} exists" >> ${INT_LOG_FILE}
255 /bin/cat ${STATUS_FILE} >> ${INT_LOG_FILE}
258 exec /sbin/fus_rw-init
262 #------------------------------------------------
264 #------------------------------------------------
268 # For debugging - It should be deleted on Release (TODO : tty like ttyS0, S1 should be selected automatically)
269 /sbin/agetty -l /bin/bash -n --keep-baud 115200,38400,9600 ttyS0 linux &
273 check_for_rw_power_fail
275 "$MOUNT" -o remount,rw ${FAKE_ROOT}
282 if [ "$fota_result" = "0" ]; then
283 exec /sbin/fus_rw-init
286 # For debugging - It should be deleted on Release
287 echo "Upgrade FAILED"