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 sich selber im Vorhinein informieren!
Sie müssen das Image-File in das /tmp
-Verzeichnis herunterladen, 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
- vergewissere dich, dass genug Arbeitsspeicher zur Verfügung steht:
free
Falls nicht genug übrig sein sollte, →Free up RAM.
- befülle
/etc/sysupgrade.conf
mit Dateien und Verzeichnisen, die erhalten bleiben sollen - 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
- ü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 - 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 Gerät 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 uname -a iptables -V ...
- Packages reinstallieren:
opkg update opkg install tc iptables-mod-ipopt wol
Ein Kalt-Reset scheint notwendig zu sein, das ist im Falle eines sysupgrades aus der Ferne sehr sehr schlecht! |
Via Web-Oberfläche
- passendes OpenWrt Firmware Image-Datei herunterladen (auf die eigene Festplatte)
- die OpenWrt Firmware Image-Datei wird nun in das
/tmp
-Verzeichnis kopiert - LuCI wird die MD5 Checksumme überprüfen und den Update-Vorgang ansstoßen
- warten bis alles wieder online kommt
Alternativen zu OpenWrt Sysupgrade
Einige sind hier zu finden: upgrading.openwrt.
mtd
- In dem Fall, dass
sysupgrade
ihr Gerät (noch) nicht unterstützt, können Siemtd
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! |
- On the router run:
nc -l -p 1234 | mtd write - firmware
- 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