Drop unsupported upgrade type 39/280839/2 accepted/tizen/unified/20221102.172728
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Mon, 5 Sep 2022 12:06:09 +0000 (14:06 +0200)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 28 Oct 2022 09:38:12 +0000 (11:38 +0200)
Non-A/B upgrade is no longer supported

Change-Id: I6131df254750f2ec1c5321c289ca48c10b4b9063

packaging/initrd-recovery.spec
src/bootmode-fota/40-fota.list.in
src/bootmode-fota/CMakeLists.txt
src/bootmode-fota/fota-init.sh
src/bootmode-fota/fus_rw-init.sh [deleted file]

index 14d43d8fc7ac0047e3021b1663050df8e48189d7..c457164ecf61c2ba6b779a7ca42d6d36b2ffe747 100644 (file)
@@ -1,6 +1,6 @@
 Name:           initrd-recovery
 Summary:        Tools for system recovery
-Version:        7.5.1
+Version:        7.5.2
 Release:        0
 Group:          System/Utilities
 License:        Apache-2.0
@@ -103,7 +103,6 @@ rm -rf %{_libdir}/initrd-recovery
 %attr(0775,root,root)%{initrd_recovery_libexec_dir}/mkinitrd-recovery.sh
 %attr(0775,root,root)%{initrd_recovery_libexec_dir}/minireboot
 %{initrd_recovery_libexec_dir}/fota-init.sh
-%{initrd_recovery_libexec_dir}/fus_rw-init.sh
 %{initrd_recovery_libexec_dir}/progress_restart.sh
 %{_sbindir}/bow-restore
 %attr(775,system,system) /opt/data/update
index 0321eb3749f3a02d02073ee5434c608869cc0aa1..67a21f91b765be7218b5514c4218a071c131313e 100644 (file)
@@ -4,7 +4,6 @@ MVWITHLIBS="
 "
 VERBATIMS="
 @INITRD_RECOVERY_LIBEXEC_DIR@/fota-init.sh
-@INITRD_RECOVERY_LIBEXEC_DIR@/fus_rw-init.sh
 @INITRD_RECOVERY_LIBEXEC_DIR@/progress_restart.sh
 "
 
@@ -46,6 +45,5 @@ WITHLIBS="
 SYMLINKS="
 /bin/sh:bash
 /sbin/fota-init:@INITRD_RECOVERY_LIBEXEC_DIR@/fota-init.sh
-/sbin/fus_rw-init:@INITRD_RECOVERY_LIBEXEC_DIR@/fus_rw-init.sh
 /sbin/progress_restart:@INITRD_RECOVERY_LIBEXEC_DIR@/progress_restart.sh
 "
index ce68a53c645787e1bcbef9b5195bcf89d807c318..45b4cd0f16f88e7f9f8e43a849772310780c970b 100644 (file)
@@ -1,6 +1,6 @@
 CONFIGURE_FILE(40-fota.list.in 40-fota.list @ONLY)
 INSTALL(FILES 40-fota.list DESTINATION ${INITRD_RECOVERY_INSTALL_DROPIN_DIR})
 
