mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	base-files: add support for staged sysupgrades from failsafe mode
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
This commit is contained in:
		
							parent
							
								
									b2adb9a7b5
								
							
						
					
					
						commit
						a5428244d9
					
				@ -5,8 +5,12 @@
 | 
			
		||||
run_failsafe_hook() {
 | 
			
		||||
    [ "$pi_preinit_no_failsafe" = "y" ] && return
 | 
			
		||||
    if [ "$FAILSAFE" = "true" ]; then
 | 
			
		||||
	lock /tmp/.failsafe
 | 
			
		||||
	boot_run_hook failsafe
 | 
			
		||||
	lock -w /tmp/.failsafe
 | 
			
		||||
	while [ ! -e /tmp/sysupgrade ]; do
 | 
			
		||||
	    lock -w /tmp/.failsafe
 | 
			
		||||
	done
 | 
			
		||||
	exit
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -8,10 +8,13 @@ failsafe_netlogin () {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
failsafe_shell() {
 | 
			
		||||
	lock /tmp/.failsafe
 | 
			
		||||
	ash --login
 | 
			
		||||
	echo "Please reboot system when done with failsafe network logins"
 | 
			
		||||
	while true; do sleep 1; done
 | 
			
		||||
	local console="$(sed -e 's/ /\n/g' /proc/cmdline | grep '^console=' | head -1 | sed -e 's/^console=//' -e 's/,.*//')"
 | 
			
		||||
	[ -n "$console" ] || console=console
 | 
			
		||||
	[ -c "/dev/$console" ] || return 0
 | 
			
		||||
	while true; do
 | 
			
		||||
		ash --login <"/dev/$console" >"/dev/$console" 2>"/dev/$console"
 | 
			
		||||
		sleep 1
 | 
			
		||||
	done &
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
boot_hook_add failsafe failsafe_netlogin
 | 
			
		||||
 | 
			
		||||
@ -251,8 +251,16 @@ run_hooks "" $sysupgrade_pre_upgrade
 | 
			
		||||
 | 
			
		||||
install_bin /sbin/upgraded
 | 
			
		||||
v "Commencing upgrade. All shell sessions will be closed now."
 | 
			
		||||
ubus call system sysupgrade "{
 | 
			
		||||
	\"prefix\": \"$RAM_ROOT\",
 | 
			
		||||
	\"path\": $(json_string "$IMAGE"),
 | 
			
		||||
	\"command\": \". /lib/functions.sh; include /lib/upgrade; do_upgrade_stage2\"
 | 
			
		||||
}"
 | 
			
		||||
 | 
			
		||||
COMMAND='. /lib/functions.sh; include /lib/upgrade; do_upgrade_stage2'
 | 
			
		||||
 | 
			
		||||
if [ -n "$FAILSAFE" ]; then
 | 
			
		||||
	printf '%s\x00%s\x00%s' "$RAM_ROOT" "$IMAGE" "$COMMAND" >/tmp/sysupgrade
 | 
			
		||||
	lock -u /tmp/.failsafe
 | 
			
		||||
else
 | 
			
		||||
	ubus call system sysupgrade "{
 | 
			
		||||
		\"prefix\": $(json_string "$RAM_ROOT"),
 | 
			
		||||
		\"path\": $(json_string "$IMAGE"),
 | 
			
		||||
		\"command\": $(json_string "$COMMAND")
 | 
			
		||||
	}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user