|
@@ -7,11 +7,28 @@ REQUIRE_IMAGE_METADATA=1
|
|
|
|
|
|
routerstation_do_upgrade() {
|
|
|
local append
|
|
|
- local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null)
|
|
|
+ local sysup_file="$1"
|
|
|
+ local magic=$(get_magic_word "$sysup_file")
|
|
|
|
|
|
- [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
|
|
|
- dd if="$1" bs=64k skip=1 2>/dev/null | \
|
|
|
- mtd -r $append -Fkernel:$kern_length:0x80060000,rootfs write - kernel:rootfs
|
|
|
+ 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() {
|