add sysupgrade support
Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 41630
This commit is contained in:
		
							
								
								
									
										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
 | 
			
		||||
		Reference in New Issue
	
	Block a user