Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
knb:firmware [2021/05/01 00:06] – goligo | knb:firmware [2022/01/15 23:08] – [OpenWRT] goligo | ||
---|---|---|---|
Zeile 15: | Zeile 15: | ||
Dependencies installieren: | Dependencies installieren: | ||
<code bash> | <code bash> | ||
- | sudo apt install git make python2 libncurses5-dev libncursesw5-dev gcc g++ gawk | + | sudo apt install git make python2 libncurses5-dev libncursesw5-dev gcc g++ gawk qemu-utils |
</ | </ | ||
Zeile 48: | Zeile 48: | ||
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:// | + | [[https:// |
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 " | 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 " | ||
Zeile 82: | Zeile 82: | ||
Dann starten wir den Gluon-Build um die für Freifunk München angepassten Firmware-Images zu bauen. | Dann starten wir den Gluon-Build um die für Freifunk München angepassten Firmware-Images zu bauen. | ||
- | ===== Build Parameter ===== | + | ===== Branches & Tags ===== |
+ | |||
+ | Es gibt im GitHub-Repository diverse Branches. Die beiden die aktuell genutzt werden sind **stable** und **experimental**. Wenn man das erste Mal einen anderen Remote-Branch auschecken will, so muss man ihn explizit mit angeben: | ||
+ | |||
+ | <code bash> | ||
+ | git checkout -b experimental origin/ | ||
+ | </ | ||
+ | |||
+ | Zurück, oder zu anderen Branches die man schon hat, geht es dann einfach mit | ||
+ | |||
+ | <code bash> | ||
+ | git checkout stable | ||
+ | </ | ||
+ | |||
+ | Wenn man zwischen Branches wechselt, der ein anderes Gluon-Release verwendet, so sollte man vorher "make clean" machen, damit es nicht zu Komplikationen kommt. Momentan nutzen unsere Branches das gleiche Gluon-Release, | ||
+ | |||
+ | Für jeden Release gibt es einen Tag im Git-Repository. Um einen bestimmten Stand nochmal zu bauen, muss man also einen Checkout auf den gewünschten Tag machen, das geht so: | ||
+ | |||
+ | <code bash> | ||
+ | git checkout -b release tags/ | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ===== Build Parameter | ||
**GLUON_TARGETS** | **GLUON_TARGETS** | ||
Zeile 99: | Zeile 123: | ||
make GLUON_TARGETS=" | make GLUON_TARGETS=" | ||
</ | </ | ||
+ | |||
+ | **GLUON_DEVICES** | ||
+ | |||
+ | Erlaubt es Images nur für einzelne Geräte zu bauen. Den genauen Device-Namen findet man in der entsprechenden targets-Datei, | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Im unten stehenden Beispiel baut man nur das Image für den TP-Link WR841 v13, es können auch mehrere Devices und mehrere Targets angegeben werden. | ||
+ | |||
+ | <code bash> | ||
+ | make GLUON_TARGETS=" | ||
+ | </ | ||
+ | |||
+ | **WEITERE** | ||
+ | |||
+ | Gluon bietet eine Menge Umgebungsvariablen an, mit denen man den Build weiter konfigurieren kann, die vollständige Liste findet sich in der Gluon-Dokumentation: | ||
+ | |||
+ | [[https:// | ||
Wenn man noch mehr Einfluss auf den Build nehmen will, so kann man den Gluon-Build direkt starten. Zuerst lässt man dafür " | Wenn man noch mehr Einfluss auf den Build nehmen will, so kann man den Gluon-Build direkt starten. Zuerst lässt man dafür " | ||
Zeile 118: | Zeile 160: | ||
Wenn man neue Geräte zum Build hinzufügen will, so sind diese neben dem Makefile hier zusätzlich einzutragen, | Wenn man neue Geräte zum Build hinzufügen will, so sind diese neben dem Makefile hier zusätzlich einzutragen, | ||
- | Der GitHub-Build wird ausgelöst, wenn man einen neuen Tag auf das GitHub-Repository pushed. Das funktioniert auch, wenn es nicht das FFMUC-Repository selber ist, sondern ein eigener Fork davon. | + | Der GitHub-Build wird ausgelöst, wenn man einen neuen Tag auf das GitHub-Repository pushed. Das funktioniert auch, wenn es nicht das FFMUC-Repository selber ist, sondern ein eigener Fork davon. Wenn man nur mal etwas ausprobieren will, sollte man natürlich die Targets im firmware.yml entsprechend reduzieren und nicht immer für alle Plattformen bauen lassen. |
<code bash> | <code bash> | ||
Zeile 125: | Zeile 167: | ||
</ | </ | ||
+ | ===== Neue Geräte ===== | ||
+ | |||
+ | 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, | ||
+ | |||
+ | === 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, | ||
+ | |||
+ | === Kein Gluon Support === | ||
+ | |||
+ | Wenn OpenWRT-Support vorhanden ist, aber kein Gluon-Support, | ||
+ | |||
+ | [[https:// | ||
+ | [[https:// | ||
+ | |||
+ | === Kein FFMUC Support === | ||
+ | |||
+ | Das sollte eigentlich gar nicht passieren - die Liste der FFMUC-Geräte ist generiert aus Gluon, mittels contrib/ | ||
+ | |||
+ | [[https:// | ||
+ | [[https:// | ||