-INSTALL(FILES fota-init.sh fus_rw-init.sh progress_restart.sh
+INSTALL(FILES fota-init.sh progress_restart.sh
        DESTINATION ${INITRD_RECOVERY_LIBEXEC_DIR}
        PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
index 75e7fb92a2d754a662d419b6add82e7ace1a6f89..49543349c6e16b1e05a597293196cefeff172b84 100755 (executable)
@@ -1,78 +1,30 @@
 #!/bin/bash
 PATH=/bin:/usr/bin:/sbin:/usr/sbin
 
+WITH_USR_PART=
+
 FAKE_ROOT=/run/upgrade-sysroot
+HAL_MNT=hal
 
-UPI_NO_DELTA_ERROR=fb15
-UPI_NO_UA_ERROR=fa17
+SYNC="/bin/sync"
+REBOOT="/sbin/reboot"
 
-STATUS_DIR=${FAKE_ROOT}/opt/data/update
-STATUS_FILE=${STATUS_DIR}/RW.STATUS
-DELTA_PATH_FILE=${STATUS_DIR}/DELTA.PATH
-INT_LOG_DIR=${STATUS_DIR}
+INT_LOG_DIR=${FAKE_ROOT}/opt/data/update
 INT_LOG_FILE=${INT_LOG_DIR}/fota_internal.log
 
-FOTA_LOG_DIR=/opt/data/update
-FOTA_RESULT_DIR=${FOTA_LOG_DIR}
-FOTA_TEMP_DIR=${FOTA_LOG_DIR}
-
-PART_TBL_FILE="part_tbl.txt"
-PART_TBL_PATH=${FOTA_TEMP_DIR}/${PART_TBL_FILE}
-
 CAT="/bin/cat"
-SYNC="/bin/sync"
-MKDIR="/bin/mkdir"
-REBOOT="/sbin/reboot"
 MOUNT="/bin/mount"
-UMOUNT="/bin/umount"
 GREP="/bin/grep"
-CUT="/usr/bin/cut"
-TR="/usr/bin/tr"
 BLKID="/usr/sbin/blkid"
-SORT="/usr/bin/sort"
-SED="/usr/bin/sed"
-WC="/usr/bin/wc"
-LS="/bin/ls"
-VERITYCTL="/usr/bin/verityctl"
-VERITY_HANDLER="/usr/bin/verity_handler"
-
-DMSETUP="dmsetup"
-FSTRIM="fstrim"
-STAT="stat"
-
-FOTA_GUI="/usr/bin/fota_gui"
-FOTA_GUI_ENABLE=
-
-SYSTEM_DATA_MNT=opt
-USER_MNT=opt/usr
-HAL_MNT=hal
-
-SCRIPT_NAME="fota-init.sh"
-UPGRADE_SUCCESS=0
-P_SLOT=""
-SYSROOT_DIR="sysroot"
-#------------------------------------------------
-#       log msg [file]
-#------------------------------------------------
-log() {
-       # log format: [script_name][tag]actual_log
-       LOG="[${SCRIPT_NAME}]$1"
-       if [ "$2" != "" ]; then
-               echo "$LOG" >> "$2"
-       fi
-       echo "$LOG"
-
-       return 0
-}
 
 #------------------------------------------------
 #      do_reboot
 #------------------------------------------------
 do_reboot() {
-       log "Reboot"
+       echo "Reboot"
        "$SYNC"
        "$REBOOT"
-       while true
+       while [ 1 ]
        do
                sleep 1
                echo "."
@@ -120,111 +72,9 @@ get_partition_id() {
     return 0
 }
 
-mount_bow_partition() {
-       LABEL=${1}
-       PARTITION=${2}
-       DIRECTORY=${3}
-       BOWDEV_NAME=bowdev_${LABEL}
-       BOWDEV_PATH=/dev/mapper/${BOWDEV_NAME}
-       SECTORS=$(</sys/class/block/$(lsblk -no NAME ${PARTITION})/size)
-
-       if ! "${DMSETUP}" create "${BOWDEV_NAME}" --table "0 ${SECTORS} bow ${PARTITION}" ; then
-               log "[Error] Cannot create ${BOWDEV_NAME}"
-               return 1
-       fi
-
-       if ! "${MOUNT}" "${BOWDEV_PATH}" "${DIRECTORY}" ; then
-               log "[Error] Cannot mount ${BOWDEV_PATH} into ${DIRECTORY}"
-               return 1
-       fi
-
-       "${FSTRIM}" -v "${DIRECTORY}"
-
-       DM_NUMBER=$(($("${STAT}" -c "0x%T" $(readlink -f "${BOWDEV_PATH}"))))
-       echo 1 > /sys/block/dm-${DM_NUMBER}/bow/state
-       log "[Debug] Mounted ${PARTITION} as DM-BOW" "${INT_LOG_FILE}"
-
-       return 0
-}
-
-mount_f2fs_partition() {
-       LABEL=${1}
-       PARTITION=${2}
-       DIRECTORY=${3}
-       if ! "${MOUNT}" -o checkpoint=disable "${PARTITION}" "${DIRECTORY}" ; then
-               log "[Error] Cannot mount ${PARTITION} into ${DIRECTORY}"
-               return 1
-       fi
-       log "[Debug] Mounted ${PARTITION} as F2FS checkpoint=disable" "${INT_LOG_FILE}"
-
-       return 0
-}
-
-mount_checkpoint_partition() {
-       LABEL=${1}
-       PARTITION=${2}
-       DIRECTORY=${3}
-       FSTYPE=$(lsblk -o FSTYPE -n "${PARTITION}")
-
-       if [ "${FSTYPE}" = "ext4" ]; then
-               if ! mount_bow_partition "${LABEL}" "${PARTITION}" "${DIRECTORY}" ; then
-                       return 1
-               fi
-       elif [ "${FSTYPE}" = "f2fs" ]; then
-               if ! mount_f2fs_partition "${LABEL}" "${PARTITION}" "${DIRECTORY}" ; then
-                       return 1
-               fi
-       else
-               "${MOUNT}" "${PARTITION}" "${DIRECTORY}"
-               log "[Info] Unsupported filesystem ${FSTYPE} on ${PARTITION}" "${INT_LOG_FILE}"
-       fi
-
-       return 0
-}
-
-commit_bow_partition()
-{
-       LABEL=${1}
-
-       BOWDEV_NAME=bowdev_${LABEL}
-       BOWDEV_PATH=/dev/mapper/${BOWDEV_NAME}
-       DM_NUMBER=$(($("${STAT}" -c "0x%T" $(readlink -f "${BOWDEV_PATH}"))))
-       echo 2 > /sys/block/dm-${DM_NUMBER}/bow/state
-       log "[Info] Changes on partition ${LABEL} commited (dm-bow)" "${INT_LOG_FILE}"
-
-       return 0
-}
-
-commit_f2fs_partition()
-{
-       LABEL=${1}
-       PART_SYSTEM_DATA=$(blkid --match-token PARTLABEL="${LABEL}" -o device -l || blkid --match-token LABEL="${LABEL}" -o device -l)
-       "${MOUNT}" -o remount,checkpoint=enable "${PART_SYSTEM_DATA}"
-       log "[Info] Changes on partition ${LABEL} commited (f2fs)" "${INT_LOG_FILE}"
-
-       return 0
-}
-
-commit_partition()
-{
-       LABEL=${1}
-       MNT_POINT=${2}
-       TYPE=$(blkid --match-token PARTLABEL="${LABEL}" -o value -s TYPE || blkid --match-token LABEL="${LABEL}" -o value -s TYPE | tail -n 1)
-       if [ "${TYPE}" = "ext4" ]; then
-               if ! commit_bow_partition "${LABEL}"; then
-                       return 1
-               fi
-       elif [ "${TYPE}" = "f2fs" ]; then
-               if ! commit_f2fs_partition "${LABEL}"; then
-                       return 1
-               fi
-       else
-               log "[Info] Cannot commit ${LABEL}: Unsupported filesystem ${TYPE}" "${INT_LOG_FILE}"
-       fi
-
-       return 0
-}
-
+#------------------------------------------------
+#       mount_rootfs
+#------------------------------------------------
 mount_rootfs()
 {
        /usr/bin/verityctl create rootfs "${PART_ROOTFS}" "${FAKE_ROOT}"
@@ -254,404 +104,57 @@ mount_rootfs()
        return 0
 }
 
-#------------------------------------------------
-#       mount_partitions
-#------------------------------------------------
-mount_partitions() {
-
-       if [[ "${P_SLOT}" != "" ]]
-       then
-               # For A/B Update rootfs should be updated before the system boots in fota mode.
-               # Therefore rootfs should be mounted as RO.
-               # We cannot mount rootfs as RW because mount timestamp would
-               # change and dmverity data would become incorrect
-               if ! mount_rootfs; then
-                       return 1
-               fi
-       else
-               if ! mount_checkpoint_partition rootfs "${PART_ROOTFS}" "${FAKE_ROOT}"; then
-                       return 1
-               fi
-       fi
-
-       if ! mount_checkpoint_partition system-data "${PART_SYSTEM_DATA}" "${FAKE_ROOT}/${SYSTEM_DATA_MNT}"; then
-               return 1
-       fi
-
-       if [ ! "z${PART_USER}" = "z" ]; then
-               if ! mount_checkpoint_partition user "${PART_USER}" "${FAKE_ROOT}/${USER_MNT}"; then
-                       return 1
-               fi
-       fi
-       if [ ! "z${PART_HAL}" = "z" ]; then
-               if [ "${P_SUFFIX}" == "" ]; then
-                       if ! mount_checkpoint_partition hal "${PART_HAL}" "${FAKE_ROOT}/${HAL_MNT}"; then
-                               return 1
-                       fi
-               else
-                       if ! "$MOUNT" -o ro "${PART_HAL}" "${FAKE_ROOT}/${HAL_MNT}"; then
-                               return 1
-                       fi
-               fi
-       fi
-
-       "$MOUNT" -t proc none "${FAKE_ROOT}/proc" &&
-       "$MOUNT" -t sysfs none "${FAKE_ROOT}/sys" &&
-       "$MOUNT" -t devtmpfs devtmpfs "${FAKE_ROOT}/dev" &&
-       "$MOUNT" -t devpts devpts "${FAKE_ROOT}/dev/pts"
-
-       if [ $? -ne 0 ]; then
-               return 1
-       fi
-
-       return 0
-}
-
-umount_bow_partition()
-{
-       LABEL=${1}
-       PART=${2}
-
-       if ! "$UMOUNT" "${PART}"; then
-               return 1
-       fi
-
-       BOWDEV_NAME=bowdev_${LABEL}
-       if ! "${DMSETUP}" remove ${BOWDEV_NAME}; then
-               return 1
-       fi
-
-       return 0
-}
-
-umount_partition()
-{
-       LABEL=${1}
-       DIRECTORY=${2}
-
-       TYPE=$(blkid --match-token PARTLABEL="${LABEL}" -o value -s TYPE || blkid --match-token LABEL="${LABEL}" -o value -s TYPE | tail -n 1)
-       if [ "${TYPE}" = "ext4" ]; then
-               if ! umount_bow_partition "${LABEL}" "${DIRECTORY}"; then
-                       return 1
-               fi
-       else
-               if ! "$UMOUNT" "${DIRECTORY}"; then
-                       return 1
-               fi
-       fi
-
-       return 0
-}
 
 #------------------------------------------------
-#       umount_partitions
+#       mount_hal
 #------------------------------------------------
-umount_partitions() {
-
-       "$UMOUNT" "${FAKE_ROOT}/dev/pts"
-       "$UMOUNT" "${FAKE_ROOT}/dev"
-       "$UMOUNT" "${FAKE_ROOT}/sys"
-       "$UMOUNT" "${FAKE_ROOT}/proc"
-
-       if [ "${P_SUFFIX}" == "" ]; then
-               if [ ! "z${PART_HAL}" = "z" ]; then
-                       if [ "${UPGRADE_SUCCESS}" = "1" ]; then
-                                       if ! commit_partition hal "${FAKE_ROOT}/${HAL_MNT}"; then
-                                               return 1
-                                       fi
-                       fi
-                       if ! umount_partition hal "${FAKE_ROOT}/${HAL_MNT}"; then
-                               return 1
-                       fi
-               fi
-       else
-               if ! "$UMOUNT" "${FAKE_ROOT}/${HAL_MNT}"; then
-                       return 1
-               fi
-       fi
-
-       if [ ! "z${PART_USER}" = "z" ]; then
-               if [ "${UPGRADE_SUCCESS}" = "1" ]; then
-                       if ! commit_partition user "${FAKE_ROOT}/${USER_MNT}"; then
-                               return 1
-                       fi
-               fi
-               if ! umount_partition user "${FAKE_ROOT}/${USER_MNT}"; then
-                       return 1
-               fi
-       fi
-
-       if [ "${UPGRADE_SUCCESS}" = "1" ]; then
-               if ! commit_partition system-data "${FAKE_ROOT}/${SYSTEM_DATA_MNT}"; then
-                       return 1
-               fi
-       fi
-       if ! umount_partition system-data "${FAKE_ROOT}/${SYSTEM_DATA_MNT}"; then
-               return 1
-       fi
-
-       if [[ "${P_SLOT}" != "" ]]
-       then
-               if ! "$UMOUNT" "${FAKE_ROOT}"; then
-                       return 1
-               fi
-       else
-               if [ "${UPGRADE_SUCCESS}" = "1" ]; then
-                       if ! commit_partition rootfs "${FAKE_ROOT}"; then
-                               return 1
-                       fi
-               fi
-               if ! umount_partition rootfs "${FAKE_ROOT}"; then
-                       return 1
-               fi
-       fi
-
-       # close dm-verity
-       if ! /usr/bin/verityctl close rootfs; then
-               return 1
-       fi
-
-       return 0
-}
-
-#------------------------------------------------
-#      handle_no_delta
-#------------------------------------------------
-handle_no_delta() {
-       log "[Error] delta does not exist ..." "${INT_LOG_FILE}"
-       echo "${UPI_NO_DELTA_ERROR}" > "${RESULT_FILE}"
-
-       return 0
-}
-
-#------------------------------------------------
-#      handle_no_ua
-#------------------------------------------------
-handle_no_ua() {
-       log "[Error] ua does not exist ..." "${INT_LOG_FILE}"
-       echo "${UPI_NO_UA_ERROR}" > "${RESULT_FILE}"
-
-       return 0
-}
-
-#------------------------------------------------
-#      do_create_part_table
-#------------------------------------------------
-do_create_part_table() {
-
-       EMMC_DEVICE="/dev/mmcblk0"
-       PART_LIST=$("$BLKID" -o full | "$GREP" "${EMMC_DEVICE}p" |
-                       "$SED" -e 's/\/dev\/mmcblk0p//g' -e 's/\ .*LABEL=\"\(.*\).*$/\1/' |
-                       "$CUT" -d '"' -f 1 | "$SED" 's/\:/\ /' |
-                       "$TR" '[:upper:]' '[:lower:]' |
-                       "$SORT" -k 1 -n)
-       PART_NUM=$(echo "$PART_LIST" | "$WC" -l)
-
-       echo "$PART_NUM" > "${PART_TBL_PATH}"
-       echo "$PART_LIST" >> "${PART_TBL_PATH}"
-       "$SYNC"
-
-       return 0
-}
-
-#------------------------------------------------
-#      do_fota_update
-#------------------------------------------------
-do_fota_update() {
-       log "[Info] fota update start ..." "${INT_LOG_FILE}"
-
-       DELTA_DIR=$("$CAT" "${DELTA_PATH_FILE}")
-       log "[Info] DELTA_DIR = ${DELTA_DIR}" "${INT_LOG_FILE}"
-
-       RESULT_FILE=${FAKE_ROOT}${FOTA_RESULT_DIR}/result
-       if [ -e "${RESULT_FILE}" ]; then
-               rm -fr "${RESULT_FILE}"
-       fi
-
-       UA=${DELTA_DIR}/delta.ua
-       if [ ! -s "${UA}" ]; then
-               handle_no_ua
-               return 1
-       fi
-
-       /bin/chmod +x "${UA}"
-
-       DELTA=${DELTA_DIR}/delta.tar
-       if [ ! -s "${DELTA}" ]; then
-               handle_no_delta
-               return 1
-       fi
-
-       do_create_part_table
-       if [ ! -e "${PART_TBL_PATH}" ]; then
-               log "[Error] No partition table" "${INT_LOG_FILE}"
-               return 1
-       fi
-
-       VERIFY_TOOL=/usr/sbin/img-verifier
-       if [ -e "${VERIFY_TOOL}" ]; then
-               if ! "${VERIFY_TOOL}" -i "${DELTA}" -l "/opt/var/log/last_iv.log"; then
-                       log "[Error] signature verification failed!" "${INT_LOG_FILE}"
-                       return 1
-               else
-                       log "[Info] update package verification success"
-               fi
-       else
-               log "[Error] Warning: No signature verifier... Skip it" "${INT_LOG_FILE}"
-       fi
-
-       FOTA_ARG="1"
-       if [ "$FOTA_GUI_ENABLE" = "1" ]; then
-               FOTA_ARG="0"
-       fi
-       if ! "${UA}" "${DELTA_DIR}" "${FOTA_TEMP_DIR}" "$FOTA_ARG"; then
-               log "[Error] update agent fail!!!" "${INT_LOG_FILE}"
-               return 1
-       else
-               log "[Info] update agent success"
-               return 0
-       fi
-
-}
-
-#------------------------------------------------
-#      clear_internal_log
-#------------------------------------------------
-clear_internal_log() {
-
-       if [ -e "${INT_LOG_FILE}" ]; then
-               /bin/rm -fr "${INT_LOG_FILE}"
-       fi
-
-       return 0
-}
-
-
-#------------------------------------------------
-#      init_fota_dir
-#------------------------------------------------
-init_fota_dir() {
-
-       TEST_DIRS=("${FAKE_ROOT}${FOTA_LOG_DIR}" "${FAKE_ROOT}${FOTA_RESULT_DIR}" "${FAKE_ROOT}${FOTA_TEMP_DIR}")
-       for TEST_DIR in "${TEST_DIRS[@]}"; do
-               if [ ! -e "${TEST_DIR}" ]; then
-                       if "$MKDIR" -p "${TEST_DIR}"; then
-                               log "[Info] Successfully created <${TEST_DIR}>" "${INT_LOG_FILE}"
-                       else
-                               log "[Error] Unable to create <${TEST_DIR}>"
-                       fi
-               fi
-       done
-
-       return 0
-}
-
-#------------------------------------------------
-#      check_for_rw_power_fail
-#------------------------------------------------
-check_for_rw_power_fail() {
-       # Case : Power fail during RW update after RO update
-       if [ -r "${STATUS_FILE}" ]; then
-               log "[Info] ${STATUS_FILE} exists" "${INT_LOG_FILE}"
-               log "[Info] Status file: $("$CAT" "${STATUS_FILE}")" "${INT_LOG_FILE}"
-               UPGRADE_SUCCESS=1
-               "$SYNC"
-               umount_partitions
-               exec /sbin/fus_rw-init
-       fi
-
-       return 1
-}
+mount_hal() {
+    if [ "z${PART_HAL}" = "z" ]; then
+        # No hal partition
+        return 2
+    fi
 
-#------------------------------------------------
-#      check_for_fota_gui
-#------------------------------------------------
-check_for_fota_gui() {
-       if [ -r "${FOTA_GUI}" ]; then
-               log "[Info] GUI Enabled" "${INT_LOG_FILE}"
-               FOTA_GUI_ENABLE=1
-       fi
+    if ! "$MOUNT" -o ro "${PART_HAL}" "${FAKE_ROOT}/${HAL_MNT}"; then
+           return 1
+    fi
 
-       return 0
+    return 0
 }
 
 #------------------------------------------------
-#      check_debug_mode
+#       mount_partitions
 #------------------------------------------------
-check_debug_mode() {
-       DEBUG_MODE_FILE=${FAKE_ROOT}/opt/usr/.upgdebug_ro
-       if [ -f "${DEBUG_MODE_FILE}" ]; then
-               DEBUG_MODE_FILE_OWNER=$("${LS}" -l "${DEBUG_MODE_FILE}" | "${CUT}" -d " " -f 3)
-               if [ "${DEBUG_MODE_FILE_OWNER}" = "0" ]; then
-                       log "[Info] Enter RO debug mode"
-                       log "[Info] If you want to continue FOTA, please remove ${DEBUG_MODE_FILE}"
-                       # Wait until debug mode file is removed
-                       while [ -f "${DEBUG_MODE_FILE}" ]; do
-                               sleep 3
-                       done
-                       log "[Info] Debug mode file is removed. Resume FOTA"
-               else
-                       log "[Info] Warning: somebody made non-root debug mode file... ignore it"
-               fi
-       fi
+mount_partitions() {
+    get_partition_id &&
+    mount_rootfs &&
+    mount_hal &&
+    "$MOUNT" -t proc none ${FAKE_ROOT}/proc &&
+    "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys &&
+    "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev &&
+    "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts &&
+    "$MOUNT" -t tmpfs tmpfs ${FAKE_ROOT}/tmp
+
+    if [ $? -ne 0 ]; then
+           return 1
+    fi
 
-       return 0
+    return 0
 }
 
 #------------------------------------------------
-#      remake_hash_table
+#      do_rw_update
 #------------------------------------------------
-remake_hash_table() {
-       if [ -f "${VERITYCTL}" ]; then
-               if [ -f "${VERITY_HANDLER}" ]; then
-                       "$MOUNT" -o remount,ro "${FAKE_ROOT}"
+do_rw_update() {
+       echo "Change into rw update mode" >> ${INT_LOG_FILE}
 
-                       if ! "${VERITY_HANDLER}" "${PART_ROOTFS}"; then
-                               log "[Error] verity-handler fail!!!"
-                               return 1
-                       else
-                               log "[Info] verity-handler success"
-                               return 0
-                       fi
-               else
-                       log "[Error] Warning: ${VERITYCTL} exists but ${VERITY_HANDLER} does not exists"
-                       return 2
-               fi
-       else
-               log "[Info] verityctl does not exist. Skip hash remaking"
-               return 0
+       /sbin/progress_restart RW &
+       # Go to system-update.target
+       if [ $$ = 1 ]; then
+               cd ${FAKE_ROOT}
+               exec /bin/chroot . /usr/lib/systemd/systemd --unit=system-update.target $@
        fi
+       do_reboot
 }
-
-#------------------------------------------------
-#      mark_rw_update
-#------------------------------------------------
-mark_rw_update() {
-       echo "start" > ${STATUS_FILE}
-       return 0
-}
-
-#------------------------------------------------
-#      jump_to_ramdisk
-#------------------------------------------------
-jump_to_ramdisk() {
-       "${MOUNT}" "${PART_RAMDISK}" "${FAKE_ROOT}"
-       cd "${FAKE_ROOT}"
-       mkdir -p "${SYSROOT_DIR}"
-       ./sbin/pivot_root . ./${SYSROOT_DIR}
-       ./bin/mount -M ./${SYSROOT_DIR}/dev /dev
-       ./bin/mount -M ./${SYSROOT_DIR}/sys /sys
-       ./bin/mount -M ./${SYSROOT_DIR}/proc /proc
-       ./bin/umount -l ./${SYSROOT_DIR}
-       ./bin/umount -l /dev
-       ./bin/umount -l /sys
-       ./bin/umount -l /proc
-       exec chroot . /sbin/init
-       # WARNING! never rearch
-       log "[Error] jump_to_ramdisk() failed"
-       exec /bin/sh
-}
-
 #------------------------------------------------
 #      prepare_fakeroot
 #------------------------------------------------
@@ -660,81 +163,14 @@ prepare_fakeroot() {
     return 0
 }
 
-#------------------------------------------------
-#      log boot info
-#------------------------------------------------
-function log_boot_info() {
-    CMDLINE_ROOT=$([[ $(</proc/cmdline) =~ (root=[^ ]*) ]]; echo ${BASH_REMATCH[1]})
-    CMDLINE_PARTITION_AB=$([[ $(</proc/cmdline) =~ (partition_ab=[ab]) ]]; echo ${BASH_REMATCH[1]})
-    CMDLINE_BOOTMODE=$([[ $(</proc/cmdline) =~ (bootmode=[^ ]*) ]]; echo ${BASH_REMATCH[1]})
-    log "[Info] Initrd-fota booting (/proc/cmdline $CMDLINE_BOOTMODE $CMDLINE_PARTITION_AB $CMDLINE_ROOT)"
-    return 0
-}
-
 #------------------------------------------------
 #      Main Routine Start
 #------------------------------------------------
-
-get_partition_id
-
-if [ "${P_SLOT}" != "" ]
-then
-       log "[Info] FOTA with A/B detected - skip RO update"
-       exec /sbin/fus_rw-init
-fi
-
 prepare_fakeroot
+mount_partitions
 
-if ! mount_partitions ; then
-       umount_partitions
-       log "[Error] Upgrade failed"
-       do_reboot
-fi
-
-log_boot_info
-
-# For debugging - It should be deleted on Release
-/sbin/agetty -l /bin/bash -n --keep-baud 115200,38400,9600 console linux &
-
-check_debug_mode
+echo "rw update mode start ..." >> ${INT_LOG_FILE}
+"$SYNC"
 
-clear_internal_log
+do_rw_update
 
-check_for_rw_power_fail
-
-"$MOUNT" -o remount,rw "${FAKE_ROOT}"
-init_fota_dir
-
-check_for_fota_gui
-if [ "$FOTA_GUI_ENABLE" = "1" ]; then
-       export XDG_RUNTIME_DIR=/run
-       export TBM_DISPLAY_SERVER=1
-
-       /usr/bin/fota_gui &
-       /usr/bin/sleep 2
-fi
-/sbin/progress_restart RO &
-do_fota_update
-fota_result=$?
-if [ "$fota_result" = "0" ]; then
-       /bin/rm -fr "${DELTA_DIR:?}"/*
-fi
-
-remake_hash_table
-remake_result=$?
-
-RO_PROGRESS_FILE=/tmp/upgrade/ro_progress
-if [ -f "${RO_PROGRESS_FILE}" ]; then
-       echo -1 > "${RO_PROGRESS_FILE}"
-fi
-
-if [ "$fota_result" = "0" ] && [ "$remake_result" = "0" ]; then
-       UPGRADE_SUCCESS=1
-       mark_rw_update
-       umount_partitions
-       exec /sbin/fus_rw-init
-else
-       umount_partitions
-       log "[Error] Upgrade FAILED"
-       do_reboot
-fi
diff --git a/src/bootmode-fota/fus_rw-init.sh b/src/bootmode-fota/fus_rw-init.sh
deleted file mode 100755 (executable)
index 4954334..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-#!/bin/bash
-PATH=/bin:/usr/bin:/sbin:/usr/sbin
-
-WITH_USR_PART=
-
-FAKE_ROOT=/run/upgrade-sysroot
-HAL_MNT=hal
-
-SYNC="/bin/sync"
-REBOOT="/sbin/reboot"
-
-INT_LOG_DIR=${FAKE_ROOT}/opt/data/update
-INT_LOG_FILE=${INT_LOG_DIR}/fota_internal.log
-
-CAT="/bin/cat"
-MOUNT="/bin/mount"
-GREP="/bin/grep"
-BLKID="/usr/sbin/blkid"
-
-#------------------------------------------------
-#      do_reboot
-#------------------------------------------------
-do_reboot() {
-       echo "Reboot"
-       "$SYNC"
-       "$REBOOT"
-       while [ 1 ]
-       do
-               sleep 1
-               echo "."
-       done
-}
-
-#------------------------------------------------
-#       get partition id
-#------------------------------------------------
-get_partition_id() {
-    P_SLOT=$([[ $(</proc/cmdline) =~ partition_ab=([ab]) ]]; echo ${BASH_REMATCH[1]})
-    P_SUFFIX=""
-
-    if [ "${P_SLOT}" != "" ]; then
-        P_SUFFIX="_${P_SLOT}"
-        echo "Using A/B slot: ${P_SLOT}"
-    fi
-
-    PART_ROOTFS=`/sbin/blkid -t PARTLABEL=rootfs${P_SUFFIX} -o device -l`
-    if [ x$PART_ROOTFS = "x" ]
-    then
-        PART_ROOTFS=`/sbin/blkid -L rootfs`
-    fi
-
-    PART_SYSTEM_DATA=`/sbin/blkid -t PARTLABEL=system-data -o device -l`
-    if [ x$PART_SYSTEM_DATA = "x" ]
-    then
-        PART_SYSTEM_DATA=`/sbin/blkid -L system-data`
-    fi
-
-    PART_RAMDISK=`/sbin/blkid -t PARTLABEL=ramdisk${P_SUFFIX} -o device -l`
-    if [ x$PART_RAMDISK = "x" ]
-    then
-        PART_RAMDISK=`/sbin/blkid -L ramdisk`
-    fi
-
-    PART_HAL=`/sbin/blkid -t PARTLABEL=hal${P_SUFFIX} -o device -l`
-    if [ x$PART_HAL = "x" ]
-    then
-        PART_HAL=`/sbin/blkid -L hal`
-    fi
-
-    PART_USER=$("$BLKID" --match-token PARTLABEL=user -o device -l || "$BLKID" --match-token LABEL=user -o device -l)
-
-    return 0
-}
-
-#------------------------------------------------
-#       mount_rootfs
-#------------------------------------------------
-mount_rootfs()
-{
-       /usr/bin/verityctl create rootfs "${PART_ROOTFS}" "${FAKE_ROOT}"
-        case $? in
-            0)
-                echo "verifyboot: disabled"
-                # do nothing
-                ;;
-            1)
-                echo "verityboot: enabled";
-                return
-                ;;
-            2)
-                echo "verifyboot: enabled but corrupted"
-                # reboot
-               do_reboot
-                ;;
-            3)
-                echo "verifyboot: disabling"
-                ;;
-        esac
-
-       if ! "$MOUNT" -o ro "${PART_ROOTFS}" "${FAKE_ROOT}"; then
-               return 1
-       fi
-
-       return 0
-}
-
-
-#------------------------------------------------
-#       mount_hal
-#------------------------------------------------
-mount_hal() {
-    if [ "z${PART_HAL}" = "z" ]; then
-        # No hal partition
-        return 2
-    fi
-
-    if ! "$MOUNT" -o ro "${PART_HAL}" "${FAKE_ROOT}/${HAL_MNT}"; then
-           return 1
-    fi
-
-    return 0
-}
-
-#------------------------------------------------
-#       mount_partitions
-#------------------------------------------------
-mount_partitions() {
-    get_partition_id &&
-    mount_rootfs &&
-    mount_hal &&
-    "$MOUNT" -t proc none ${FAKE_ROOT}/proc &&
-    "$MOUNT" -t sysfs none ${FAKE_ROOT}/sys &&
-    "$MOUNT" -t devtmpfs devtmpfs ${FAKE_ROOT}/dev &&
-    "$MOUNT" -t devpts devpts ${FAKE_ROOT}/dev/pts &&
-    "$MOUNT" -t tmpfs tmpfs ${FAKE_ROOT}/tmp
-
-    if [ $? -ne 0 ]; then
-           return 1
-    fi
-
-    return 0
-}
-
-#------------------------------------------------
-#      do_rw_update
-#------------------------------------------------
-do_rw_update() {
-       echo "Change into rw update mode" >> ${INT_LOG_FILE}
-
-       /sbin/progress_restart RW &
-       # Go to system-update.target
-       if [ $$ = 1 ]; then
-               cd ${FAKE_ROOT}
-               exec /bin/chroot . /usr/lib/systemd/systemd --unit=system-update.target $@
-       fi
-       do_reboot
-}
-#------------------------------------------------
-#      prepare_fakeroot
-#------------------------------------------------
-prepare_fakeroot() {
-    mkdir -p ${FAKE_ROOT}
-    return 0
-}
-
-#------------------------------------------------
-#      Main Routine Start
-#------------------------------------------------
-prepare_fakeroot
-mount_partitions
-
-echo "rw update mode start ..." >> ${INT_LOG_FILE}
-"$SYNC"
-
-do_rw_update
-