7 UPI_NO_DELTA_ERROR=fb15
10 STATUS_DIR=${FAKE_ROOT}/opt/data/update
11 STATUS_FILE=${STATUS_DIR}/RW.STATUS
12 DELTA_PATH_FILE=${STATUS_DIR}/DELTA.PATH
13 INT_LOG_DIR=${STATUS_DIR}
14 INT_LOG_FILE=${INT_LOG_DIR}/fota_internal.log
16 FOTA_LOG_DIR=/opt/data/update
17 FOTA_RESULT_DIR=${FOTA_LOG_DIR}
18 FOTA_TEMP_DIR=${FOTA_LOG_DIR}
20 PART_TBL_FILE="part_tbl.txt"
21 PART_TBL_PATH=${FOTA_TEMP_DIR}/${PART_TBL_FILE}
32 BLKID="/usr/sbin/blkid"
37 FOTA_GUI="/usr/bin/fota_gui"
43 #------------------------------------------------
45 #------------------------------------------------
47 PART_ROOTFS=$("$BLKID" --match-token PARTLABEL=rootfs -o device || "$BLKID" --match-token LABEL=rootfs -o device)
48 PART_SYSTEM_DATA=$("$BLKID" --match-token PARTLABEL=system-data -o device || "$BLKID" --match-token LABEL=system-data -o device)
49 PART_USER=$("$BLKID" --match-token PARTLABEL=user -o device || "$BLKID" --match-token LABEL=user -o device)
52 #------------------------------------------------
54 #------------------------------------------------
58 "$MOUNT" -t ext4 -o ro ${PART_ROOTFS} ${FAKE_ROOT}
59 "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/${SYSTEM_DATA_MNT}
61 if [ ! "z${PART_USER}" = "z" ]; then
62 "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/${USER_MNT}
65 "$MOUNT" -t proc none ${FAKE_ROOT}/proc
66 "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys
67 "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev
68 "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts
71 #------------------------------------------------
73 #------------------------------------------------
76 "$UMOUNT" ${FAKE_ROOT}/dev/pts
77 "$UMOUNT" ${FAKE_ROOT}/dev
78 "$UMOUNT" ${FAKE_ROOT}/sys
79 "$UMOUNT" ${FAKE_ROOT}/proc
81 if [ ! "z${PART_USER}" = "z" ]; then
82 "$UMOUNT" ${FAKE_ROOT}/${USER_MNT}
84 "$UMOUNT" ${FAKE_ROOT}/${SYSTEM_DATA_MNT}
85 "$UMOUNT" ${FAKE_ROOT}
88 #------------------------------------------------
90 #------------------------------------------------
92 echo "delta does not exist ..." >> ${INT_LOG_FILE}
94 echo "${UPI_NO_DELTA_ERROR}" > ${RESULT_FILE}
97 #------------------------------------------------
99 #------------------------------------------------
101 echo "ua does not exist ..." >> ${INT_LOG_FILE}
103 echo "${UPI_NO_UA_ERROR}" > ${RESULT_FILE}
106 #------------------------------------------------
107 # do_create_part_table
108 #------------------------------------------------
109 do_create_part_table() {
111 EMMC_DEVICE="/dev/mmcblk0"
112 PART_LIST=$("$BLKID" -o full | "$GREP" ${EMMC_DEVICE}p |
113 "$SED" -e 's/\/dev\/mmcblk0p//g' -e 's/\ .*LABEL=\"\(.*\).*$/\1/' |
114 "$CUT" -d '"' -f 1 | "$SED" 's/\:/\ /' |
115 "$TR" '[:upper:]' '[:lower:]' |
117 PART_NUM=$(echo "$PART_LIST" | "$WC" -l)
119 echo "$PART_NUM" > ${PART_TBL_PATH}
120 echo "$PART_LIST" >> ${PART_TBL_PATH}
124 #------------------------------------------------
126 #------------------------------------------------
128 echo "fota update start ..." >> ${INT_LOG_FILE}
130 DELTA_DIR=`cat ${DELTA_PATH_FILE}`
131 echo "DELTA_DIR = ${DELTA_DIR}" >> ${INT_LOG_FILE}
133 RESULT_FILE=${FAKE_ROOT}${FOTA_RESULT_DIR}/result
134 if [ -e ${RESULT_FILE} ]; then
135 rm -fr ${RESULT_FILE}
138 UA=${DELTA_DIR}/delta.ua
139 if [ ! -s ${UA} ]; then
146 DELTA=${DELTA_DIR}/delta.tar
147 if [ ! -s ${DELTA} ]; then
153 if [ ! -e ${PART_TBL_PATH} ]; then
154 echo "No partition table" >> ${INT_LOG_FILE}
158 VERIFY_TOOL=/usr/sbin/upg-verifier
159 if [ -e ${VERIFY_TOOL} ]; then
160 ${VERIFY_TOOL} ${DELTA}
161 if [ $? -ne 0 ]; then
162 echo "signature verification failed!" >> ${INT_LOG_FILE}
165 echo "update package verification success"
168 echo "Warning: No signature verifier... Skip it" >> ${INT_LOG_FILE}
171 if [ "$FOTA_GUI_ENABLE" = "1" ]; then
172 ${UA} ${DELTA_DIR} ${FOTA_TEMP_DIR} 0
174 ${UA} ${DELTA_DIR} ${FOTA_TEMP_DIR} 1
177 if [ $? -ne 0 ]; then
178 echo "update agent fail!!!" >> ${INT_LOG_FILE}
181 echo "update agent success"
187 #------------------------------------------------
189 #------------------------------------------------
190 init_internal_log() {
192 if [ -e "${INT_LOG_FILE}" ]; then
193 /bin/rm -fr ${INT_LOG_FILE}
198 #------------------------------------------------
200 #------------------------------------------------
203 TEST_DIR=${FAKE_ROOT}${FOTA_LOG_DIR}
204 if [ ! -e ${TEST_DIR} ]; then
205 "$MKDIR" -p ${TEST_DIR}
206 if [ "$?" = "0" ]; then
207 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
211 TEST_DIR=${FAKE_ROOT}${FOTA_RESULT_DIR}
212 if [ ! -e ${TEST_DIR} ]; then
213 "$MKDIR" -p ${TEST_DIR}
214 if [ "$?" = "0" ]; then
215 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
219 TEST_DIR=${FAKE_ROOT}${FOTA_TEMP_DIR}
220 if [ ! -e ${TEST_DIR} ]; then
221 "$MKDIR" -p ${TEST_DIR}
222 if [ "$?" = "0" ]; then
223 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
229 #------------------------------------------------
231 #------------------------------------------------
243 #------------------------------------------------
244 # check_for_rw_power_fail
245 #------------------------------------------------
246 check_for_rw_power_fail() {
247 # Case : Power fail during RW update after RO update
248 if [ -r ${STATUS_FILE} ]; then
249 echo "${STATUS_FILE} exists" >> ${INT_LOG_FILE}
250 /bin/cat ${STATUS_FILE} >> ${INT_LOG_FILE}
253 exec /sbin/fus_rw-init
257 #------------------------------------------------
259 #------------------------------------------------
260 check_for_fota_gui() {
261 if [ -r ${FOTA_GUI} ]; then
262 echo "GUI Enabled" >> ${INT_LOG_FILE}
268 #------------------------------------------------
270 #------------------------------------------------
274 # For debugging - It should be deleted on Release (TODO : tty like ttyS0, S1 should be selected automatically)
275 /sbin/agetty -l /bin/bash -n --keep-baud 115200,38400,9600 ttyS0 linux &
279 check_for_rw_power_fail
281 "$MOUNT" -o remount,rw ${FAKE_ROOT}
285 if [ "$FOTA_GUI_ENABLE" = "1" ]; then
286 export XDG_RUNTIME_DIR=/run
287 export TBM_DISPLAY_SERVER=1
294 if [ "$FOTA_GUI_ENABLE" = "1" ]; then
295 /usr/bin/fota_gui_test -1
297 if [ "$fota_result" = "0" ]; then
298 /bin/rm -fr ${DELTA_DIR}
302 if [ "$fota_result" = "0" ]; then
303 exec /sbin/fus_rw-init
305 echo "Upgrade FAILED"