aboutsummaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorMathew McBride <matt@traverse.com.au>2019-03-04 16:05:27 +1100
committerHauke Mehrtens <hauke@hauke-m.de>2019-03-10 17:48:23 +0100
commit6a2705a52f794cf3fd6e1d217224c13455aeedea (patch)
treef9414eede1cfd402f3ee55474cdbd2286fddf23c /target
parent17468cc090a276819a3e62a2b88d5284fbfd285c (diff)
downloadupstream-6a2705a52f794cf3fd6e1d217224c13455aeedea.tar.gz
upstream-6a2705a52f794cf3fd6e1d217224c13455aeedea.tar.bz2
upstream-6a2705a52f794cf3fd6e1d217224c13455aeedea.zip
layerscape: use wrapped nand_do_upgrade for traverse-ls1043 boards
Traverse LS1043 boards are set up with a dual-system layout, rootfs{1,2} and kernel{1,2}. nand_do_upgrade can do the image replacement work we were doing before as long as we give it the partition names. This greatly simplifies the /lib/upgrade/platform.sh. Signed-off-by: Mathew McBride <matt@traverse.com.au>
Diffstat (limited to 'target')
-rw-r--r--target/linux/layerscape/base-files/lib/upgrade/platform.sh65
1 files changed, 15 insertions, 50 deletions
diff --git a/target/linux/layerscape/base-files/lib/upgrade/platform.sh b/target/linux/layerscape/base-files/lib/upgrade/platform.sh
index 9cc960a5fc..1c924997e6 100644
--- a/target/linux/layerscape/base-files/lib/upgrade/platform.sh
+++ b/target/linux/layerscape/base-files/lib/upgrade/platform.sh
@@ -1,6 +1,7 @@
+
#!/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}}')
@@ -8,60 +9,25 @@ platform_do_upgrade_traverse_nandubi() {
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"
@@ -75,8 +41,7 @@ platform_do_upgrade() {
case "$board" in
traverse,ls1043v | \
- traverse,ls1043s | \
- traverse,five64)
+ traverse,ls1043s)
platform_do_upgrade_traverse_nandubi "$ARGV"
;;
*)
@@ -88,7 +53,7 @@ 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}"
}