Entwicklung

Aus Freifunk Köln, Bonn und Umgebung
Wechseln zu: Navigation, Suche

Diese Seite beschreibt die Entwicklung der Firmware und Tools für das Freifunk-KBU-Projekt. Dabei wird die Organisation der Git-Repositories, der Build-Prozess und die Architektur der Firmware beschrieben.

Übersicht

Freifunk-KBU verwendet diese Software. Der Quellcode ist auf github abgelegt (https://github.com/ff-kbu). Nach einer kurzen Übersicht wird die Entwicklung im Detail beschrieben.

# Software Funktion github-Repository Hinweis
1 Firmware OpenWRT für Nodes Zzgl. git-repos für packages, submodules.
2 ff-serv Portal-Seite:
  • Node-Registrierung / Karte
  • Annahme von Tinc-Keys
Aktuelle Entwicklung im "v2"-branch
3 client-script Konfiguration Debian-Clients für das mesh-Netz Alte Firmware
4 Info Seite Information für Freifunk-Nutzer (eigene SSID) Alte Firmware - Nutzung in Zukunft?
5 fastd-upload Annahme von fastd-Keys auf VPN-Servern deprecated, server pruefen node keys nicht mehr

Infrastruktur

Zur Entwicklung verwenden wir

Software

Firmware

Hinweis. Die folgenden Informationen beziehen sich auf die derzeit stabile Version ("1.0"). Aktueller Status

Übersicht

Die Firmware im Freifunk-KBU Netz ist ein Fork der Lübecker Freifunker und basiert auf OpenWRT 12.09 "Attitude Adjustment". Hinweise: http://freifunk.metameute.de/wiki/Firmware .
Freifunk-Kiel stellt umfangreichere Informationen zum Umgang mit der Firmware zur Verfügung: http://freifunk.in-kiel.de/wiki/Firmware - hier wird die Installation der Firmware auf Freifunk-Nodes erklärt.

Zur Koordination der Entwicklung wird http://tracker.kbu.freifunk.net/ verwendet.

Architektur / Technik

Als Topologie wird Komplettes Bridging verwendet. Über fastd werden batman-adv Frames versendet. Zu Testzwecken stehen diese fastd-Server zur Verfügung

  • fastd1.kbu.freifunk.net (RZ Berlin)
  • fastd3.kbu.freifunk.net (yanosz / Hetzner)

Der batman-adv Gateway-Modus wird verwendet. fastd-Server sind Gateways, Nodes sind Clients. Jedes Gateway gibt die Exit-Bandbreite an erfolgt der Exit via tor, so wird 1024K/1024K angegeben.

Build der Firmware

Der Build erfolgt analog zu OpenWRT - es werden die gleichen build-dependencies benötigt (vgl. http://wiki.openwrt.org/doc/howto/build). Ein einfacher build für TP-Link 741ND erfolgt wie folgt:

$ git clone git://github.com/ff-kbu/fff.git -b 1_2_STABLE
$ cd fff
$ scripts/feeds update -a
$ scripts/feeds install -a
$ make

Firmware-Images für die Geräte TP-Link 741ND und TP-Link 1043ND werden täglich via Jenkins gebaut, falls Änderungen im fff-Repository vorliegen [1]. Der Jenkins Build kann auch über das Webinterface gestartet werden. Hierzu ist ein Account [2] notwendig.

Source Code Organisation

Der Source-Code der Firmware steht bei github zur Verfügung. Für commits wird ein Github-Account benötigt. Die Organisation der Repositories ist von der Lübecker-Firmware abgeleitet. Für jedes dort genutzte Repository existiert ein Fork auf github. In (fast) alle Repositories existiert ein Branch v0.3 indem die aktuelle Entwicklung abgelegt ist. (Ausnahme: fastd, da eigene Releases)

Diese Repositories sind am Build der Firmware beteiligt:

Name URL Funktion
fff https://github.com/ff-kbu/fff OpenWRT-Fork mit Initial-Dateien zum Build der Firmware.
fff-luci https://github.com/ff-kbu/fff-luci Feed: Luci-Fork auf Codebasis des Config-Modes
fff-config-mode https://github.com/ff-kbu/fff-config-mode Feed: Luci Modul config_mode als OpenWRT-Paket
fff-fastd https://github.com/ff-kbu/fff-fastd Feed: fastd als OpenWRT-Paket
fff-packages https://github.com/ff-kbu/fff-packages Feed: Fork des OpenWRT-Package-Feeds

Hinweise:

  • Das Makefile ist im fff Repository zu finden. Alle andere Repositories sind in feeds.conf.default referenziert und werden automatisch beim Build eingebunden.
  • Zukünftigt ist ggf. ein Verzicht auf einige OpenWRT-Forks (Basis, Luci, Packages) möglich. Voraussetzung hierfür sind nutzbare OpenWRT-Releases von Attitude Adjustment. Hintergrund: Kein build gegen moving-targets - builds müssen reproduzierbar sein.

Abweichungen Freifunk-Lübeck

Folgende Abweichungen existieren:

  • Namen der Branches - Lübeck verwendet v0.3.x bzw. v0.3.x-tl-wr1043nd. Die Umbenennung erlaubt ein einfaches, lokales Wechseln der Branches
  • Key-Upload via curl ([3], [4])
  • Mesh-VPN per default aktiviert. [5]
  • BSSID / ESSID geändert [6]
  • fastd Verschlüsselung deaktiviert [7]

Weitere Änderungen sind dem commit-Log zu entnehmen [8] und betreffen keine konzeptionell wichtigen Details.

Nützliche Dinge

  • Merge aus Lübeck (z.B. fff):
$ git clone git://git.metameute.de/lff/firmware -b v0.3.x
$ git remote add github git@github.com:ff-kbu/fff.git 
$ git fetch github 
$ git checkout -t github/v0.3 
$ git merge v0.3.x