OpenWrt Sysupgrade

Werfen Sie doch bitte einen Blick auf das Flash Layout. Der OpenWrt-Sysupgrade-Prozess wird den Linux Kernel und den SquashFS Inhalt überschreiben, und außerdem die komplette JFFS2 Partition löschen. Sie können einige oder alle ihrer Konfiguration-Dateien mitnehmen, doch bitte beachten Sie, dass es vorkommen kann, dass alte Konfigurations-Einstellungen nicht mit neueren OpenWrt Versionen arbeiten werden! Anders als bei Debian, werden Sie nicht automatisch darüber in Kentnis gesetzt, Sie müssen sie selber im Vorhinein informieren!

Sie müssen das Image-File in das /tmp-Verzeichnis runterladen, ein tmpfs-Lauwerk ist auf dieses Verzeichnis gemountet. Das muss so sein, weil nur der Arbeisspeicher genug Platz für ein Firmware-Image bietet. Das bedeutet, dass Sie unter umständen Arbeitsspeicher freiräumen müssen, wenn nicht genug zur Verfügung stehen sollte.

Via Befehlszeile

  1. vergewissere dich, dass genug Arbeitsspeicher zur Verfügung steht:
    free
    Falls nicht genug übrig sein sollte, →Free up RAM.
  2. befülle /etc/sysupgrade.conf mit Dateien und Verzeichnisen, die erhalten bleiben sollen
  3. besorge dir eine passendes OpenWrt Firmware Image (trunk oder stable):
    cd /tmp
    wget http://downloads.openwrt.org/snapshots/trunk/PLATFORM/xxx-sysupgrade.bin
    wget http://downloads.openwrt.org/snapshots/trunk/PLATFORM/md5sums
  4. überprüfe die Integrität der Image-Datei:
    md5sum -c md5sums
    
    Wenn es md5sum: WARNING: 195 of 196 computed checksums did NOT match ausspuckt, ist alles in Ordnung
  5. benutze folgenden Befehl um den Vorgang zu starten:
    sysupgrade -v /tmp/openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-sysupgrade.bin
  • Die Option -v ("verbose") sollte etwas änhliches ausgeben wie das hier:
    root@openwrt:/tmp$ sysupgrade -v openwrt-ar71xx-generic-tl-wr1043nd-v1-squashfs-sysupgrade.bin
    Saving config files...
    root/zeit
    root/statistics
    root/quelen
    root/auswurfeln
    etc/sysupgrade.conf
    etc/sysctl.conf
    etc/shells
    etc/rc.local
    etc/TC_hfsc.sh
    etc/profile
    etc/passwd
    etc/inittab
    etc/init.d/trafficc
    etc/hotplug.d/iface/30-trafficc
    etc/hosts
    etc/group
    etc/firewall.user
    etc/dropbear/dropbear_rsa_host_key
    etc/dropbear/dropbear_dss_host_key
    etc/crontabs/root
    etc/config/wireless
    etc/config/timeserver
    etc/config/system
    etc/config/network
    etc/config/firewall
    etc/config/dropbear
    etc/config/dhcp
    etc/collectd.conf
    Switching to ramdisk...
    Performing system upgrade...
    Unlocking firmware ...
    
    Writing from <stdin> to firmware ...
    Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...TRX header not found
    Error fixing up TRX header
    
    Writing from <stdin> to firmware ...
    Upgrade completed
    Rebooting system...
    
  • Anschließend sollte das Gewärt automatisch neu starten, und die Dateien/Verzeichnisse aus /etc/sysupgrade.conf auf die JFFS2-Partition schreiben. Warten bis das abgeschlossen ist und jetzt bitte nochmal manuell neu starten.
  • OpenWrt sollte jetzt mit den ganzen alten Einstellungen hochgefahren sein, bitte auf Fehler prüfen:
    dmesg
    unname -a
    iptables -V
    ...
  • Packages reinstallieren:
    opkg update
    opkg install tc iptables-mod-ipopt wol
Ein Kalt-Resett scheint notwendig zu sein, das ist im Falle eines sysupgrades aus der Ferne sehr sehr schlecht!

Via Web-Oberfläche

  1. passendes OpenWrt Firmware Image-Datei herunterladen (auf die eigene Festplatte)
  2. auf der Web-Oberfläche auswählen: SystemSystemCustom Files
  3. dann SystemFlash Firmware
  4. die OpenWrt Firmware Image-Datei wird nun in das /tmp-Verzeichnis kopiert
  5. LuCI wird die MD5 Checksumme überprüfen und den Update-Vorgang ansstoßen
  6. warten bis alles wieder online kommt

Alternativen zu OpenWrt Sysupgrade

Einige sind hier zu finden: upgrading.openwrt.

mtd

  1. In dem Fall, dass sysupgrade ihr Gerät (noch) nicht unterstützt, können Sie mtd benutzen, z.B.:
    mtd -r write /tmp/openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-sysupgrade.bin firmware

netcat

Netcat könnte eingesetzt werden, wenn nicht genug Arbeitsspeicher frei gemacht werden kann. Siehe netcat. Netcat needs to be installed first.

Diese Methode wird NICHT empfohlen!
  1. On the router run:
    nc -l -p 1234 | mtd write - firmware
    
  2. On your Linux PC run:
    nc -q0 192.168.1.1 1234 < openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin
    

Sie können auch, auch wenn dies nicht empfohlen wird, nectat mit pipes benutzen anstatt das Image auf die RAMFS-Partition zu kopieren:

  • Auf Ihrem PC wiesen Sie netcat an, auf Port 5050 zu hören und das Image zu senden, sobald Verbindung besteht:
    nc -l -p 5050 -q 1 < openwrt-XXXX-XXXX.trx
  • Separat dazu auf dem Gerät ausführen:
    nc 192.168.1.6 5050 | mtd -e linux -r write - linux

:!: Diese Vorgehensweise wird nicht empfohlen, könnte aber im Falle von wenig freiem Arbeitsspeicher auf dem Gerät notwendig werden.


Arbeitsspeicher freiräumen

First check memory usage with the free or top or cat /proc/meminfo commands; proceed if you have as much free RAM as the image is in size plus an some additional MiB of free memory.

root@openwrt:/$ free total used free shared buffers Mem: 29540 18124 11416 0 1248 -/+ buffers: 16876 12664 Swap: 0 0 0

In this example there are precisely 11.416 KiB of RAM unused. All the rest 32.768 - 11.416 = 21.352KiB are used somehow and a portion of it can and will be made available by the kernel, if it be needed, the problem is, we do not know how much exactly that is. Make sure enough is available.

  • der schnellste Weg etwas Arbeitsspeicher freizuräumen besteht darin, die opkg-Package-Dateien zu löschen:
    rm -r /tmp/opkg-lists/
  • caches löschen:
    echo 3 > /proc/sys/vm/drop_caches
  • verhindern, dass die IEEE802.11-Treiber beim nächsten Reboot geladen werden und dann das Gerät neu starten, z.B.:
    rm /etc/modules.d$/*80211*
    rm /etc/modules.d$/*ath9k*
    reboot
    

Notes

Back to top

de/doc/howto/generic.sysupgrade.txt · Last modified: 2014/06/24 03:28 by robipower