mirror of https://github.com/hak5/openwrt-owl.git
add sysupgrade support
Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 41630owl
parent
88121f229c
commit
81d85a717a
|
@ -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
|
|
@ -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
|
|
@ -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 New Issue