Entwicklung: Unterschied zwischen den Versionen

Aus Freifunk Köln, Bonn und Umgebung
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(66 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Archiv]]
{{:Archiv-Hinweis}}
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.
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.


''Hinweis: Der Text bezieht sich in Teilen auf die kommende Version der Firmware - alte Firmware-Version siehe: [[Firmware_Build]]''
= Ü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.


== Übersicht ==
{| class="wikitable"
Bei Freifunk-KBU verwendet diese Software. Der Quellcode ist auf github abgelegt (https://github.com/ff-kbu).
 
{| class="wikitable sortable"
|- class="hintergrundfarbe6"
|- class="hintergrundfarbe6"
!| Software !!  | Funktion !! |  github-Repository !! class="unsortable"  | Hinweis
!| # !! |Software !!  | Funktion !! |  github-Repository !! class="unsortable"  | Hinweis
|-
|-
| fastd-upload
| 1
| Annahme von fastd-Keys auf VPN-Servern
| Firmware
| https://github.com/ff-kbu/fastd-upload
| OpenWRT für Nodes
| Neue Firmware
|  
* https://github.com/ff-kbu/fff (neu)
* https://github.com/ff-kbu/fff-kbu (alt)
| Zzgl. git-repos für packages, submodules.
|-
|-
| 2
| ff-serv
| ff-serv
|  
| Portal-Seite:
* Node-Registrierung / Karte
* Node-Registrierung / Karte
* Annahme von Tinc-Keys
* Annahme von Tinc-Keys
| https://github.com/ff-kbu/ff-serv/tree/v2
|  
* https://github.com/ff-kbu/ff-serv/tree/v2
| Aktuelle Entwicklung im "v2"-branch
| Aktuelle Entwicklung im "v2"-branch
|-
|-
| 3
| client-script
| client-script
| Konfiguration Debian-Clients für das mesh-Netz
| Konfiguration Debian-Clients für das mesh-Netz
| https://github.com/ff-kbu/client-script
|  
| Nur alte Firmware
* https://github.com/ff-kbu/client-script
| Alte Firmware
|-
|-
| 4
| Info Seite
| Info Seite
| Information für Freifunk-Nutzer (eigene SSID)
| Information für Freifunk-Nutzer (eigene SSID)
Zeile 32: Zeile 41:
* https://github.com/ff-kbu/freifunk-kbu-info-page (Quellcode)
* https://github.com/ff-kbu/freifunk-kbu-info-page (Quellcode)
* https://github.com/ff-kbu/freifunk-kbu-info-page-export (HTML-Export)
* https://github.com/ff-kbu/freifunk-kbu-info-page-export (HTML-Export)
| Nur alte Firmware - Nutzung in Zukunft?
| Alte Firmware - Nutzung in Zukunft?
|-
|-
| Firmware
| 5
| OpenWRT für Nodes
| fastd-upload
| Annahme von fastd-Keys auf VPN-Servern
|  
|  
* https://github.com/ff-kbu/fff (neu)
* https://github.com/ff-kbu/fastd-service
* https://github.com/ff-kbu/fff-kbu (alt)
| deprecated, server pruefen node keys nicht mehr
| Zzgl. git-repos für packages, submodules.
|-
|-
|}
|}


== Infrastruktur ==
= Infrastruktur =
Zur Entwicklung verwenden wir
Zur Entwicklung verwenden wir
* Redmine (Issue-Tracking, Projektplanung): https://redmine.kbu.freifunk.net
* YouTrack: http://tracker.kbu.freifunk.net/
* Jenkins (builds, CI): http://jenkins.kbu.freifunk.net
* Jenkins (builds, CI): https://kbu.freifunk.net/jenkins
 
= Software =
== Firmware ==
 
<span style="color: #C00">Hinweis. Die folgenden Informationen beziehen sich auf die derzeit stabile Version ("1.0").</span>
[[1.1-Test-Status|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 . <br />
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 ===
* OpenWRT 12.09 "Attitude Adjustment" pre-Release, Snapshot - https://dev.openwrt.org/
* batman-adv 2012.4.0 http://www.open-mesh.org/projects/batman-adv/wiki
* fastd 6 https://projects.universe-factory.net/projects/fastd
 
Als Topologie wird [[Netzwerk-Konfiguration#Komplettes_Bridging |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 [http://jenkins.kbu.freifunk.net/jenkins/job/fff-v0.3-generic-continous/]. Der Jenkins Build kann auch über das Webinterface gestartet werden. Hierzu ist ein Account [mailto:jan@jluehr.de?subject=KBU-Jenkins-Account] 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:
{| class="wikitable"
|- class="hintergrundfarbe6"
!| 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 <tt>fff</tt> Repository zu finden. Alle andere Repositories sind in <tt>feeds.conf.default</tt> 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 <tt>v0.3.x</tt> bzw. <tt>v0.3.x-tl-wr1043nd</tt>. Die Umbenennung erlaubt ein einfaches, lokales Wechseln der Branches
* Key-Upload via curl ([https://github.com/ff-kbu/fff/commit/3f2e1feba5d6661321bb8bff0ad7e9ffeb716da4], [https://github.com/ff-kbu/fff/commit/21a430cdce3f0bc1f580bab1278a67500ca338f4])
* Mesh-VPN per default aktiviert. [https://github.com/ff-kbu/fff/commit/2895b16d0b3f75497dcc5f7ec0280e787d615ee4]
* BSSID / ESSID geändert [https://github.com/ff-kbu/fff/commit/e12d8d1d6f9472f6d775facf4559a00b96e10a52]
* fastd Verschlüsselung deaktiviert [https://github.com/ff-kbu/fff/commit/e12d8d1d6f9472f6d775facf4559a00b96e10a52]
Weitere Änderungen sind dem commit-Log  zu entnehmen [https://github.com/ff-kbu/fff/commits/v0.3-generic] 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
 
[[Kategorie:Netz-und-Technik]]

Aktuelle Version vom 28. August 2019, 11:02 Uhr

Hinweis: Diese Seite wurde in das Archiv verschoben. Die Informationen sind größtenteils veraltet und nur für Spezialfälle relevant.

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