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}
32 PARTX="/usr/sbin/partx"
33 BLKID="/usr/sbin/blkid"
39 #------------------------------------------------
41 #------------------------------------------------
43 EMMC_DEVICE="/dev/mmcblk0"
44 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE})
45 TEST=$(IFS=; echo $RET_PARTX | "$AWK" 'NR>1' | "$AWK" '{print $6}')
46 if [ "z$TEST" == "z" ]; then
47 PART_ROOTFS=$("$BLKID" -L "rootfs" -o device)
48 PART_SYSTEM_DATA=$("$BLKID" -L "system-data" -o device)
49 PART_USER=$("$BLKID" -L "user" -o device)
51 PART_ROOTFS=${EMMC_DEVICE}p$(IFS=; echo $RET_PARTX | "$AWK" 'tolower($6) == "rootfs" {print $1}')
52 PART_SYSTEM_DATA=${EMMC_DEVICE}p$(IFS=; echo $RET_PARTX | "$AWK" 'tolower($6) == "system-data" {print $1}')
53 PART_USER=${EMMC_DEVICE}p$(IFS=; echo $RET_PARTX | "$AWK" 'tolower($6) == "user" {print $1}')
57 #------------------------------------------------
59 #------------------------------------------------
63 "$MOUNT" -t ext4 -o ro ${PART_ROOTFS} ${FAKE_ROOT}
64 "$MOUNT" -t ext4 ${PART_SYSTEM_DATA} ${FAKE_ROOT}/${SYSTEM_DATA_MNT}
65 "$MOUNT" -t ext4 ${PART_USER} ${FAKE_ROOT}/${USER_MNT}
67 "$MOUNT" -t proc none ${FAKE_ROOT}/proc
68 "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys
69 "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev
70 "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts
73 #------------------------------------------------
75 #------------------------------------------------
78 "$UMOUNT" ${FAKE_ROOT}/dev/pts
79 "$UMOUNT" ${FAKE_ROOT}/dev
80 "$UMOUNT" ${FAKE_ROOT}/sys
81 "$UMOUNT" ${FAKE_ROOT}/proc
83 "$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 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE})
113 TEST=$(IFS=; echo $RET_PARTX | "$AWK" 'NR>1' | "$AWK" '{print $6}')
114 if [ "z$TEST" == "z" ]; then
115 RET_PARTX=$("$BLKID" -o full | "$GREP" ${EMMC_DEVICE}p | "$SED" 's/\/dev\/mmcblk0p//g' |
116 "$AWK" '{for (n=1;n<=NF;n++) if($n ~ "LABEL") print $1 " " toupper($n)}' |
117 "$SED" 's/LABEL=//g' | "$SED" 's/[\"\:]//g' | "$SORT" -k 1 -n)
119 RET_PARTX=$("$PARTX" -s ${EMMC_DEVICE} | "$AWK" 'NR>1' | "$AWK" '{print $1 " " toupper($6)}')
121 PART_NUM=$(echo "$RET_PARTX" | "$AWK" 'END{print FNR}')
123 echo "$PART_NUM" > ${PART_TBL_PATH}
124 echo "$RET_PARTX" >> ${PART_TBL_PATH}
128 #------------------------------------------------
130 #------------------------------------------------
132 echo "fota update start ..." >> ${INT_LOG_FILE}
134 DELTA_DIR=`cat ${DELTA_PATH_FILE}`
135 echo "DELTA_DIR = ${DELTA_DIR}" >> ${INT_LOG_FILE}
137 RESULT_FILE=${FAKE_ROOT}${FOTA_RESULT_DIR}/result
138 if [ -e ${RESULT_FILE} ]; then
139 rm -fr ${RESULT_FILE}
142 UA=${DELTA_DIR}/delta.ua
143 if [ ! -s ${UA} ]; then
150 DELTA=${DELTA_DIR}/delta.tar
151 if [ ! -s ${DELTA} ]; then
157 if [ ! -e ${PART_TBL_PATH} ]; then
158 echo "No partition table" >> ${INT_LOG_FILE}
162 ${UA} ${DELTA_DIR} ${FOTA_TEMP_DIR} 0
163 if [ $? -ne 0 ]; then
164 echo "update agent fail!!!" >> ${INT_LOG_FILE}
167 echo "update agent success"
173 #------------------------------------------------
175 #------------------------------------------------
176 init_internal_log() {
178 if [ -e "${INT_LOG_FILE}" ]; then
179 /bin/rm -fr ${INT_LOG_FILE}
184 #------------------------------------------------
186 #------------------------------------------------
189 TEST_DIR=${FAKE_ROOT}${FOTA_LOG_DIR}
190 if [ ! -e ${TEST_DIR} ]; then
191 "$MKDIR" -p ${TEST_DIR}
192 if [ "$?" = "0" ]; then
193 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
197 TEST_DIR=${FAKE_ROOT}${FOTA_RESULT_DIR}
198 if [ ! -e ${TEST_DIR} ]; then
199 "$MKDIR" -p ${TEST_DIR}
200 if [ "$?" = "0" ]; then
201 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
205 TEST_DIR=${FAKE_ROOT}${FOTA_TEMP_DIR}
206 if [ ! -e ${TEST_DIR} ]; then
207 "$MKDIR" -p ${TEST_DIR}
208 if [ "$?" = "0" ]; then
209 echo "success to create ${TEST_DIR}" >> ${INT_LOG_FILE}
215 #------------------------------------------------
217 #------------------------------------------------
229 #------------------------------------------------
230 # check_for_rw_power_fail
231 #------------------------------------------------
232 check_for_rw_power_fail() {
233 # Case : Power fail during RW update after RO update
234 if [ -r ${STATUS_FILE} ]; then
235 echo "${STATUS_FILE} exists" >> ${INT_LOG_FILE}
236 /bin/cat ${STATUS_FILE} >> ${INT_LOG_FILE}
239 exec /sbin/fus_rw-init
243 #------------------------------------------------
245 #------------------------------------------------
249 # For debugging - It should be deleted on Release (TODO : tty like ttyS0, S1 should be selected automatically)
250 /sbin/agetty -l /bin/bash -n --keep-baud 115200,38400,9600 ttyS0 linux &
254 check_for_rw_power_fail
256 "$MOUNT" -o remount,rw ${FAKE_ROOT}
263 if [ "$fota_result" = "0" ]; then
264 exec /sbin/fus_rw-init
267 # For debugging - It should be deleted on Release
268 echo "Upgrade FAILED"