Firmwareupdate über LAN

hehol

Mitglied
Mitglied seit
22 Feb 2005
Beiträge
458
Punkte für Reaktionen
0
Punkte
16
Guten Tach!

Ich habe gestern abend den Firmwareupdateprozess von Horst genauer untersucht. Das Update funktioniert problemlos über LAN oder DSL auch ohne horst-update.exe!

1. Ablauf des Updatevorgangs

Beim Update werden zunächst per wget die Konfigurationsdatei (config.txt) geladen. In die Konfigurationsdatei kann man Variabel=Wert-Paare schreiben, die in das NVRAM geschrieben werden. So kann man z.B. Standardwerte verändern, die sich in der kommenden Firmwareversion ändern sollen. Eine andere Möglichkeit ist, die Download-URLs in der Konfigurationsdatei anzugeben, so daß man das Update nicht von dem Host aus auslösen muß, auf dem sich die Update-Dateien befinden (s. 3. unten).

Nach dem Auswerten der Konfigurationsdatei werden das Kernel-Image (zImage), das update-fs und das opt-fs heruntergeladen. Der neue Kernel wird gebootet und via update-fs wird direkt das main-fs nachgeladen und in den Flash-Speicher geschrieben.

Danch wird die Box wieder gebootet und diesmal wird statt des update-fs das main-fs gemountet.

2. Verwendete NVRAM-Variablen

UPDATE.CONFIG_URL gibt den URL zur config.txt an. Wenn keine Datei verwendet werden soll, muß die Variable auf "not_in_use" gesetzt werden.

UPDATE.MAIN_FS_URL URL zum main-fs

UPDATE.UPDATE_FS_URL URL für das update-fs

UPDATE.OPT_FS_URL URL für das opt-fs (keine Ahnung, wann und wozu das benutzt wird)

UPDATE.ZIMAGE_URL URL zum Kernel-Image

UPDATE.DSL_FS_URL URL zum Firmware-Image für Herta. Die Datei auf dem Webserver muß "dsl-image" heißen.

sys_firmware.update Das Ändern dieser Variable löst den Updatevorgang aus. Das Script /usr/share/board_cfg/sys/sys_update.sh wird ausgeführt.

3. Updatevorgang vom PC aus auslösen

Über den URL https://<IP-Adresse der Horstbox>/update kann das Update ausgelöst werden. An diesen URL muß man als POST-Variable "port=<Portnummer>" übermitteln. Horst setzt dann die Update-URLs auf

http://<IP-Adresse des Client-PCs>:Port/<Update-Datei>

Wenn man auch die POST-Variable dsl_version mitsendet, wird auch das Herta-Firmwareupdate von UPDATE.DSL_FS_URL heruntergeladen. Der Code im mhttpd setzt dann die NVRAM-Updatevariablen und löst zum Schluß das Update durch Setzen von sys_firmware.update auf die aktuelle Uhrzeit aus.

Man kann sich also horst-update.exe getrost sparen, indem man auf dem PC einen Webserver startet, die Firmware-Dateien im DocumentRoot ablegt und dann port=XY an Horst POSTet. Ich habe dazu den Befehl POST aus dem Debian-Paket libwww-perl benutzt:

Code:
echo -n port=80 | POST -C admin:admin https://192.168.0.1/update

Viel Spass damit
Henning
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.