knb:firmware

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
knb:firmware [2022/01/15 23:10] – [Gluon] goligoknb:firmware [2022/10/03 16:19] – Dependencies wurden verschoben grische
Zeile 13: Zeile 13:
 Das hier sind ohne viel Erklärung die Schritte aufgelistet um einmal die Quelltexte herunterzuladen und ein Firmware-Image zu erzeugen. Weiter unten wird dann genauer erklärt wie alles aufgebaut ist und zusammen spielt. So wie es hier steht ist es getestet auf Ubuntu 20.04 Desktop, sollte aber genauso auf anderen Linux-Distributionen funktionieren. Das hier sind ohne viel Erklärung die Schritte aufgelistet um einmal die Quelltexte herunterzuladen und ein Firmware-Image zu erzeugen. Weiter unten wird dann genauer erklärt wie alles aufgebaut ist und zusammen spielt. So wie es hier steht ist es getestet auf Ubuntu 20.04 Desktop, sollte aber genauso auf anderen Linux-Distributionen funktionieren.
  
-Dependencies installieren:+Git installieren:
 <code bash> <code bash>
-sudo apt install git make python2 libncurses5-dev libncursesw5-dev gcc g++ gawk qemu-utils+sudo apt-get update 
 +sudo apt-get install -y git
 </code> </code>
  
Zeile 26: Zeile 27:
 <code bash> <code bash>
 cd site-ffm cd site-ffm
 +</code>
 +
 +Dependencies installieren:
 +<code bash>
 +./install_build_dependencies.sh
 </code> </code>
  
Zeile 39: Zeile 45:
 Natürlich kann die Freifunk-Community in München nicht selber eigene Software für so viele verschiedene Routermodelle schreiben, sondern greift auf bestehende Opensource-Projekte zurück, die entsprechend den Anforderungen konfiguriert, kombiniert und angepasst werden, um zu einer Firmware zu kommen, die unseren Bedürfnissen entpricht. Natürlich kann die Freifunk-Community in München nicht selber eigene Software für so viele verschiedene Routermodelle schreiben, sondern greift auf bestehende Opensource-Projekte zurück, die entsprechend den Anforderungen konfiguriert, kombiniert und angepasst werden, um zu einer Firmware zu kommen, die unseren Bedürfnissen entpricht.
  
-Die Grundlage der Firmware ist **OpenWRT**, eine Linux-Distribution um die Standardfirmware von Endkunden-Routern zu ersetzen. Diese wird von **Gluon** erweitert und konfiguriert, so dass sie nicht mehr als normaler Heimnetzrouter funktioniert, sondern als Freifunk-Mesh-Router. **Freifunk München** wiederum sucht aus, für welche Router Firmware gebaut werden soll, welche Funktionen von Gluon aktiviert sind und hat zusätzliche Pakete geschrieben, um neue Funktionen hinzufügen.+Die Grundlage der Firmware ist **OpenWrt**, eine Linux-Distribution um die Standardfirmware von Endkunden-Routern zu ersetzen. Diese wird von **Gluon** erweitert und konfiguriert, so dass sie nicht mehr als normaler Heimnetzrouter funktioniert, sondern als Freifunk-Mesh-Router. **Freifunk München** wiederum sucht aus, für welche Router Firmware gebaut werden soll, welche Funktionen von Gluon aktiviert sind und hat zusätzliche Pakete geschrieben, um neue Funktionen hinzufügen.
  
-==== OpenWRT ====+==== OpenWrt ====
  
