==== Zielgruppe ====
Interessierte, die die Freifunk Images selbst kompilieren wollen. Fertige Images von Freifunk stuttgart sind hier zu finden: [[http://firmware.freifunk-stuttgart.de]]
Unsere Firmware kann ab Version 1.6 ueber eine Continious Integration unter https://gitlab.freifunk-stuttgart.de/firmware/site-ffs gebaut werden. Alternativ ist es natuerlich auch immer noch moeglich, auf der lokalen Maschine zu bauen, dazu findet ihr hier die Anleitung.
==== Voraussetzungen ====
Bevor die Firmware für Freifunk Stuttgart kompiliert werden kann, müssen folgende Voraussetzungen erfüllt sein. Es müssen die genannten Pakete auf dem verwendeten System installiert sein und die Build-Umgebung eingerichtet werden.
* Linux System (getestet mit Ubuntu 14.04 LTS)
===== Firmware bauen =====
==== Benötigte Pakete ====
Um die Firmware kompilieren zu können, müssen folgende Pakete auf dem System vorhanden sein:
* git (to get Gluon and other dependencies)
* subversion
* python (Python 3 doesn’t work)
* build-essential
* gawk
* unzip
* libncurses-dev (actually libncurses5-dev)
* libz-dev (actually zlib1g-dev)
* libssl-dev
* wget
* time (built-in time doesn’t work)
siehe auch https://gluon.readthedocs.io/en/v2018.2.x/user/getting_started.html#dependencies
==== Bauen ====
- [[https://gitlab.freifunk-stuttgart.de/firmware/site-ffs|site-ffs]] **mit Submodules** klonen: ''git clone --recurse https://gitlab.freifunk-stuttgart.de/firmware/site-ffs.git''
- das Build-Skript ''buildall.sh'' aufrufen
==== Firmware-Image manuell flashen ====
Prinzipiell ist so vorzugehen, wie auf der Seite [[anleitungen:router_flashen|router_flashen]] beschrieben.
====== Firmware-Image für Autoupdate vorbereiten ======
Damit die Firmware an alle Stuttgart-Knoten verteilt wird, muss die Firmware noch signiert werden. Die folgenden Schritte sind nicht notwendig wenn die Images nur selbst manuell auf die Router gespielt werden.
Für das signieren muss zuerst eine Manifest-Datei erzeugt werden, welche die Signaturen enthalten wird.
==== Benötigte Pakete ====
pkg-config (wird für ECDSA-Utils benötigt)
cmake (wird für ECDSA-Utils benötigt)
sudo apt get install pkg-config cmake
===ECDSA-Utils===
Wichtig hierzu ist, dass auf dem System die ECDSA-Utils vorhanden sind. So werden diese installiert:
cd
git clone http://git.universe-factory.net/libuecc
cd libuecc
cmake ./
make
sudo make install
sudo ldconfig
cd
git clone https://github.com/tcatm/ecdsautils.git
cd ecdsautils
mkdir build
cd build/
cmake ../
make
sudo make install
== Eventuelle Probleme ==
Falls eine Shared Library libuecc.so.0 nicht gefunden werden kann, könnte es sein, dass die Umgebungsvariable LD_LIBRARY_PATH noch nicht vorhanden ist. Diese kann so gesetzt werden:
LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH
====== Privaten und öffentlichen Schlüssel zum Signieren erzeugen ======
Privaten Schlüssel in Datei 'key.secret' erzeugen:
ecdsautil generate-key > key.secret
Öffentlichen Schlüssel aus privatem erzeugen:
cat key.secret | ecdsautil show-key > key.public
Der Schlüssel sollte nur für den eigenen Benutzer lesbar sein:
chmod 600 key.secret
==== Firmware signieren ====
Die Manifestdateien wurden durch das oben aufgeführte Build Skript bereits erzeugt.
Nun muss für die gewünschte GLUON_BRANCH noch das Signieren vorgenommen werden:
cd gluon
contrib/sign.sh $SECRETKEY output/images/sysupgrade/stable.manifest
contrib/sign.sh $SECRETKEY output/images/sysupgrade/beta.manifest
contrib/sign.sh $SECRETKEY output/images/sysupgrade/nightly.manifest
----
Quellen:
- [[http://gluon.readthedocs.io/en/latest/user/getting_started.html|gluon.readthedocs.io]]
- [[https://wiki.freifunk.net/Freifunk_Lippe_Firmware|Freifunk Lippe]]
- [[http://wiki.freifunk-flensburg.de/wiki/ECDSA_Util#Kompilieren_von_libuecc|libuecc kompiliert und installiert]]
- [[http://wiki.freifunk-flensburg.de/wiki/ECDSA_Util#Kompilieren_und_Installieren_von_ECDSA-Utils|ECDSA-Utils kompiliert und installiert]]