Firmware Build
Kurzzusammenfassung: Dartellung des aktuellen Builds. Hinweise auf Probleme und offene Todos werden aufgelistet
Inhaltsverzeichnis |
Einleitung
Die Freifunk-Firmware-KBU (FFF-KBU) ist ein Derivat der Lübecker-Freifunk-Firmware (LFF-Firmware). Da LFF eine identische Netzarchitektur verwendet, kann die Software (inkl. Konfiguration) weitesgehend übernommen werden - die Unterschiede der config-Dateien sind minimal (z.B. SSID, VPN-Server). Der Build erfolgt analog zur Lübecker-Freifunk-Firmware - vgl. Firmware-Freifunk-Lübeck.
Aktueller Build-Prozess
Der Build der Lübecker Firmware wird unter http://krtek.asta.uni-luebeck.de/meutewiki/Freifunk/L%C3%BCbeck-Freifunk-Router/L%C3%BCbeck-Freifunk-Firmware/Build beschrieben. Für FFF-KBU gibt es die folgenden Abweichungen:
- Sowohl Konfiguration als auch Portal-Seite sind im Repository git://github.com/yanosz/lffenv.git enthalten. Es wird automatisch rekursiv eingebunden. Der Zugriff auf http://krtek.asta.uni-luebeck.de/repos/LFF-Profiles/ und http://krtek.asta.uni-luebeck.de/repos/LFF-Info/ entfällt damit.
- Es gibt nur ein Profil / einen Branch wr1043nd.
- git://github.com/yanosz/lff.git muss statt http://www.metameute.de/git/lff.git verwendet werden. (Hintergrund: Einbindung des FFF-KBU-Repositories als submodul)
git clone --recursive git://github.com/yanosz/lff.git
Identifizierte Probleme
Im aktuellen Setup existieren die folgenden Probleme:
- Die Build-Konfiguration (.config-Datei) erfolgt gerätespezifisch.
- Wird im OpenWRT-Makefile-Editor (make menuconfig) eine andere Plattform gewählt, so gehen diese Einstellungen verloren.
- Die .config-Dateien verschiedenen Gerätetypen unterscheiden sich naturgemäß in mehreren Punkten. Die Konfiguration ist nicht wiederverwendbar, enthält aber viele Gemeinsamkeiten (zu nutzende Pakete / nicht benötigte Pakete).
- Die Git-Repo-Organisation der LFF-Firmware macht ein Fork des OpenWRT-Repos erforderlich. FFF-KBU forked das LFF-Repo, um ein eigenes submodul (lffenv) einbinden zu können. Push / Pull ist jedoch nicht via github (o.ä.) abgebildet sondern muss per Hand erfolgen. Dies führt u.a. zu den folgenden Problemen:
- FFF-KBU erhält Patches aus OpenWRT erst dann, wenn sie in LFF auftauchen oder "per Hand" eingepflegt werden.
- Stirbt LFF so bricht der Upstream für FFF-KBU praktisch weg.
- OpenWRT tagged keine rc-"releases" des Backfire-branches. Somit ist nicht offensichtlich, auf Basis welchen OpenWRT-Releases Build von FFF-KBU oder LFF Build erfolgt und welche Issues aus OpenWRT kommen.
- Das LFF-Repository-Layout erfordert einen Branch pro Gerät. Dies erschwert den Support neuer Geräte.
Planung FFF-KBU
Vision
Vision für FFF-KBU ist ein automatisierter Build aller unterstützter Plattformen. Die Erstellung eines OpenWRT-/LFF-Forks soll nicht mehr erforderlich sein. Neue Plattformen (Gerätetypen) aus OpenWRT sollen einfach unterstützt werden können, sofern die Hardware dies erlaubt (z.B. wlan-Treiber liefert support für die geforderten Betriebsmodi)
Arbeitsschritte
- Paket-Prototyp: Pakettierung der Konfiguration (d.h. alle Dateien aus git://github.com/yanosz/lffenv.git) für den TP-Link 1043ND ("as is") - testweise Einbindung in OpenWRT 10.03.1 Das Paket soll mindestens auf x86 und ar71xx (1043ND-flavor) nutzbar sein - denkbar ist auch ein build für alle Plattformen.
- Abstimmung der Paketabhängigkeiten: Einbindung beim Build in "Vanilla OpenWRT" (für 1043ND) soll alle benötigten Pakete nachziehen (prio2: Support für nachträgliche Installation). Erstellung einer angepassten .config-Datei soll entfallen
- Imagebuilder-Support: Für 1043ND soll das Paket bei der Nutzung des Image-Builders einbindbar sein.
- Abstimmung mit LFF (und Oldenburg?): Gemeinsames Git-Repo für Configs sinnvoll? (github?)
- Konsolidierung der config zum Support weiterer Plattformen (x86, etc.). Insb: Keine Notwendigkeit dezidierter Branches, getrennter Paketquellen, etc.
- Bei Bedarf: Ticket bei OpenWRT öffnen: Releases (auch von RC) bitte tag'en
Wenn diese Punkte erledigt sind, beschränkt sich der Build-Prozess der Firmware auf die Nutzung des Images-Builders. Hierfür haben wir bereits ein Makefile, das den Image-Builder ansteuert um Firmware für vers. Plattformen zu bauen - die Vision wäre dann umgesetzt.
Sonstiges
- Einen Anfang hatte ich (yanosz) vor Monaten unter https://github.com/yanosz/openwrt-ff-kbu-old gemacht - die Config ist jedoch nicht aktuell, das Paket konnte ausschließlich nachträglich installiert werden.
- Ein Beispielpaket mit feed aus einer kurzen Sitzung vom Camp gibts unter: http://dev.c-base.org/opnewrthelloworld