+
#!/bin/sh
#
-# Copyright 2015-2018 Traverse Technologies
+# Copyright 2015-2019 Traverse Technologies
#
platform_do_upgrade_traverse_nandubi() {
bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}')
if [ "$bootsys" -eq "2" ]; then
newbootsys=1
fi
- mkdir -p /tmp/image
- cd /tmp/image
- get_image "$1" > image.tar
- ls -la image.tar
- files=$(tar -tf image.tar)
- echo "Files in image:"
- echo $files
- for f in $files
- do
- part_name=$(echo $f | awk -F '/' '{{print $2}}')
- if [ -z "$part_name" ] || [ "$part_name" = "CONTROL" ]; then
- continue
- fi
-
- [ "$part_name" = "root" ] && part_name="rootfs"
- volume=$part_name
- if [ "$part_name" = "kernel" ] || [ "$part_name" = "rootfs" ]; then
- volume="${part_name}${newbootsys}"
- fi
- volume_id=$(ubinfo -d 0 --name $volume | awk '/Volume ID/ {print $3}')
- file_size=$(tar -tvf image.tar $f | awk '{{print $3}}')
- echo "$f size $file_size"
- tar -xOf image.tar $f | ubiupdatevol -s $file_size /dev/ubi0_$volume_id -
-
- echo "$volume upgraded"
- done
+ # If nand_do_upgrade succeeds, we don't have an opportunity to add any actions of
+ # our own, so do it here and set back on failure
+ echo "Setting bootsys to #${newbootsys}"
fw_setenv bootsys $newbootsys
- echo "Upgrade complete"
-}
-platform_copy_config() {
- bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}')
- rootvol=rootfs$bootsys
- volume_id=$(ubinfo -d 0 --name $rootvol | awk '/Volume ID/ {print $3}')
- mkdir -p /mnt/oldsys
- mount -t ubifs -o rw,noatime /dev/ubi0_$volume_id /mnt/oldsys
- cp -af "$CONF_TAR" /mnt/oldsys
- umount /mnt/oldsys
+ CI_UBIPART="nandubi"
+ CI_KERNPART="kernel${newbootsys}"
+ CI_ROOTPART="rootfs${newbootsys}"
+ nand_do_upgrade "$ARGV" || (echo "Upgrade failed, setting bootsys ${bootsys}" && fw_setenv bootsys $bootsys)
+
}
platform_check_image() {
local board=$(board_name)
case "$board" in
traverse,ls1043v | \
- traverse,ls1043s | \
- traverse,five64)
- local tar_file="$1"
- local kernel_length=$( (tar xf $tar_file sysupgrade-traverse-five64/kernel -O | wc -c) 2> /dev/null)
- local rootfs_length=$( (tar xf $tar_file sysupgrade-traverse-five64/root -O | wc -c) 2> /dev/null)
- [ "$kernel_length" -eq 0 -o "$rootfs_length" -eq 0 ] && {
- echo "The upgrade image is corrupt."
- return 1
- }
- return 0
+ traverse,ls1043s)
+ nand_do_platform_check "traverse-ls1043" $1
+ return $?
;;
*)
echo "Sysupgrade is not currently supported on $board"
case "$board" in
traverse,ls1043v | \
- traverse,ls1043s | \
- traverse,five64)
+ traverse,ls1043s)
platform_do_upgrade_traverse_nandubi "$ARGV"
;;
*)
# Force the creation of fw_printenv.lock
mkdir -p /var/lock
touch /var/lock/fw_printenv.lock
-
+
export RAMFS_COPY_BIN="/usr/sbin/fw_printenv /usr/sbin/fw_setenv /usr/sbin/ubinfo /bin/echo ${RAMFS_COPY_BIN}"
export RAMFS_COPY_DATA="/etc/fw_env.config /var/lock/fw_printenv.lock ${RAMFS_COPY_DATA}"
}