3 MODULE_MOUNT_FLAG=@MODULE_MOUNT_FLAG@
9 UPI_NO_DELTA_ERROR=fdfa
12 STATUS_DIR=${FAKE_ROOT}/opt/data/recovery
13 STATUS_FILE=${STATUS_DIR}/RW.STATUS
14 DELTA_PATH_FILE=${STATUS_DIR}/DELTA.PATH
15 INT_LOG_DIR=${STATUS_DIR}
16 INT_LOG_FILE=${INT_LOG_DIR}/fota_internal.log
18 FOTA_LOG_DIR=/opt/data/fota
19 FOTA_RESULT_DIR=${FOTA_LOG_DIR}
20 FOTA_TEMP_DIR=${FOTA_LOG_DIR}
22 PART_TBL_FILE="part_tbl.txt"
23 PART_TBL_PATH=${FOTA_TEMP_DIR}/${PART_TBL_FILE}
34 PARTX="/usr/sbin/partx"
35 BLKID="/usr/sbin/blkid"
40 FOTA_GUI="/usr/bin/fota_gui"
46 #------------------------------------------------
48 #------------------------------------------------
50 EMMC_DEVICE="/dev/mmcblk0"
51 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE})
52 TEST=$(echo "$RET_PARTX" | "$TR" -s ' ' | "$SED" -e '1d' -e 's/^ //' | "$CUT" -d ' ' -f 6)
53 if [ "z$TEST" == "z" ]; then
54 PART_ROOTFS=$("$BLKID" -L "rootfs" -o device)
55 PART_SYSTEM_DATA=$("$BLKID" -L "system-data" -o device)
56 PART_USER=$("$BLKID" -L "user" -o device)
58 PART_ROOTFS=${EMMC_DEVICE}p$(
60 "$TR" -s ' ' | "$TR" '[:upper:]' '[:lower:]' |
61 "$GREP" "rootfs" | "$SED" 's/^ //' |
63 PART_SYSTEM_DATA=${EMMC_DEVICE}p$(
65 "$TR" -s ' ' | "$TR" '[:upper:]' '[:lower:]' |
66 "$GREP" "system-data" | "$SED" 's/^ //' |
68 PART_USER=${EMMC_DEVICE}p$(
70 "$TR" -s ' ' | "$TR" '[:upper:]' '[:lower:]' |
71 "$GREP" "user" | "$SED" 's/^ //' |
76 #------------------------------------------------
77 # check_user_partition
78 #------------------------------------------------
79 check_user_partition() {
80 RET=$("$CAT" ${FAKE_ROOT}/etc/fstab | "$GREP" "user")
81 if [ "z$RET" = "z" ]; then
87 #------------------------------------------------
89 #------------------------------------------------
93 "$MOUNT" -t ext4 -o ro ${PART_ROOTFS} ${FAKE_ROOT}
94 "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/${SYSTEM_DATA_MNT}
98 if [ "$WITH_USR_PART" = "1" ]; then
99 "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/${USER_MNT}
102 "$MOUNT" -t proc none ${FAKE_ROOT}/proc
103 "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys
104 "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev
105 "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts
108 #------------------------------------------------
110 #------------------------------------------------
111 umount_partitions() {
113 "$UMOUNT" ${FAKE_ROOT}/dev/pts
114 "$UMOUNT" ${FAKE_ROOT}/dev
115 "$UMOUNT" ${FAKE_ROOT}/sys
116 "$UMOUNT" ${FAKE_ROOT}/proc
118 if [ "$WITH_USR_PART" = "1" ]; then
119 "$UMOUNT" ${FAKE_ROOT}/${USER_MNT}
121 "$UMOUNT" ${FAKE_ROOT}/${SYSTEM_DATA_MNT}
122 "$UMOUNT" ${FAKE_ROOT}
125 #------------------------------------------------
127 #------------------------------------------------
129 echo "delta does not exist ..." >> ${INT_LOG_FILE}
131 echo "${UPI_NO_DELTA_ERROR}" > ${RESULT_FILE}
134 #------------------------------------------------
136 #------------------------------------------------
138 echo "ua does not exist ..." >> ${INT_LOG_FILE}
140 echo "${UPI_NO_UA_ERROR}" > ${RESULT_FILE}
143 #------------------------------------------------
144 # do_create_part_table
145 #------------------------------------------------
146 do_create_part_table() {
148 EMMC_DEVICE="/dev/mmcblk0"
149 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE})
150 TEST=$(echo "$RET_PARTX" | "$TR" -s ' ' | "$SED" -e '1d' -e 's/^ //' | "$CUT" -d ' ' -f 6)
151 if [ "z$TEST" == "z" ]; then
152 RET_PARTX=$("$BLKID" -o full | "$GREP" ${EMMC_DEVICE}p |
153 "$SED" -e 's/\/dev\/mmcblk0p//g' -e 's/\ .*LABEL=\"\(.*\).*$/\1/' |
154 "$CUT" -d '"' -f 1 | "$SED" 's/\:/\ /' |
155 "$TR" '[:lower:]' '[:upper:]' |
158 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE} | "$SED" -e '1d' -e 's/^ //' |
159 "$TR" -s ' ' | "$CUT" -d ' ' -f 1,6 |
160 "$TR" '[:lower:]' '[:upper:]')
162 PART_NUM=$(echo "$RET_PARTX" | "$WC" -l)
164 echo "$PART_NUM" > ${PART_TBL_PATH}
165 echo "$RET_PARTX" >> ${PART_TBL_PATH}
169 #------------------------------------------------
171 #------------------------------------------------
173 echo "fota update start ..." >> ${INT_LOG_FILE}
175 DELTA_DIR=`cat ${DELTA_PATH_FILE}`
176 echo "DELTA_DIR = ${DELTA_DIR}" >> ${INT_LOG_FILE}
178 RESULT_FILE=${FAKE_ROOT}${FOTA_RESULT_DIR}/result
179 if [ -e ${RESULT_FILE} ]; then
180 rm -fr ${RESULT_FILE}
183 UA=${DELTA_DIR}/delta.ua
184 if [ ! -s ${UA} ]; then
191 DELTA=${DELTA_DIR}/delta.tar
192 if [ ! -s ${DELTA} ]; then
198 if [ ! -e ${PART_TBL_PATH} ]; then
199 echo "No partition table" >> ${INT_LOG_FILE}
203 if [ "$FOTA_GUI_ENABLE" = "1" ]; then
204 ${UA} ${DELTA_DIR} ${FOTA_TEMP_DIR} 0
206 ${UA} ${DELTA_DIR} ${FOTA_TEMP_DIR} 1
209 if [ $? -ne 0 ]; then
210 echo "update agent fail!!!" >> ${INT_LOG_FILE}
213 echo "update agent success"
219 #------------------------------------------------
221 #------------------------------------------------
222 init_internal_log() {
224 if [ -e "${INT_LOG_FILE}" ]; then
225 /bin/rm -fr ${INT_LOG_FILE}
230 #------------------------------------------------
232 #------------------------------------------------
235 TEST_DIR=${FAKE_ROOT}${FOTA_LOG_DIR}
236 if [ ! -e ${TEST_DIR} ]; then
237 "$MKDIR" -p ${TEST_DIR}
238 if [ "$?" = "0" ]; then
239 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
243 TEST_DIR=${FAKE_ROOT}${FOTA_RESULT_DIR}
244 if [ ! -e ${TEST_DIR} ]; then
245 "$MKDIR" -p ${TEST_DIR}
246 if [ "$?" = "0" ]; then
247 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
251 TEST_DIR=${FAKE_ROOT}${FOTA_TEMP_DIR}
252 if [ ! -e ${TEST_DIR} ]; then
253 "$MKDIR" -p ${TEST_DIR}
254 if [ "$?" = "0" ]; then
255 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
261 #------------------------------------------------
263 #------------------------------------------------
275 #------------------------------------------------
276 # check_for_rw_power_fail
277 #------------------------------------------------
278 check_for_rw_power_fail() {
279 # Case : Power fail during RW update after RO update
280 if [ -r ${STATUS_FILE} ]; then
281 echo "${STATUS_FILE} exists" >> ${INT_LOG_FILE}
282 /bin/cat ${STATUS_FILE} >> ${INT_LOG_FILE}
285 exec /sbin/fus_rw-init
289 #------------------------------------------------
291 #------------------------------------------------
292 check_for_fota_gui() {
293 if [ -r ${FOTA_GUI} ]; then
294 echo "GUI Enabled" >> ${INT_LOG_FILE}
300 #------------------------------------------------
302 #------------------------------------------------
306 # For debugging - It should be deleted on Release (TODO : tty like ttyS0, S1 should be selected automatically)
307 /sbin/agetty -l /bin/bash -n --keep-baud 115200,38400,9600 ttyS0 linux &
311 check_for_rw_power_fail
313 "$MOUNT" -o remount,rw ${FAKE_ROOT}
317 if [ "$FOTA_GUI_ENABLE" = "1" ]; then
318 export XDG_RUNTIME_DIR=/run
319 export TBM_DISPLAY_SERVER=1
326 if [ "$FOTA_GUI_ENABLE" = "1" ]; then
327 /usr/bin/fota_gui_test -1
331 if [ "$fota_result" = "0" ]; then
332 exec /sbin/fus_rw-init
335 # For debugging - It should be deleted on Release
336 echo "Upgrade FAILED"