technik:software:firmware_selbst_kompilieren_und_signieren

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
Letzte ÜberarbeitungBeide Seiten der Revision
firmware_selbst_kompilieren_und_signieren [12.05.2015 - 11:38] – Links adapted because of a move operation 66.249.64.140technik:software:firmware_selbst_kompilieren_und_signieren [01.05.2019 - 12:46] – [Firmware-Image für vorbereiten Autoupdate] Wilhelm
Zeile 1: Zeile 1:
-====== Zielgruppe ======  +==== Zielgruppe ====  
-Interessierte, die die Freifunk Images selbst kompilieren wollen.+Interessierte, die die Freifunk Images selbst kompilieren wollen. Fertige Images von Freifunk stuttgart sind hier zu finden: [[http://firmware.freifunk-stuttgart.de]]
  
-====== Worum geht es hier? ====== 
-Ich habe aus verschiedenen Freifunk Wikis mir die Information zusammengetragen, um die Firmware selbst bauen und signieren zu können und den Autoupdate Mechanismus von Gluon zu verwenden. Diese Seite hat das Ziel, vorhandene Infos zu verlinken und Neues zu ergänzen. 
  
-====== Voraussetzungen ====== +==== Voraussetzungen ==== 
-  * Linux System (getestet mit Ubuntu 14.04 LTS)+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)
  
-====== Privaten und öffentlichen Schlüssel zum Signieren erzeugen ====== +===== Firmware bauen ===== 
-Auf den Seiten von Freifunk Hamburg gibt es eine gute Erklärung, wie man sich selbst eine Signatur anlegt: +==== Benötigte Pakete ====
-[[http://wiki.freifunk.net/Freifunk_Hamburg/Firmware| Wiki Freifunk Hamburg Firmware]] +
-Kapitel [[http://wiki.freifunk.net/Freifunk_Hamburg/Firmware#Schl.C3.BCssel_erzeugen| Schlüssel erzeugen]].+
  
-=== Eventuelle Probleme ===+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
  
-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: +Hiermit werden alle installiert: 
 +<code>sudo apt-get install git subversion python build-essential gawk unzip libncurses-dev libz-dev libssl-dev wget</code>
  
-  LD_LIBRARY_PATH=/usr/local/lib +==== Build-Umgebung einrichten ==== 
-  export LD_LIBRARY_PATH+Wir haben ein Bash-Script erstellt, um die Erstellung der Freifunk-Stuttgart-Firmware zu vereinfachen. Die Build-Umgebung wird eingerichtet, indem folgendes Skript ausgeführt wird. 
 +Grundlage hiefür ist das Gluon Repository [[https://github.com/freifunk-gluon/gluon.git]] und die Stuttgart spezifische site-conf [[https://github.com/freifunk-stuttgart/site-ffs/]]
  
-====== Freifunk Stuttgart spezifische Konfiguration herunterladen ======= +<code> 
-git clone https://github.com/freifunk-stuttgart/site-ffs.git+#!/bin/bash 
 +set -e
  
-====== öffentlichen Schlüssel der site.conf hinzufügen ====== +GLUON_VERSION=v2017.1.4 
-In der Datei site.conf befindet sich der Abschnitt autoupdater. Hier muss der zuvor erzeugte Public Key jeweils in die Bereich stable, beta und nightly eingetragen werden. Hier mit Beispiel des stable Bereichs: +CORES=$(expr $(nproc) + 1)
  
-  autoupdater = { +git clone https://github.com/freifunk-gluon/gluon.git #-b GLUON_VERSION 
-         ... +cd gluon/ 
-         branches = { +git clone https://github.com/freifunk-stuttgart/site-ffs.git site #-b feature/2017.1.x site 
-               stable = { +make update
-                  ... +
-                  pubkeys = { +
-                           'pasteYourPublicKeyHereIntoTheSingleQuotes', -- YourNameForIdentification +
-                  }, +
-                  ...+
  
-====== Gluon Quellen herunterladen ====== +OPTIONS="GLUON_BRANCH=stable BROKEN=1 " 
-Die [[http://gluon.readthedocs.org/en/latest/user/getting_started.html|Gluon Dokumentation]] fasst die Schritte zum Herunterladen von Github zusammen.+make -j$CORES GLUON_TARGET=ar71xx-generic $OPTIONS 
 +make -j$CORES GLUON_TARGET=ar71xx-tiny $OPTIONS 
 +make -j$CORES GLUON_TARGET=ar71xx-nand $OPTIONS 
 +make -j$CORES GLUON_TARGET=brcm2708-bcm2708 $OPTIONS 
 +make -j$CORES GLUON_TARGET=brcm2708-bcm2709 $OPTIONS 
 +make -j$CORES GLUON_TARGET=mpc85xx-generic $OPTIONS 
 +make -j$CORES GLUON_TARGET=x86-generic $OPTIONS 
 +make -j$CORES GLUON_TARGET=x86-geode $OPTIONS 
 +make -j$CORES GLUON_TARGET=x86-64 $OPTIONS 
 +make -j$CORES GLUON_TARGET=ar71xx-mikrotik $OPTIONS 
 +make -j$CORES GLUON_TARGET=ipq806x $OPTIONS 
 +make -j$CORES GLUON_TARGET=mvebu $OPTIONS 
 +make -j$CORES GLUON_TARGET=ramips-mt7621 $OPTIONS 
 +make -j$CORES GLUON_TARGET=ramips-mt7628 $OPTIONS 
 +make -j$CORES GLUON_TARGET=ramips-rt305x $OPTIONS 
 +make -j$CORES GLUON_TARGET=sunxi $OPTIONS
  
-====== Freifunk Stuttgart Konfiguration in Gluon einbauen ====== +make manifest GLUON_BRANCH=stable 
-  * Im Gluon Verzeichnis das Unterverzeichnis site anlegen +make manifest GLUON_BRANCH=beta 
-  * Die zwei Dateien site.conf und site.mk in das gerade angelegte Verzeichnis site kopieren +make manifest GLUON_BRANCH=nightly 
 +#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 
 +</code>
  
-====== Firmware Images erzeugen ====== +Die fertigen Firmware-Images befinden sich anschließend im Verzeichnis: 
-Die [[http://gluon.readthedocs.org/en/latest/user/getting_started.html#building-the-image| Gluon Dokumentation]] fasst die Schritte zum Kompilieren gut zusammen.+<code>gluon/images/</code>
  
-Gegebenenfalls fehlen noch ein paar Pakete, die nachinstalliert werden müssen ([[http://wiki.freifunk-flensburg.de/wiki/Gluon| Freifunk Flensburg]] listet diese auf): 
  
-  sudo apt-get install <Paketname>+==== Firmware-Image manuell flashen ==== 
 +Prinzipiell ist so vorzugehen, wie auf der Seite [[anleitungen:router_flashen|router_flashen]] beschrieben.
  
  
-====== Firmware Image manuell flashen ====== 
-Prinzipiell ist so vorzugehen, wie auf der Seite [[anleitungen:router_flashen|router_flashen]] beschrieben. Kurzzusammenfassung: 
-  * Reset-Knopf am Router drücken, bis der Router in den Konfig-Modus neustartet 
-  * Verbinden über IP 192.168.1.1 
-  * Auf der Konfig-Oberfläche Expert Mode auswählen. 
-  * Firmware aktualisieren auswählen und Image laden und Upload anklicken. 
-  * Nach einem Neustart sollte nach kurzer Zeit die Nodelist auch bereits die neue Firmware anzeigen. 
  
-====== Firmware Image per Autoupdate ausrollen ====== + 
-Damit die Firmware an alle Stuttgart-Knoten verteilt wird, muss die Firmware noch signiert werden.+ 
 +====== 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) 
 + 
 +<code>sudo apt get install pkg-config cmake</code> 
 + 
 +===ECDSA-Utils=== 
 + Wichtig hierzu ist, dass auf dem System die ECDSA-Utils vorhanden sind. So werden diese installiert: 
 +  
 +<code> 
 +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  
 +</code> 
 + 
 +== 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: 
 + 
 +<code> ecdsautil generate-key > key.secret </code> 
 + 
 +Öffentlichen Schlüssel aus privatem erzeugen: 
 + 
 +<code>cat key.secret | ecdsautil show-key > key.public</code> 
 + 
 +Der Schlüssel sollte nur für den eigenen Benutzer lesbar sein: 
 + 
 +<code>chmod 600 key.secret</code> 
  
 ==== Firmware signieren ==== ==== Firmware signieren ====
-Die [[http://wiki.freifunk-flensburg.de/wiki/Gluon#Signieren_von_Images| Beschreibung]] stammt vom Freifunk Flensburg:+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:
  
-Erstellen einer Manifest-Datei für den jeweiligen Zweig 'stable', 'beta', 'nightly' und danach das Signieren der Manifest-Datei+<code> 
 +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 
 +</code>  
  
-  make manifest GLUON_BRANCH=stable +---- 
-  ./contrib/sign.sh path/To/secret/key  images/sysupgrade/stable.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]]
  • technik/software/firmware_selbst_kompilieren_und_signieren.txt
  • Zuletzt geändert: vor 5 Jahren
  • von nrb