aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/base-files/lib/upgrade/platform.sh
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/base-files/lib/upgrade/platform.sh')
-rw-r--r--target/linux/layerscape/base-files/lib/upgrade/platform.sh94
1 files changed, 94 insertions, 0 deletions
diff --git a/target/linux/layerscape/base-files/lib/upgrade/platform.sh b/target/linux/layerscape/base-files/lib/upgrade/platform.sh
new file mode 100644
index 0000000000..9cc960a5fc
--- /dev/null
+++ b/target/linux/layerscape/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,94 @@
+#!/bin/sh
+#
+# Copyright 2015-2018 Traverse Technologies
+#
+platform_do_upgrade_traverse_nandubi() {
+ bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}')
+ newbootsys=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
+ 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
+}
+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
+ ;;
+ *)
+ echo "Sysupgrade is not currently supported on $board"
+ ;;
+ esac
+
+ return 1
+}
+platform_do_upgrade() {
+ local board=$(board_name)
+
+ case "$board" in
+ traverse,ls1043v | \
+ traverse,ls1043s | \
+ traverse,five64)
+ platform_do_upgrade_traverse_nandubi "$ARGV"
+ ;;
+ *)
+ echo "Sysupgrade is not currently supported on $board"
+ ;;
+ esac
+}
+platform_pre_upgrade() {
+ # 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}"
+}