[PATCH] upgrade.html: Rename uploaded firmware before sysupgrade

Adrian Schmutzler mail at adrianschmutzler.de
Do Mai 9 12:25:53 CEST 2019


Hallo,

 

ich vermute ähnliches.

 

Ob jetzt haserl die Datei nicht löscht oder ich sie vorher wegkopiere ist für mich aber vom Ergebnis gleichwertig. (Man muss sie irgendwann manuell löschen, wenn das sysupgrade nicht klappt.)

 

Es gibt aber sicher diverse mögliche Varianten, das Problem zu lösen.

 

Ich wollte mit diesem Patch primär auf das Problem und die vermutete Ursache hinweisen, da es schon ein Show-Stopper ist, wenn das Upgrade per WebUI nicht mehr geht. Ich vermute, dass dieses Problem auch schon mit 20181202 auftritt (seit OpenWrt 18.06), es aber noch keiner gemerkt hat, weil ja seitdem kein Upgrade mehr. (Getestet habe ich das aber nicht)

 

Grüße

 

Adrian

 

 

From: Fabian Bläse [mailto:fabian at blaese.de] 
Sent: Donnerstag, 9. Mai 2019 11:44
To: Adrian Schmutzler <freifunk at adrianschmutzler.de>; franken-dev at freifunk.net
Subject: Re: [PATCH] upgrade.html: Rename uploaded firmware before sysupgrade

 

Hm.. 

Möglicherweise ist hier das Problem, dass das Upgrade Skript seit OpenWRT 18.06 aktiv die Konsole schließt. 
Mir erscheint das nach einem ziemlich ekligen Workaround. Kann man dem haserl nicht mitteilen, die Datei nicht zu löschen?

Gruß 
Fabian 

On 07.05.19 15:46, Adrian Schmutzler wrote: 
> At the moment sysupgrade via WebUI is broken on many devices. 
> This is reproducible: While the (few) status messages seem 
> normal, the device boots again with the old firmware. 
> Sysupgrade via SSH always works. 
> 
> The sysupgrade call in upgrade.html directly uses the path of 
> the uploaded firmware file as argument. From several tests and 
> based on caught stdout/stderr from this line, it looks like haserl 
> deletes the uploaded firmware file due to a hidden trigger before 
> or even while it is processed by sysupgrade. 
> 
> The easiest way to work around that is to just rename the file 
> before using it as argument to sysupgrade. This will preserve the 
> file in case of a failed sysupgrade, but it will be overwritten 
> with the next try. 
> 
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de <mailto:freifunk at adrianschmutzler.de> > 
> --- 
>  src/packages/fff/fff-web/Makefile                           | 2 +- 
>  src/packages/fff/fff-web/files/www/ssl/cgi-bin/upgrade.html | 5 +++-- 
>  2 files changed, 4 insertions(+), 3 deletions(-) 
> 
> diff --git a/src/packages/fff/fff-web/Makefile b/src/packages/fff/fff-web/Makefile 
> index 9bb10f71..819644a5 100644 
> --- a/src/packages/fff/fff-web/Makefile 
> +++ b/src/packages/fff/fff-web/Makefile 
> @@ -1,7 +1,7 @@ 
>  include $(TOPDIR)/rules.mk 
>  
>  PKG_NAME:=fff-web 
> -PKG_RELEASE:=7 
> +PKG_RELEASE:=8 
>  
>  PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) 
>  
> diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/upgrade.html b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/upgrade.html

> index 96199c22..5fe1526c 100755 
> --- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/upgrade.html 
> +++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/upgrade.html 
> @@ -72,8 +72,9 @@ elif [ "$do_sysupgrade" = "1" ] ; then 
>       echo "<pre>" 
>       echo "# Freeing caches ..." 
>       echo 3 > /proc/sys/vm/drop_caches 
> -     echo "# sysupgrade $args $HASERL_firmware_path" 
> -     sysupgrade $args $HASERL_firmware_path 
> +     echo "# sysupgrade $args /tmp/uploadedfw.bin" 
> +     mv -f "$HASERL_firmware_path" /tmp/uploadedfw.bin 
> +     sysupgrade $args /tmp/uploadedfw.bin 
>       echo "</pre>" 
>  fi 
>  %> 
> 

 
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190509/eb9b835a/attachment.html>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 834 bytes
Beschreibung: nicht verfügbar
URL         : <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190509/eb9b835a/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev