Firmware: 17.01.6, Unterstützung neuer Router: Doku und Stolpersteine
michael at fritscher.net
michael at fritscher.net
Sa Sep 8 12:12:25 CEST 2018
Moin,
die von uns verwendete Version von OpenWRT (17.01.3) baut nicht mehr
unter Ubuntu 18.04 oder aktuellem Arch.
17.01.6
(https://github.com/openwrt/openwrt/commit/184fe11483b9595f31a028356f8cc18fb18536e3
und
https://github.com/openwrt/packages/commit/40da7ecf21ffe1f3523ffa430c406e1db58ce3d4,
changelog https://openwrt.org/releases/17.01/changelog-17.01.6) ist
wieder baubar.
Was muss da außer dem anpassen der beiden Hashes und das raushauen eines
von uns eingebauten Patches, der in 17.01.6 bereits enthalten ist,
gemacht werden?
Das Kompilat funktioniert zumindest auf einem Carambola anstandslos (ich
habe lokal leider keine offiziell unterstützte HW).
Damit komme ich schon zum nächsten Thema: Bauen für ein neues Target. In
der README.md steht nur, wie ein bereits bestehendes Target um ein neues
Modell erweitert wird, nicht aber wie für ein weiteres Target gebaut
werden kann.
Das ist insbesondere deswegen schade, weil es recht einfach ist - wenn
man ein paar Stolpersteine kennt.
<Anleitung mit Kommentaren zu Stolpersteinen>
Voraussetzungen:
* Der Router muss bereits von OpenWRT unterstützt werden und ist
installiert. Am besten die Version, die die Firmware einsetzt (derzeit
17.01)
* per ifconfig sich sämtliche fe80er Adressen holen
* Rechner mit Linux
Sehr empfohlen:
* Zugriff auf die serielle Konsole - ansonsten ist die Gefahr groß
sich auszusperren. Der Zugriff ist meist auf der OpenWRT Seite für das
entsprechende Gerät beschrieben.
Schritte:
* kopiere eine der bsp-Dateien nach bsp/board_<machine-name> -
letzteres sollte eine Bezeichnung für den Routertyp sein (an die
bestehenden orientieren)
* erzeuge ein leeres Verzeichnis bsp/<machine-name> (Anmerkung: Das
Buildscript steigt sonst aus, und aus der Fehlermeldung wird der Grund
nicht wirklich deutlich)
* erzeuge _KEIN_ manuelles bsp/<maschine-name>/.config, kopiere auch
_KEINS_ hin (Anmerkung: die Fehlermeldungen vom buildscript verleiten
einem dazu - und das schlimme: Es funktioniert dann sogar, nur ist die
.config dann _viel_ zu groß und ist supporttechnisch eine Katastrophe))
* wähle das bsp mit buildscript selectbsp bsp/board_<machine-name>aus
* buildscript prepare
* buildscript config openwrt
* Da dann Target, Subtarget und Target Profile anpassen
* Ansonsten muss erstmal nichts getan werden (Die Freifunk Software
und die wichtigsten Kernelmodule für das entsprechende Target werden
automatisch ausgewählt, Ergänzungen z.B. bzgl. Kernelmodule bitte erst
in der 2. Iteration)
* Save
* Die Abfrage vom buildscript bzgl. Speichern mit y abnicken
* schauen wie der chipset und subtarget in der
bsp/<machine-name/.config genannt wurde (Beispiel:
CONFIG_TARGET_ramips_rt305x_ - ramips ist da das chipset und rt305x das
subtarget) und in der .bsp Datei anpassen.
* firmware/src/packages/fff/fff-network/<chipset> von (derzeit am
besten) mpc85xx kopieren. (Anmerkung: Fehlermeldung ist da nicht einfach
zu interpretieren)
* die network.irgendwas nach network.<board_name> kopieren.
<board_name> bekommt man am einfachsten heraus, wenn man bereits ein
Openwrt/LEDE auf dem Router hat und ein uci get board.model.name
eingibt. Ansonsten erstmal "raten".
* diese anpassen (Das wissen von /etc/network.config von einer
bestehenden Installation oder die OpenWRT Seite für den Router kann
dabei helfen)
* Und das ganze mit buildscript build bauen (Dauert so 20...60
Minuten)
* Vermutlich krachts am Ende mit einer Fehlermeldung, dass die
firmware nicht kopiert werden konnte. Dann schauen, wie die zu
kopierende Datei heißt (Tipp: Im Umfeld der Datei, die er kopieren
wollte, umschauen) und dann die .bsp Datei anpassen.
* Nochmal bauen (geht schnell)
* Aufs Gerät flashen (z.B. mit scp kopieren, per ssh einloggen und
sysupgrade -n machen)
* Hoffen *g* Und nicht gleich die Krise bekommen - beim ersten Start
muss der Flash initialisiert werden, was schonmal ein paar Minuten
dauern kann. Für Ungeduldige: auf die serielle Konsole schauen.
* Versuchen aufs Gerät zu kommen - z.B. mittels den fe80er Adressen,
fe80::1, fdff::1. Oder versuchen die Adresse per ping -6 ff02::1%<iface>
zu bekommen. Wenn alles nichts hilft: Serielle Konsole.
* Anmelden, schauen ob /etc/network.config von
/etc/network.<board-name> übernommen wurde (ansonsten passt der
board-name nicht)
* network.config solange anpassen, bis man mit der Port-Config
zufrieden ist
* Diese Änderungen in die
firmware/src/packages/fff/fff-network/<chipset>/network.<board-name>
rückkoppeln, neu bauen und flashen
* Solange machen, bis alles funktioniert
* Hinweis: /etc/config/network und wireless nach Möglichkeit erstmal
_nicht_ ändern.
* Fertig :-)
</Anleitung>
Ich behaupte mal dreist, dass wenn man die 3 Stolpersteine kennt bzw.
überwunden hat man es mit "normalen" Debugtaktiken gut schaffen kann.
Ich habe es auf diese Weise vor einigen Jahren ohne jede Hilfe und
Vorkenntnissen bzgl. dem Buildsystem für den Carambola hinbekommen.
Ich fände es schön, wenn wir die bsps sammeln würden. Damit uns das
supporttechnisch nicht um die Ohren fliegt würde ich vorschlagen, dass
die Varianten, die wir nicht offiziell supporten wollen (Betrifft v.a.
alle Geräte, die die FW-Entwickler nicht haben und es keinen Maintainer
gibt, der sich bereit erklärt regelmäßig zu testen) in einem CONTRIB
Ordner landen und nicht via buildall gebaut werden. Man kann sie auch in
einem eigenen Repo sammeln. Die Verwaltung von letzterem könnte ich auch
übernehmen.
Viele Grüße,
Michael Fritscher
Mehr Informationen über die Mailingliste franken-dev