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
3 changed files with 25 additions and 10 deletions
|
@ -5,8 +5,12 @@
|
||||||
run_failsafe_hook() {
|
run_failsafe_hook() {
|
||||||
[ "$pi_preinit_no_failsafe" = "y" ] && return
|
[ "$pi_preinit_no_failsafe" = "y" ] && return
|
||||||
if [ "$FAILSAFE" = "true" ]; then
|
if [ "$FAILSAFE" = "true" ]; then
|
||||||
|
lock /tmp/.failsafe
|
||||||
boot_run_hook failsafe
|
boot_run_hook failsafe
|
||||||
lock -w /tmp/.failsafe
|
while [ ! -e /tmp/sysupgrade ]; do
|
||||||
|
lock -w /tmp/.failsafe
|
||||||
|
done
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,13 @@ failsafe_netlogin () {
|
||||||
}
|
}
|
||||||
|
|
||||||
failsafe_shell() {
|
failsafe_shell() {
|
||||||
lock /tmp/.failsafe
|
local console="$(sed -e 's/ /\n/g' /proc/cmdline | grep '^console=' | head -1 | sed -e 's/^console=//' -e 's/,.*//')"
|
||||||
ash --login
|
[ -n "$console" ] || console=console
|
||||||
echo "Please reboot system when done with failsafe network logins"
|
[ -c "/dev/$console" ] || return 0
|
||||||
while true; do sleep 1; done
|
while true; do
|
||||||
|
ash --login <"/dev/$console" >"/dev/$console" 2>"/dev/$console"
|
||||||
|
sleep 1
|
||||||
|
done &
|
||||||
}
|
}
|
||||||
|
|
||||||
boot_hook_add failsafe failsafe_netlogin
|
boot_hook_add failsafe failsafe_netlogin
|
||||||
|
|
|
@ -251,8 +251,16 @@ run_hooks "" $sysupgrade_pre_upgrade
|
||||||
|
|
||||||
install_bin /sbin/upgraded
|
install_bin /sbin/upgraded
|
||||||
v "Commencing upgrade. All shell sessions will be closed now."
|
v "Commencing upgrade. All shell sessions will be closed now."
|
||||||
ubus call system sysupgrade "{
|
|
||||||
\"prefix\": \"$RAM_ROOT\",
|
COMMAND='. /lib/functions.sh; include /lib/upgrade; do_upgrade_stage2'
|
||||||
\"path\": $(json_string "$IMAGE"),
|
|
||||||
\"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 a new issue