From 6fbb1a2ff86488ea6777f950d3ea50e02f440739 Mon Sep 17 00:00:00 2001 From: Sunmin Lee Date: Thu, 2 Nov 2017 18:32:24 +0900 Subject: [PATCH] upgrade-trigger: flash some images preceding update A new update type PRE_UA means that the image would be flashed by upgrade-trigger. The upgrade trigger was modified to flash the image according to update type in config file. Change-Id: Ic8eb33b408f3479bdbbedaab8bde180dab5781da Signed-off-by: Sunmin Lee --- packaging/tota-ua.spec | 2 +- scripts/wearable/upgrade-trigger-wearable.sh | 85 +++++++++++++++------------- 2 files changed, 48 insertions(+), 39 deletions(-) diff --git a/packaging/tota-ua.spec b/packaging/tota-ua.spec index ffeb89a..d2e45c8 100755 --- a/packaging/tota-ua.spec +++ b/packaging/tota-ua.spec @@ -1,7 +1,7 @@ Name: tota-ua Summary: fota update agent ExclusiveArch: %{arm} -Version: 1.0.1 +Version: 1.1.0 Release: 0 Group: System License: Apache-2.0 diff --git a/scripts/wearable/upgrade-trigger-wearable.sh b/scripts/wearable/upgrade-trigger-wearable.sh index 95dd6c3..4b2e241 100755 --- a/scripts/wearable/upgrade-trigger-wearable.sh +++ b/scripts/wearable/upgrade-trigger-wearable.sh @@ -4,45 +4,53 @@ FOTA_DIR="$TZ_SYS_GLOBALUSER_DATA/fota/save" STATUS_DIR="/opt/data/recovery" VERSION_FILE="/opt/etc/version" -flash_image() { - echo "Flash new images..." +flash_pre_image() { + echo "Flash images for update..." DEVICE="/dev/mmcblk0" - RAMDISK_PART=("ramdisk.img" "ramdisk" "1024") - RECOVERY_PART=("ramdisk-recovery.img" "ramdisk2" "1024") - RECOVERY_KERN=("zImage-recovery" "recovery" "1024") - -# Flash ramdisk partition - /bin/tar xvfp $1 -C $FOTA_DIR ${RAMDISK_PART[0]} - if [ ! -e "$FOTA_DIR/${RAMDISK_PART[0]}" ]; then - echo "There is no ${RAMDISK_PART[0]}" - else - PART_NUM=$(partx -s $DEVICE | grep ${RAMDISK_PART[1]} | awk '{print $1}') - echo "Flashing ${RAMDISK_PART[0]}..." - dd if="$FOTA_DIR/${RAMDISK_PART[0]}" of="$DEVICE"p"$PART_NUM" bs="${RAMDISK_PART[2]}" - rm -f $FOTA_DIR/${RAMDISK_PART[0]} - fi + CONFIG_FILE="update.cfg" -# Flash recovery partition - /bin/tar xvfp $1 -C $FOTA_DIR ${RECOVERY_PART[0]} - if [ ! -e "$FOTA_DIR/${RECOVERY_PART[0]}" ]; then - echo "There is no ${RECOVERY_PART[0]}" - else - PART_NUM=$(partx -s $DEVICE | grep ${RECOVERY_PART[1]} | awk '{print $1}') - echo "Flashing ${RECOVERY_PART[0]}..." - dd if="$FOTA_DIR/${RECOVERY_PART[0]}" of="$DEVICE"p"$PART_NUM" bs="${RECOVERY_PART[2]}" - rm -f $FOTA_DIR/${RECOVERY_PART[0]} + /bin/tar xvfp $1 -C "$FOTA_DIR" $CONFIG_FILE + if [ ! -e "$FOTA_DIR/$CONFIG_FILE" ]; then + echo "There is no $CONFIG_FILE" + return fi -# Flash recovery kernel - /bin/tar xvfp $1 -C $FOTA_DIR ${RECOVERY_KERN[0]} - if [ ! -e "$FOTA_DIR/${RECOVERY_KERN[0]}" ]; then - echo "There is no ${RECOVERY_KERN[0]}" - else - PART_NUM=$(partx -s $DEVICE | grep ${RECOVERY_KERN[1]} | awk '{print $1}') - echo "Flashing ${RECOVERY_KERN[0]}..." - dd if="$FOTA_DIR/${RECOVERY_KERN[0]}" of="$DEVICE"p"$PART_NUM" bs="${RECOVERY_KERN[2]}" - rm -f $FOTA_DIR/${RECOVERY_KERN[0]} - fi + while read PART_NAME DELTA_NAME TYPE DEV OFFSET SIZE HASH1 HASH2 + do + if [ "$TYPE" = "PRE_UA" ]; then + /bin/tar xvfp $1 -C $FOTA_DIR $DELTA_NAME + if [ ! -e "$FOTA_DIR/$DELTA_NAME" ]; then + echo "There is no delta for $PART_NAME" + continue + fi + + EMMC_DEVICE="/dev/mmcblk0" + PART_NAME_L=$(echo $PART_NAME | /bin/tr '[:upper:]' '[:lower:]') + DEV_NUM=$(/sbin/partx -s $EMMC_DEVICE | grep $PART_NAME_L | \ + { read NUM REST; echo $NUM; }) + if [ -z "$DEV_NUM" ]; then + DEV_NUM=$(/sbin/blkid -L $PART_NAME_L -o device | \ + sed 's/\/dev\/mmcblk0p//') + fi + if [ -z "$DEV_NUM" ]; then + echo "There is no partition for $PART_NAME" + continue + fi + DEV="${EMMC_DEVICE}p${DEV_NUM}" + + echo "Flashing $DELTA_NAME..." + dd if="$FOTA_DIR/$DELTA_NAME" of="$DEV" bs=1024 + rm -f $FOTA_DIR/$DELTA_NAME + + # Remove updated partition from cfg + /bin/cat "$FOTA_DIR/$CONFIG_FILE" | /bin/sed /^$PART_NAME/d \ + > "$FOTA_DIR/${CONFIG_FILE}_tmp" + /bin/mv "$FOTA_DIR/${CONFIG_FILE}_tmp" "$FOTA_DIR/$CONFIG_FILE" + + /bin/tar --delete --file=$1 $CONFIG_FILE + /bin/tar rvf $1 -C $FOTA_DIR $CONFIG_FILE + fi + done < "$FOTA_DIR/$CONFIG_FILE" } write_version_info() { @@ -70,9 +78,10 @@ if [ $? -ne 0 ]; then write_version_info fi -# Flash new images -# - This operation for Tizen 3.0 -flash_image $1 +# Flash images +# - in case of some image was newly included +# - in case of some image should be flashed before update +flash_pre_image $1 # Extract delta.ua echo "Extract delta.ua..." -- 2.7.4