device_board_set_partition_status $OPPOSITE_AB "ok"
}
+start_clone() {
+ if [ "$(device_board_get_partition_ab_cloned)" -eq "1" ]; then
+ log "[Info] Partitions already cloned"
+ else
+ do_clone
+ fi
+}
+
+clone_recovery() {
+ /bin/device_board_clear_partition_ab_cloned
+ do_clone
+ set_partition_status_ok
+}
+
+check_clone_background_available() {
+ local bootmode=$(device_board_get_boot_mode)
+ local ret_boot_mode=$?
+
+ if [ ${ret_boot_mode} -ne 0 ]; then
+ critical_log "[Error] Cannot get boot mode: ${ret_boot_mode}"
+ exit 1
+ fi
+
+ if [ "${bootmode}" != "normal" ]; then
+ log "[Info] bootmode is not \"normal\": ${bootmode}"
+ exit 0
+ fi
+}
+
+clone_background() {
+ # wait for 60 seconds to wait for bootup
+ sleep 60
+
+ check_clone_available
+ start_clone
+}
+
set -o errexit
trap 'echo "Aborting due to errexit on ${0##*/}:$LINENO. Exit code: $?" >&2' ERR
set -o errtrace -e -o pipefail
flock 9
case $1 in
"recovery")
- /bin/device_board_clear_partition_ab_cloned
- do_clone
- set_partition_status_ok
+ clone_recovery
;;
"background")
- # wait for 60 seconds to wait for bootup
- sleep 60
-
- BOOTMODE=$(device_board_get_boot_mode)
- RET_BOOT_MODE=$?
- if [ ${RET_BOOT_MODE} -ne 0 ]; then
- critical_log "[Error] Cannot get boot mode: ${RET_BOOT_MODE}"
- exit 1
- fi
-
- if [ "${BOOTMODE}" != "normal" ]; then
- log "[Info] bootmode is not \"normal\": ${BOOTMODE}"
- exit 0
- fi
-
- if [ "$(device_board_get_partition_ab_cloned)" -eq "1" ]; then
- log "[Info] Partitions already cloned"
- else
- do_clone
- fi
+ clone_background
;;
*)
- if [ "$(device_board_get_partition_ab_cloned)" -eq "1" ]; then
- log "[Info] Partitions already cloned"
- else
- do_clone
- fi
+ start_clone
;;
esac
) 9> "$FLOCK_PATH"