add sysupgrade support
Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 41630
This commit is contained in:
parent
88121f229c
commit
81d85a717a
3 changed files with 131 additions and 0 deletions
27
target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg
Normal file
27
target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2014 OpenWrt.org
|
||||||
|
#
|
||||||
|
|
||||||
|
preinit_mount_syscfg() {
|
||||||
|
|
||||||
|
. /lib/functions.sh
|
||||||
|
. /lib/mvebu.sh
|
||||||
|
|
||||||
|
case $(mvebu_board_name) in
|
||||||
|
armada-xp-mamba)
|
||||||
|
mkdir /tmp/syscfg
|
||||||
|
ubiattach -p /dev/mtd8
|
||||||
|
mount -t ubifs ubi1:syscfg /tmp/syscfg
|
||||||
|
[ -f /tmp/syscfg/sysupgrade.tgz ] && {
|
||||||
|
echo "- config restore -"
|
||||||
|
cd /
|
||||||
|
mv /tmp/syscfg/sysupgrade.tgz /tmp
|
||||||
|
tar xzf /tmp/sysupgrade.tgz
|
||||||
|
rm -f /tmp/sysupgrade.tgz
|
||||||
|
sync
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_hook_add preinit_main preinit_mount_syscfg
|
54
target/linux/mvebu/base-files/lib/upgrade/linksys.sh
Normal file
54
target/linux/mvebu/base-files/lib/upgrade/linksys.sh
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2014 OpenWrt.org
|
||||||
|
#
|
||||||
|
|
||||||
|
linksys_get_target_firmware() {
|
||||||
|
cur_boot_part=`/usr/sbin/fw_printenv -n boot_part`
|
||||||
|
target_firmware=""
|
||||||
|
if [ "$cur_boot_part" = "1" ]
|
||||||
|
then
|
||||||
|
# current primary boot - update alt boot
|
||||||
|
target_firmware="kernel2"
|
||||||
|
fw_setenv boot_part 2
|
||||||
|
fw_setenv bootcmd "run altnandboot"
|
||||||
|
elif [ "$cur_boot_part" = "2" ]
|
||||||
|
then
|
||||||
|
# current alt boot - update primary boot
|
||||||
|
target_firmware="kernel1"
|
||||||
|
fw_setenv boot_part 1
|
||||||
|
fw_setenv bootcmd "run nandboot"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$target_firmware"
|
||||||
|
}
|
||||||
|
|
||||||
|
platform_do_upgrade_linksys() {
|
||||||
|
local magic_long="$(get_magic_long "$1")"
|
||||||
|
|
||||||
|
mkdir -p /var/lock
|
||||||
|
local part_label="$(linksys_get_target_firmware)"
|
||||||
|
touch /var/lock/fw_printenv.lock
|
||||||
|
|
||||||
|
if [ ! -n "$part_label" ]
|
||||||
|
then
|
||||||
|
echo "cannot find target partition"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# we don't know, what filesystem does the other partition use,
|
||||||
|
# nuke it tobe safe
|
||||||
|
mtd erase $part_label
|
||||||
|
get_image "$1" | mtd -n write - $part_label
|
||||||
|
}
|
||||||
|
|
||||||
|
linksys_preupgrade() {
|
||||||
|
export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /usr/sbin/fw_printenv /usr/sbin/fw_setenv"
|
||||||
|
export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /bin/mkdir /bin/touch"
|
||||||
|
export RAMFS_COPY_DATA="${RAMFS_COPY_DATA} /etc/fw_env.config /var/lock/fw_printenv.lock"
|
||||||
|
|
||||||
|
[ -f /tmp/sysupgrade.tgz ] && {
|
||||||
|
cp /tmp/sysupgrade.tgz /tmp/syscfg/sysupgrade.tgz
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
append sysupgrade_pre_upgrade linksys_preupgrade
|
50
target/linux/mvebu/base-files/lib/upgrade/platform.sh
Executable file
50
target/linux/mvebu/base-files/lib/upgrade/platform.sh
Executable file
|
@ -0,0 +1,50 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2014 OpenWrt.org
|
||||||
|
#
|
||||||
|
|
||||||
|
. /lib/mvebu.sh
|
||||||
|
|
||||||
|
RAMFS_COPY_DATA=/lib/mvebu.sh
|
||||||
|
|
||||||
|
platform_check_image() {
|
||||||
|
local board=$(mvebu_board_name)
|
||||||
|
local magic_long="$(get_magic_long "$1")"
|
||||||
|
|
||||||
|
[ "$#" -gt 1 ] && return 1
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
armada-xp-mamba )
|
||||||
|
[ "$magic_long" != "27051956" ] && {
|
||||||
|
echo "Invalid image type."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "Sysupgrade is not yet supported on $board."
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
platform_do_upgrade() {
|
||||||
|
local board=$(mvebu_board_name)
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
armada-xp-mamba)
|
||||||
|
platform_do_upgrade_linksys "$ARGV"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
default_do_upgrade "$ARGV"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
disable_watchdog() {
|
||||||
|
killall watchdog
|
||||||
|
( ps | grep -v 'grep' | grep '/dev/watchdog' ) && {
|
||||||
|
echo 'Could not disable watchdog'
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
append sysupgrade_pre_upgrade disable_watchdog
|
Loading…
Reference in a new issue