. /lib/upgrade/nand.sh
inteno_do_upgrade () {
- local tar_file=$1
- local cmd=cat
- # WARNING: This fails if tar contains more than one 'sysupgrade-*' directory.
- local board_dir="$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$')"
- board_dir="${board_dir%/}"
- tar -xaf "$tar_file"
-
# get the size of the new bootfs
- local _bootfs_size=$(wc -c < "$board_dir/kernel")
+ local _bootfs_size=$(tar -tvf $1 | grep kernel | awk '{print $3}')
[ -n "$_bootfs_size" -a "$_bootfs_size" -gt "0" ] || nand_do_upgrade_failed
# remove existing rootfses and recreate rootfs_0
ubirmvol /dev/ubi0 --name=rootfs_data > /dev/null 2>&1
ubimkvol /dev/ubi0 --type=static --size=${_bootfs_size} --name=rootfs_0
- # update the rootfs_0 contents
- local _kern_ubivol=$( nand_find_volume "ubi0" "rootfs_0" )
- ubiupdatevol "/dev/$_kern_ubivol" "$board_dir/kernel"
-
fw_setenv root_vol rootfs_0
fw_setenv boot_cnt_primary 0
fw_setenv boot_cnt_alt 0
# proceed to upgrade the default way
- CI_KERNPART=none
+ CI_KERNPART=rootfs_0
nand_do_upgrade "$1"
}