Hallo zusammen,
Wir hatten bei dem letzten Firmware release die Images für die AP-AC Mesh/Lite/Pro aus dem autoupdater genommen. Wie sich im Nachhinein herausstellte, gab es einen Fehler in der OpenWRT Dokumentation. Die Dokumentation ist nun gefixt[0].
Ein wenig technischen Hintergrund will ich euch natürlich auch mit geben da ich ja weiß wie sehr sich einige danach sehnen :)
Jeder der Schonmal einen der o.G. Geräte geflash hat weiß das die Geräte zweit Kernel Partitionen haben. Das ist auf ein Flipflop Flash zurück zu führen und ich daher eigentlich ein ganz nettes Feature. Um nun eine Freifunk Firmware drauf installiert zu bekommen, muss man sowohl kernel0 als auch kernel1 mit der Freifunk Firmware beflashen. Das ist darauf rückzuführen das der Bootloader signierte Images bevorzugt und somit das Stock Image immer bevorzugt. Als Beispiel Flash man nur Kernel 0 oder 1 und läst auf der anderen weiterhin die stockt so würde immer nur die Stock Firmware von kernel1 gebootet werden, das wie oben schon erwähnt der bootloader die Stock Firmware bevorzugt. Nun kommen wir zur Problem Situation wird ein sysupgrade z.b. durch den autoupdater ausgeführt so wird einer der beiden Kernel Partitionen mit dem neuen Image gefalsh die andere Partition beinhaltet nach wie vor das alte Image nun besteht eine (50|50) Chance das von der upgedateten Kernel Partition gebootet wird das soweit kein Problem darstellt. Das Problem entsteht wenn von der 2. Partition gebootet wird das führt dann u.a. zu Kernel ABI Problemen was somit in einem gebrikten Router endet.
Die Auswahl der Kernel Partition finden mit Hilfe der BS Partition statt. Diese ist in Lede read only (ro) im Kernel hinterlegt. Um nun sicherzustellen, das dauerhaft von der richtigen Partition gebootet wird, muss ein null Byte in die BS Partition geschrieben werden. Dieses ist allerdings nicht aus dem lede System möglich, was leider dazuführt das alle die einen der o.g. Router Modelle betreiben ihr Gerät erst mit der Original Firmware recovern müssen und dann wieder beide Kernel Partitionen mit einer Freifunk Firmware beflaschen müssen. Zusätzlich muss ein null Byte in die BS Partition geschrieben werden, damit sicher gestellt ich das immer von der kernel0 Partition gebootet wird, siehe dazu auch in der Doku [0].
Eine Diskussion dazu auf unserer dev liste findet ihr hier [1]. @Ulf hast du Lust einen Blog Artikel daraus zu zaubern? Das wäre durchaus eine wichtige Notiz für Router Betreiber.
Schöne grüße und gute Nacht :) Tarek
[0] https://openwrt.org/toh/ubiquiti/unifiac#installing_openwrt
[1] https://lists.ffnw.de/hyperkitty/list/dev@lists.ffnw.de/thread/5C5VWAONJTEHN...