sync
[ -f "$conf_tar" ] && nand_restore_config "$conf_tar"
echo "sysupgrade successful"
+ umount -a
reboot -f
}
if [ ! "$mtdnum" ]; then
echo "cannot find mtd device $CI_UBIPART"
+ umount -a
reboot -f
fi
nand_do_upgrade_success
}
+nand_board_name() {
+ if type 'platform_nand_board_name' >/dev/null 2>/dev/null; then
+ platform_nand_board_name
+ return
+ fi
+
+ cat /tmp/sysinfo/board_name
+}
+
nand_upgrade_tar() {
local tar_file="$1"
- local board_name="$(cat /tmp/sysinfo/board_name)"
+ local board_name="$(nand_board_name)"
local kernel_mtd="$(find_mtd_index $CI_KERNPART)"
local kernel_length=`(tar xf $tar_file sysupgrade-$board_name/kernel -O | wc -c) 2> /dev/null`
local has_kernel=1
local has_env=0
- [ "kernel_length" = 0 -o -z "$kernel_mtd" ] || {
+ [ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && {
tar xf $tar_file sysupgrade-$board_name/kernel -O | mtd write - $CI_KERNPART
}
- [ "kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel=0
+ [ "$kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel=0
nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "$has_kernel" "$has_env"
nand_do_upgrade_stage2() {
local file_type=$(identify $1)
+ if type 'platform_nand_pre_upgrade' >/dev/null 2>/dev/null; then
+ platform_nand_pre_upgrade "$1"
+ fi
+
[ ! "$(find_mtd_index "$CI_UBIPART")" ] && CI_UBIPART="rootfs"
- [ "$file_type" = "ubi" ] && nand_upgrade_ubinized $1
- [ "$file_type" = "ubifs" ] && nand_upgrade_ubifs $1
- nand_upgrade_tar $1
+ case "$file_type" in
+ "ubi") nand_upgrade_ubinized $1;;
+ "ubifs") nand_upgrade_ubifs $1;;
+ *) nand_upgrade_tar $1;;
+ esac
}
nand_upgrade_stage2() {
exit 0
}
}
-append sysupgrade_pre_upgrade nand_upgrade_stage1
# Check if passed file is a valid one for NAND sysupgrade. Currently it accepts
# 3 types of files:
# MAGIC
# 2) UBIFS - should contain UBIFS partition that will replace "rootfs" volume,
# header is checked for the proper MAGIC
-# 3) TRX - archive has to include "sysupgrade-BOARD" directory with a non-empty
+# 3) TAR - archive has to include "sysupgrade-BOARD" directory with a non-empty
# "CONTROL" file (at this point its content isn't verified)
#
# You usually want to call this function in platform_check_image.
#
-# $(1): board name, used in case of passing TRX file
+# $(1): board name, used in case of passing TAR file
# $(2): file to be checked
nand_do_platform_check() {
local board_name="$1"
return 1
}
- echo -n $2 > /tmp/sysupgrade-nand-path
- cp /sbin/upgraded /tmp/
-
return 0
}
+
+# Start NAND upgrade process
+#
+# $(1): file to be used for upgrade
+nand_do_upgrade() {
+ echo -n $1 > /tmp/sysupgrade-nand-path
+ cp /sbin/upgraded /tmp/
+ nand_upgrade_stage1
+}