mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 17:42:41 +00:00
103 lines
2.3 KiB
Bash
Executable File
103 lines
2.3 KiB
Bash
Executable File
. /lib/functions/system.sh
|
|
|
|
RAMFS_COPY_BIN='fw_printenv fw_setenv'
|
|
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
|
|
|
qca_do_upgrade() {
|
|
local tar_file="$1"
|
|
|
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
local dev=$(find_mtd_chardev "0:HLOS")
|
|
|
|
tar Oxf $tar_file ${board_dir}/kernel | mtd write - ${dev}
|
|
|
|
if [ -n "$UPGRADE_BACKUP" ]; then
|
|
tar Oxf $tar_file ${board_dir}/root | mtd -j "$UPGRADE_BACKUP" write - rootfs
|
|
else
|
|
tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
|
|
fi
|
|
}
|
|
|
|
platform_check_image() {
|
|
local magic_long="$(get_magic_long "$1")"
|
|
board=$(board_name)
|
|
case $board in
|
|
cig,wf194c4|\
|
|
cig,wf196|\
|
|
edgecore,eap102|\
|
|
edgecore,oap102|\
|
|
edgecore,oap103|\
|
|
edgecore,eap106|\
|
|
emplus,wap380c|\
|
|
sonicfi,rap650c|\
|
|
tplink,ex227|\
|
|
tplink,ex447)
|
|
[ "$magic_long" = "73797375" ] && return 0
|
|
;;
|
|
esac
|
|
return 1
|
|
}
|
|
|
|
platform_do_upgrade() {
|
|
CI_UBIPART="rootfs"
|
|
CI_ROOTPART="ubi_rootfs"
|
|
CI_IPQ807X=1
|
|
|
|
board=$(board_name)
|
|
case $board in
|
|
tplink,ex227)
|
|
qca_do_upgrade "$1"
|
|
;;
|
|
cig,wf196|\
|
|
emplus,wap380c)
|
|
[ -f /proc/boot_info/rootfs/upgradepartition ] && {
|
|
CI_UBIPART="$(cat /proc/boot_info/rootfs/upgradepartition)"
|
|
CI_BOOTCFG=1
|
|
}
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
cig,wf194c4|\
|
|
tplink,ex447)
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
edgecore,eap106)
|
|
CI_UBIPART="rootfs1"
|
|
[ "$(find_mtd_chardev rootfs)" ] && CI_UBIPART="rootfs"
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
edgecore,eap102|\
|
|
edgecore,oap102|\
|
|
edgecore,oap103)
|
|
if [ "$(find_mtd_chardev rootfs)" ]; then
|
|
CI_UBIPART="rootfs"
|
|
else
|
|
if [ -e /tmp/downgrade ]; then
|
|
CI_UBIPART="rootfs1"
|
|
{ echo 'active 1'; echo 'upgrade_available 0'; } > /tmp/fw_setenv.txt || exit 1
|
|
CI_FWSETENV="-s /tmp/fw_setenv.txt"
|
|
elif grep -q rootfs1 /proc/cmdline; then
|
|
CI_UBIPART="rootfs2"
|
|
CI_FWSETENV="active 2"
|
|
else
|
|
CI_UBIPART="rootfs1"
|
|
CI_FWSETENV="active 1"
|
|
fi
|
|
fi
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
sonicfi,rap650c)
|
|
boot_part=$(fw_printenv -n bootfrom)
|
|
[ ${#boot_part} -eq 0 ] && boot_part=0
|
|
echo "Current bootfrom is $boot_part"
|
|
if [[ $boot_part == 1 ]]; then
|
|
CI_UBIPART="rootfs"
|
|
CI_FWSETENV="bootfrom 0"
|
|
elif [[ $boot_part == 0 ]]; then
|
|
CI_UBIPART="rootfs_1"
|
|
CI_FWSETENV="bootfrom 1"
|
|
fi
|
|
nand_upgrade_tar "$1"
|
|
esac
|
|
}
|