Entwicklung: Unterschied zwischen den Versionen

Aus Freifunk Köln, Bonn und Umgebung
Zur Navigation springen Zur Suche springen
Zeile 57: Zeile 57:
== Firmware ==
== Firmware ==


<span style="color: #C00">Hinweis. Die folgenden Informationen beziehen sich auf die derzeit stabile Version ("1.0"). [[1.1-Test-Status|Aktueller Status]]
<span style="color: #C00">Hinweis. Die folgenden Informationen beziehen sich auf die derzeit stabile Version ("1.0").</span>
 
[[1.1-Test-Status|Aktueller Status]]
</span>


=== Übersicht ===
=== Übersicht ===

Version vom 4. April 2014, 19:59 Uhr

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

Bei 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 Neue Firmware

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 Redmine https://redmine.kbu.freifunk.net/projects/fff 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 v0.3-generic
$ 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

$ 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

ff-serv

client-script

Info-Seite

fastd-upload