mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 00:11:13 +00:00
8f6f260302
In PR [1] introducing initial support for Ubiquiti RouterStation boards, Mathias Kresin suggested to replace the combined sysupgrade image with tarball generated by sysupgrade-tar.sh. This would simplify deployment of sysupgrade as the kernel size (needed to update FIS partition) could be simply calculated on the fly instead of reading value from combined image header. Unfortunately this would break sysupgrade compatibility between ar71xx image and ath79 image. Therefore this commit creates migration path to use new sysuprade image, it adds code to accept both of them at this moment. The plan is to keep it until new stable version is released. Then the image recipe should be changed to new format and compatibility code for old image removed. 1. https://github.com/openwrt/openwrt/pull/1237 Signed-off-by: Tomasz Maciej Nowak <tomek_n@o2.pl>
51 lines
1.2 KiB
Bash
51 lines
1.2 KiB
Bash
#
|
|
# Copyright (C) 2011 OpenWrt.org
|
|
#
|
|
|
|
PART_NAME=firmware
|
|
REQUIRE_IMAGE_METADATA=1
|
|
|
|
routerstation_do_upgrade() {
|
|
local append
|
|
local sysup_file="$1"
|
|
local magic=$(get_magic_word "$sysup_file")
|
|
|
|
if [ "$magic" = "4349" ]; then
|
|
local kern_length=0x$(dd if="$sysup_file" bs=2 skip=1 count=4 2>/dev/null)
|
|
|
|
[ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
|
|
dd if="$sysup_file" bs=64k skip=1 2>/dev/null | \
|
|
mtd -r $append -Fkernel:$kern_length:0x80060000,rootfs write - kernel:rootfs
|
|
|
|
elif [ "$magic" = "7379" ]; then
|
|
local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$')
|
|
local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c)
|
|
|
|
[ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
|
|
tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
|
|
mtd -r $append -Fkernel:$kern_length:0x80060000,rootfs write - kernel:rootfs
|
|
|
|
else
|
|
echo "Unknown image, aborting!"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
platform_check_image() {
|
|
return 0
|
|
}
|
|
|
|
platform_do_upgrade() {
|
|
local board=$(board_name)
|
|
|
|
case "$board" in
|
|
ubnt,routerstation|\
|
|
ubnt,routerstation-pro)
|
|
routerstation_do_upgrade "$ARGV"
|
|
;;
|
|
*)
|
|
default_do_upgrade "$ARGV"
|
|
;;
|
|
esac
|
|
}
|