mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
e3eaf52ba3
The Sercomm devices don't need the jffs2 cleanmarkers for the kernel partition. With the stock firmware they are only added when the bootloader partition is upgraded. Furthermore, on the Sercomm H500-s, the specific cfe_jffs2_upgrade_tar function causes OOB corruption. As a result of this, combined with the nature of the mtdsplit driver, the upgrade procedure ends in a bricked device. Use the generic nand_do_upgrade provided by the OpenWrt common functions. Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
88 lines
1.9 KiB
Bash
88 lines
1.9 KiB
Bash
PART_NAME=linux
|
|
REQUIRE_IMAGE_METADATA=0
|
|
|
|
platform_check_image() {
|
|
[ "$#" -gt 1 ] && return 1
|
|
|
|
case "$(board_name)" in
|
|
comtrend,vg-8050|\
|
|
comtrend,vr-3032u|\
|
|
huawei,hg253s-v2|\
|
|
netgear,dgnd3700-v2|\
|
|
sercomm,ad1018|\
|
|
sercomm,h500-s-lowi|\
|
|
sercomm,h500-s-vfes)
|
|
# NAND sysupgrade
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
case "$(get_magic_word "$1")" in
|
|
3600|3700|3800)
|
|
# CFE tag versions
|
|
return 0
|
|
;;
|
|
*)
|
|
echo "Invalid image type. Please use only .bin files"
|
|
return 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
cfe_jffs2_upgrade_tar() {
|
|
local tar_file="$1"
|
|
local kernel_mtd="$(find_mtd_index $CI_KERNPART)"
|
|
|
|
if [ -z "$kernel_mtd" ]; then
|
|
echo "$CI_KERNPART partition not found"
|
|
return 1
|
|
fi
|
|
|
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
|
|
local kernel_length=$(tar xf $tar_file ${board_dir}/kernel -O | wc -c 2> /dev/null)
|
|
local rootfs_length=$(tar xf $tar_file ${board_dir}/root -O | wc -c 2> /dev/null)
|
|
|
|
if [ "$kernel_length" = 0 ]; then
|
|
echo "kernel cannot be empty"
|
|
return 1
|
|
fi
|
|
|
|
flash_erase -j /dev/mtd${kernel_mtd} 0 0
|
|
tar xf $tar_file ${board_dir}/kernel -O | nandwrite /dev/mtd${kernel_mtd} -
|
|
|
|
local rootfs_type="$(identify_tar "$tar_file" ${board_dir}/root)"
|
|
|
|
nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "0" "0"
|
|
|
|
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
|
|
|
local root_ubivol="$(nand_find_volume $ubidev $CI_ROOTPART)"
|
|
tar xf $tar_file ${board_dir}/root -O | \
|
|
ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
|
|
|
|
nand_do_upgrade_success
|
|
}
|
|
|
|
platform_do_upgrade() {
|
|
case "$(board_name)" in
|
|
comtrend,vg-8050|\
|
|
comtrend,vr-3032u|\
|
|
huawei,hg253s-v2|\
|
|
netgear,dgnd3700-v2)
|
|
REQUIRE_IMAGE_METADATA=1
|
|
cfe_jffs2_upgrade_tar "$1"
|
|
;;
|
|
sercomm,ad1018|\
|
|
sercomm,h500-s-lowi|\
|
|
sercomm,h500-s-vfes)
|
|
REQUIRE_IMAGE_METADATA=1
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
*)
|
|
default_do_upgrade "$1"
|
|
;;
|
|
esac
|
|
}
|