Freifunk ff3l Firmware bauen, Vortrag von kpanic im http://technik.cafe/ Lörrach, 2017-11-16
150 Minuten, 0.8 GByte mp4 Video.
Der zweite Teil, Freifunk ff3l Gateway Server, ist hier
00:01:18 Thema: Freifunkfirmware basiert auf Gluon basiert auf LEDE basiert auf Limux , wie geht das
00:02:09 LEDE ist ein Linux (Embedded Development Environment), Gluon ist vorkonfiguriertes LEDE, Community ff3l Firmware ist vorkonfiguriertes Gluon
00:03:09 Wo ist welcher Hardwaretreiber
00:03:59 WLAN Chip treiber, Platinenlayout, PIN, Sock
00:05:32 Wenn ein neues Gerät unterstützt werden soll ...
00:06:26 3 Entwickler: Linux für Treiber, LEDE für Hardware Support, Gluon für Anpassung
00:07:30 Von Gluon zu ff3l-spezifischer Firmware
00:07:57 (Unterbrechung, Bildschirmauflösung ändern)
00:09:00 LEDE als Fork von OpenWRT
00:13:02 Firmware bauen, Dokumentation: gluon.readthedocs.io
00:14:22 Gluon Releases Übersicht
00:15:22 Controller: meist MIPS, selten ARM, einmal PowerPC
00:16:07 Github link kopieren, dann auf Konsole: git clone github.com/freifunk-gluon/gluon.git auf einen starken lokalen Rechner (bauen dauert später einen Tag)
00:18:02 Probleme für neue Hardware: Archer C25, ath10k 5GHz Atheros Treiber ist ein Binärblob
00:20:02 Broadcom geschlossen, nicht brauchbar für Freifunk
00:21:12 CPE210 V2 Hardware Problem Platinenlayout, und bootloader, man kommt nicht mehr auf die Konsole, Problem serielle Schnittstelle
00:23:42 OpenWRT kann auf Fritzbox (4170) installiert werden, es gibt aber keine Treiber für Schnittstellen (die Hardware)
00:25:09 Gluon auf dem lokalen Rechner, Dokumentation ist auf gluon/docs , ähnlich wie auf readthedocs.io
00:25:59 glon/contrib einthält ein paar Scripte, z.B. sign.sh womit a Ende signiert wird
00:26:21 Gluon: ein grosses makefile und ein stapel patches, womit LEDE für die verschiedenen Router als Firmware gebaut wird.
00:25:57 Als es noch OpenWrt war, waren es viel mehr patches. Viele sind jetzt schon in LEDE
00:27:12 gluon/patches/lede 32 Dateien
00:28:12 Ein Patch File ist die Differenz aus der neuen Funktionalität und dem alten Original. TP-Link Archer C25 ist schon im neuen LEDE master, aber noch nicht in den LEDE releases. Patch = backport von LEDE master zu Gluon patch. Wenn es dann im nächsten LEDE Release ist, wird es nicht mehr gepatcht.
00:29:57 TP-Link Router: viele Releases wegen neuem Bootloader
00:30:42 Hardware Unterschiede am Beispiel TP-Link TL-940 V4 vs. V3
00:32:11 gluon/patches/packages
00:32:54 Bibliothek für Routertypen https://gluon.readthedocs.io/en/latest/#supported-devices-architectures
00:34:11 gluon/docs(site-examples
00:34:27 i18n Texte für die Konfigurationsoberfläche
00:35:07 3 Sprachen, D, F, je nach Systemsprache, ansonsten E
00:36:12 modules für eigene pakete. Bei ff3l nur eins, für eine subcommunity
00:37:42 site-examples, es gibt 2 wichtige Files: site.mk beeinflusst das bauen der Firmware, site.conf ist die Konfiguration des Routers
00:38:52 site.mk packages: batman (mesh protokoll), fastd (VPN), alfred (ist im Beispile, nicht in ff3l), respondd (Telemetrie Austausch)
00:40:14 Wo liegen die Pakete beim/zum Bauen?
00:40:37 Bauvorgang: Gluon starten, läd LEDE sources, läd die ganze build-chain
00:41:14 Release Name
00:42:22 Priority für Updates
00:43:10 ff3l-Version auf github.com/ff3l/site-ff3l site.mk
00:43:42 USB Pakete, AHCI treiber
00:45:02 Speicherort Probleme z.B. bei Futro, IDE Treiber war nicht im Kernel, findet später sein root nicht.
00:47:02 mit USB Stick auf irgendeinem Rechner booten, wird Freifunk-Router
00:47:52 Region eu vs. us, beeinflusst WLAN-Kanäle
00:48:15 ath10k mesh: über IFS oder IBSS, welcher blob-Treiber wird verwendet
00:49:07 Release Nummer definiert durch text-bausteine
00:50:22 ff3l auf Github gibt es 2 branches: Master, und die alte 2016.2
00:51:27 site.conf: Konfiguration des Routers, leicht verschieden pro subcommunity
00:52:10 ff3l Historie: war erst ein Netzwerk, dann split in subcommunities: ff3l-hoho, ff3l-wtk, ff3l-wald, ff3l-wiese, ff3l-loe, ff3l-3land etc
00:52:52 subcommunities: fastd läuft auf einem anderen UPD port: 10000, 10001, 10002 etc. Batman jeweils anderes Interface: bat0, bat1, bat2 etc.
00:53:32 IPs waren früher: 10.119.0.0./16
00:54:00 hostname prefix, was vor MAC Adresse kommt als default Routername. Site name: name der subcommunity. Site code: ff3l-subcommunity, z.B. ff3l-3land, ff3l-hoho ...
00:55:14 IPv4 der subcommunities jetzt: 10.119.0.0/20, 10.119.16.0, .32.0, -48.0 etc. immer 16 mehr
00:56:18 sichtbar mit http://ip.ff3l : IPv4 10.119.92.133, IPv6 fdc7:3c0d:ff31:5:5c4f:6e2d:145b:5f44, Nextnode ff3l-loerach-technik-cafe-1, Gateway gw7.ff3l.net
00:57:02 Zeitzone, ntp server für Uhr, regulatorische Domain DE
00:58:00 WLAN-Konfiguration, Kanal, Geschwindigkeiten, eventuel nur 802.11n mindestens 150 MBit, sonst Airtime Probleme.
00:59:32 Kanaldiskussion, warum, default Kanal 1, schwer zu ändern
01:02:44 Andere Philisophie bei Freifunk Bodensee: alles einstellbar über Weboberfläche
01:04:17 ESSID einstellen (Freifunk), meshnet (subommunity-freifunk), dann auch noch mal für 5 GHz. Wir nehmen Kanal 44, indoor, kein DFS (Dynamic Frequency Selection) Zwang
01:05:07 nextnode Adresse: IPv4 10.119.x.1, IPv& ...:x::1; Anycast: jeder auf sich selbst
01:06:02 mesh protokoll, gateway selection class: damit batman den besten gateway findet
01:09:42 batman: gateway bestimmt auch die IP Adressvergabe, DHCP und batman und router und unicast und gateways
01:12:17 Nachteil: flap, schneller Wechsel zwischen gateways mit ähnlich guter TQ
01:13:09 fastd Konfiguration (VPN)
01:14:07 mtu 1398 bei ff3l, 1200 im exmaple file. maximales Datenpaket im VPN Tunnel. Warum nicht mehr 1426? Wegen bedarf DSL PPPoE, fastd, DS-Lite (IPv4 in IPv6), Kabelmodem.
01:19:02 welche verschlüsselung. Es gibt sogar die Option "none", dann gibt es auch keinen key.
01:20:47 Liste der gegenstellen = peers = gateways (vom Router aus gesehen)
01:21:22 ff3l: 2 methoden, 1 VPM verbindung (also: zu einem gateway), publich keys und remote connection details von jedem gateway
01:23:50 Autopdater branches, z.B. stable, experimental. je: public key der Leute die signieren dürfen
01:29:02 script=true modus: Start ohne Konfigmodus nach Ersteinrichtung
01:30:47 Höhenangabe weglassem verwirrt
01:32:22 in Gluon Verzeichnis: git clone github.com/ff3l/site-ff3l.git site
01:33:07 cd site, jetzt: für eine subcommunity bauen. loe, also: cp site.cof.loe.template site.conf . Manuell editieren als Demo, normalerwiese alles per script.
01:34:42 make update: legt im gluon Verzeichnis ein Verzeichnis gluon/lede an, dorthin wird lede ausgecheckt - läd Quellcode von lede und die buildchain, und appliziert patches. Dauert.
01:35:46 Ende Teil 1, Pause weggenschnitten, Beginn Teil 2
01:35:46 Make Update hat schon LEDE source geladen, läd jetzt Gluon Packages
01.36:09 gluon/targets: alle Hardwarearchitekturen, jede muss separat gebaut werden. ar71xx-generic, ar71xx-tiny, x86-64, etc.
01:37:15 Liste der Geräte in ar71xx-tiny, z.B. 841, 850 ... die 4MB Gerate. no_opkg paketmanager und diverse packages (USB, envtool) werden weggelassen, Platz sparen.
01:39:12 OPKG Paketmanager weglassen - Paketmanager (Pakete nachinstallieren) wird bei ff3l sowieso selten oder nie verwendet (Beispiel anderer Editor nano statt vi)
01:43:42 brcm2708-bcm2708 Raspberry Pi oder sunxi Banana Pi, geht, aber ungeeignet, ungenutzt, nicht mehr bei ff3l
01:45:20 im File stehen die konkreten Geräte. z.B. ar71xx-nand: device netgearwndr4300 WNDR4300V1
01:47:22 target.mk - alle targets, manche davon als BROKEN - später konfigurierbar ob diese auch zur Verfügung gestellt werden.
01:48:40 make update ist fertig, packages sind da. make GLUON_TARGET=ar71xx-tiny
01:50:45 bauen bei Enter: 1. build chain: crosscompile: auf x86 Pc für andere Architektur kompilieren
01:52:30 Linux muss compiler haben damit es überhaupt geht. Ubuntu z.B. braucht utils und compiler von Hand installiert.
01:55:55 Verzeichnis Output wird dann die Firmware Images enthalten
01:56:10 dann: make manifest manifest - zum Zeigen auf anderen Rechner per ssh.
01:56:26 per branch (stable, experimental): 2 Verzeichnisse: factory und sysupgrade. Sysupgrade ist natives Format ohne bootloader, Factory hat Zusatz um Freifunkfirmware wie ein Herstellerupdate zu erkennen.
02:01:15 Inhalt experimental.manifest, Zeile pro Router: Modell, Firmwareversion, SHA-1 hash des Firmwareimagefiles, Filename. Nachmal mit SHA-256 hash.
02:05:00 Am Ende der manifest datei: Signatur (Prüfsumme der manifest Datei (ohne die Prüfsumme selbst), signiert mit dem Schlüssel (hier von kpanic, allgemein von denen die signieren dürfen).
02:05:45 Sicherheit beim Autoupdate über Hashes und Signaturen
02:06:50 Zeitaspekte: Datum, Uhrzeit, Prüfung auf "neuer"
02:09:30 wie flasht man auf alte Firmwareversion
02:10:35 Spezialfall mit Versionsnummernhochzählen beim Netzsplit
02:11:40 Spezialfall: Ports umleiten beim Netzsplit
02:13:20 (Essen, Ende?)
02:15:25 Entwicklung über github/freifunk-gluon/gluon , viele Branches: Master ist aktuelle Neuentwicklung, v2017.1.x ist Branch für aktuelles Release
02:16:20 Bugfix in Master: allenfalls backport nach v2017.1.x + (plus) (konkret z.B. v2017.1.3+3)
02:17:10 Pointreleases: z.B. v2017.1.4 (Bild unscharf ab 00:43)
02:19:10 Spezialfall 2016.2.6 nur x86, nur 1 Tag lang, Autoupdaterfix Futros, Erklärung Futro Paritionen, Grössenprobleme.
02:23:10 Bugtracker in Github
02:24:20 Gluon Geschichte seit Freifunk Lübeck
02:25:26 gluon-alt-scape Erweiterungs package - Direktausleitung für Internet, Freifunk intern geht trotzdem (Bild wieder scharf)
02:27:15 Freifunk und Gluon und ff3l IRC
02:30:10 Ende