Skip to content

Commit

Permalink
layerscape: use wrapped nand_do_upgrade for traverse-ls1043 boards
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
mcbridematt authored and hauke committed Mar 10, 2019
1 parent 17468cc commit 6a2705a
Showing 1 changed file with 15 additions and 50 deletions.
65 changes: 15 additions & 50 deletions target/linux/layerscape/base-files/lib/upgrade/platform.sh
Original file line number Diff line number Diff line change
@@ -1,67 +1,33 @@

#!/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}}')
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
# 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"
Expand All @@ -75,8 +41,7 @@ platform_do_upgrade() {

case "$board" in
traverse,ls1043v | \
traverse,ls1043s | \
traverse,five64)
traverse,ls1043s)
platform_do_upgrade_traverse_nandubi "$ARGV"
;;
*)
Expand All @@ -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}"
}

0 comments on commit 6a2705a

Please sign in to comment.