-[[https://openwrt.org/|OpenWRT Dokumentation]] +[[https://openwrt.org/|OpenWrt Dokumentation]] 
-[[https://openwrt.org/docs/guide-developer/source-code/start|OpenWRT Source Code]]+[[https://openwrt.org/docs/guide-developer/source-code/start|OpenWrt Source Code]]
  
-OpenWRT stellt alternative Router-Firmware für eine große Zahl von Endkunden-Routern (z.B. von D-Link, Netgear, TP-Link, AVM, Unifi) basierend auf Linux zur Verfügung. Dabei ist der Funktionsumfang von OpenWRT in der Regel größer als der der Originalfirmware und es gibt Updates für Modelle, die beim Hersteller schon aus der Wartung sind. +OpenWrt stellt alternative Router-Firmware für eine große Zahl von Endkunden-Routern (z.B. von D-Link, Netgear, TP-Link, AVM, Unifi) basierend auf Linux zur Verfügung. Dabei ist der Funktionsumfang von OpenWrt in der Regel größer als der der Originalfirmware und es gibt Updates für Modelle, die beim Hersteller schon aus der Wartung sind. 
  
 [[https://openwrt.org/toh/start?dataflt[Supported+Current+Rel*~]=21.02|Liste unterstützter Geräte der aktuellen Version 21.02]] [[https://openwrt.org/toh/start?dataflt[Supported+Current+Rel*~]=21.02|Liste unterstützter Geräte der aktuellen Version 21.02]]
Zeile 52: Zeile 58:
 Da es sich um eine Linux-Distribution handelt ist eine große Menge Software-Pakete verfügbar, der auf der Geräten installiert werden kann. Es gibt einen Paketmanager namens "opkg" mit dem Software aus dem Repository installiert werden kann. Da es sich um eine Linux-Distribution handelt ist eine große Menge Software-Pakete verfügbar, der auf der Geräten installiert werden kann. Es gibt einen Paketmanager namens "opkg" mit dem Software aus dem Repository installiert werden kann.
  
-[[https://openwrt.org/packages/index/start|OpenWRT Pakete]]+[[https://openwrt.org/packages/index/start|OpenWrt Pakete]]
  
-Der OpenWRT-Build ist umfangreich und komplex, aufgrund der Unterstützung vieler verschiedener Hardware-Plattformen. Da der Build in der Regel auf einem x86-64-System läuft, muss zunächst für jede Plattform eine entsprechende Cross-Compile-Toolchain aufgebaut werden, mit der dann der Linux-Kernel, das Userland und schliesslich die OpenWRT-Pakete für die jeweilige Plattform gebaut werden können. +Der OpenWrt-Build ist umfangreich und komplex, aufgrund der Unterstützung vieler verschiedener Hardware-Plattformen. Da der Build in der Regel auf einem x86-64-System läuft, muss zunächst für jede Plattform eine entsprechende Cross-Compile-Toolchain aufgebaut werden, mit der dann der Linux-Kernel, das Userland und schliesslich die OpenWrt-Pakete für die jeweilige Plattform gebaut werden können. 
  
 ==== Gluon ==== ==== Gluon ====
Zeile 65: Zeile 71:
 [[https://gluon.readthedocs.io/en/v2021.1.1/user/supported_devices.html|Unterstützte Geräte v2021.1.1]] [[https://gluon.readthedocs.io/en/v2021.1.1/user/supported_devices.html|Unterstützte Geräte v2021.1.1]]
  
-Der Gluon-Build funktioniert so, dass zunächst die Git-Repositories von OpenWRT und der zusätzlichen Gluon-spezifischen Pakete geladen werden. Dann werden Patches auf diese Projekte angewendet, um Fehler zu beheben, die im Upstream noch nicht gefixed sind, oder zusätzliche Features zu implementieren, die nicht über Pakete abgebildet werden können. Der OpenWRT-Build wird so konfiguriert, dass zum Beispiel das OpenWRT-UI LuCi weggelassen und durch das Gluon-UI ersetzt wird. Dann wird der OpenWRT-Build gestartet, um die Images zu bauen.+Der Gluon-Build funktioniert so, dass zunächst die Git-Repositories von OpenWrt und der zusätzlichen Gluon-spezifischen Pakete geladen werden. Dann werden Patches auf diese Projekte angewendet, um Fehler zu beheben, die im Upstream noch nicht gefixed sind, oder zusätzliche Features zu implementieren, die nicht über Pakete abgebildet werden können. Der OpenWrt-Build wird so konfiguriert, dass zum Beispiel das OpenWrt-UI LuCi weggelassen und durch das Gluon-UI ersetzt wird. Dann wird der OpenWrt-Build gestartet, um die Images zu bauen.
  
 ==== FFMUC ==== ==== FFMUC ====
Zeile 110: Zeile 116:
 **GLUON_TARGETS** **GLUON_TARGETS**
  
-Hier kann man ein oder mehrere Targets angeben, für die Images gebaut werden sollen. Zum Testen empfiehlt sich eine VM zu benutzen, in der man x86-64 Images laufen lassen kann. Wenn man Firmware für ein bestimmtes Gerät bauen will, so muss man erst herausfinden, in welchem Target es enthalten ist. Hier lohnt sich ein Blick auf der Liste der unterstützten Geräte von OpenWRT oder Gluon.+Hier kann man ein oder mehrere Targets angeben, für die Images gebaut werden sollen. Zum Testen empfiehlt sich eine VM zu benutzen, in der man x86-64 Images laufen lassen kann. Wenn man Firmware für ein bestimmtes Gerät bauen will, so muss man erst herausfinden, in welchem Target es enthalten ist. Hier lohnt sich ein Blick auf der Liste der unterstützten Geräte von OpenWrt oder Gluon.
  
 <code bash> <code bash>
Zeile 171: Zeile 177:
 Die Motivation selber ein Firmware-Image zu bauen liegt oft darin, dass man ein Gerät hat, für das FFMUC keine Firmware anbietet. Da gibt es unterschiedliche Schwierigkeitsgrade, je nachdem wie weit der Support für diese Geräte in den zugrunde liegenden Frameworks schon vorhanden ist. Die Motivation selber ein Firmware-Image zu bauen liegt oft darin, dass man ein Gerät hat, für das FFMUC keine Firmware anbietet. Da gibt es unterschiedliche Schwierigkeitsgrade, je nachdem wie weit der Support für diese Geräte in den zugrunde liegenden Frameworks schon vorhanden ist.
  
-=== Kein OpenWRT Support ===+=== Kein OpenWrt Support ===
  
-Als erstes ist zu prüfen, ob OpenWRT das Gerät schon unterstützt. Sollte dies nicht der Fall sein, sieht es schlecht aus. Ein neues Gerät in OpenWRT zu supporten ist aufwendig und verlangt tiefgehendes Wissen über den verwendeten SoC, den Boot-Prozess, weitere Hardware die darin verbaut ist. Hier heisst es warten, ob/wann eine Unterstützung in OpenWRT kommt. Leider gibt es viele beliebte FritzBox Geräte, für die es absehbar keine Unterstütung geben wird (z.B. 7390, 7490).+Als erstes ist zu prüfen, ob OpenWrt das Gerät schon unterstützt. Sollte dies nicht der Fall sein, sieht es schlecht aus. Ein neues Gerät in OpenWrt zu supporten ist aufwendig und verlangt tiefgehendes Wissen über den verwendeten SoC, den Boot-Prozess, weitere Hardware die darin verbaut ist. Hier heisst es warten, ob/wann eine Unterstützung in OpenWrt kommt. Leider gibt es viele beliebte FritzBox Geräte, für die es absehbar keine Unterstütung geben wird (z.B. 7390, 7490).
  
 === Kein Gluon Support === === Kein Gluon Support ===
  
-Wenn OpenWRT-Support vorhanden ist, aber kein Gluon-Support, dann sieht es schon etwas besser aus. Entweder ist das Gerät noch nicht vollständig unterstützt und deswegen absichtlich weggelassen oder es ist so exotisch, dass noch keiner danach verlangt hat. Man kann erstmal schauen, ob es vielleicht im "next" Branch schon enthalten ist, also für das kommende Release geplant ist. Man kann auch händisch die entsprechende Targets-Datei in Gluon dafür ergänzen bzw. anlegen und hat eine reelle Chance, dass ein funktionierendes Image herauskommt.+Wenn OpenWrt-Support vorhanden ist, aber kein Gluon-Support, dann sieht es schon etwas besser aus. Entweder ist das Gerät noch nicht vollständig unterstützt und deswegen absichtlich weggelassen oder es ist so exotisch, dass noch keiner danach verlangt hat. Man kann erstmal schauen, ob es vielleicht im "next" Branch schon enthalten ist, also für das kommende Release geplant ist. Man kann auch händisch die entsprechende Targets-Datei in Gluon dafür ergänzen bzw. anlegen und hat eine reelle Chance, dass ein funktionierendes Image herauskommt.
  
 [[https://github.com/freifunk-gluon/gluon/tree/master/targets|master-Branch Targets]] [[https://github.com/freifunk-gluon/gluon/tree/master/targets|master-Branch Targets]]
  • knb/firmware.txt
  • Zuletzt geändert: 2023/04/26 16:18
  • von awickert