. /lib/functions.sh
. /lib/functions/system.sh
+. /usr/share/libubox/jshn.sh
# initialize defaults
export MTD_ARGS=""
return 0
}
-# hooks
-sysupgrade_image_check="fwtool_check_signature fwtool_check_image platform_check_image"
-
if [ $SAVE_OVERLAY = 1 ]; then
[ ! -d /overlay/upper/etc ] && {
echo "Cannot find '/overlay/upper/etc', required for '-c'" >&2
case "$IMAGE" in
http://*|\
https://*)
- wget -O/tmp/sysupgrade.img "$IMAGE"
+ wget -O/tmp/sysupgrade.img "$IMAGE" || exit 1
IMAGE=/tmp/sysupgrade.img
;;
esac
;;
esac
-for check in $sysupgrade_image_check; do
- ( $check "$IMAGE" ) || {
- if [ $FORCE -eq 1 ]; then
- echo "Image check '$check' failed but --force given - will update anyway!" >&2
- break
- else
- echo "Image check '$check' failed." >&2
- exit 1
- fi
- }
-done
+json_load "$(/usr/libexec/validate_firmware_image "$IMAGE")" || {
+ echo "Failed to check image"
+ exit 1
+}
+json_get_var valid "valid"
+[ "$valid" -eq 0 ] && {
+ if [ $FORCE -eq 1 ]; then
+ echo "Image check failed but --force given - will update anyway!" >&2
+ else
+ echo "Image check failed." >&2
+ exit 1
+ fi
+}
if [ -n "$CONF_IMAGE" ]; then
case "$(get_magic_word $CONF_IMAGE cat)" in
exit 0
fi
-if [ $SAVE_PARTITIONS -eq 0 ]; then
- touch /tmp/sysupgrade.always.overwrite.bootdisk.partmap
-else
- rm -f /tmp/sysupgrade.always.overwrite.bootdisk.partmap
-fi
-
install_bin /sbin/upgraded
v "Commencing upgrade. Closing all shell sessions."
printf '%s\x00%s\x00%s' "$RAM_ROOT" "$IMAGE" "$COMMAND" >/tmp/sysupgrade
lock -u /tmp/.failsafe
else
+ force_attr=""
+ [ $FORCE -eq 1 ] && force_attr="\"force\": true,"
+ backup_attr=""
+ [ $SAVE_CONFIG -eq 1 ] && backup_attr="\"backup\": $(json_string $CONF_TAR),"
ubus call system sysupgrade "{
\"prefix\": $(json_string "$RAM_ROOT"),
\"path\": $(json_string "$IMAGE"),
- \"command\": $(json_string "$COMMAND")
+ $force_attr
+ $backup_attr
+ \"command\": $(json_string "$COMMAND"),
+ \"options\": {
+ \"save_partitions\": $SAVE_PARTITIONS
+ }
}"
fi