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
technik:software:firmware_selbst_kompilieren_und_signieren [09.12.2017 - 08:59] Fliptechnik:software:firmware_selbst_kompilieren_und_signieren [27.05.2019 - 15:42] (aktuell) nrb
Zeile 1: Zeile 1:
-==== Zielgruppe ====  +siehe https://wiki.freifunk-stuttgart.net/technik:software:gluon:kompilieren_signieren
-Interessierte, die die Freifunk Images selbst kompilieren wollen. Fertige Images von Freifunk stuttgart sind hier zu finden: [[http://firmware.freifunk-stuttgart.de]] +
- +
- +
-==== 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 +
- +
-Hiermit werden alle installiert: +
-<code>sudo apt-get install git subversion python build-essential gawk unzip libncurses-dev libz-dev libssl-dev wget</code> +
- +
-==== Build-Umgebung einrichten ==== +
-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/]] +
- +
-<code> +
-#!/bin/bash +
-set -e +
- +
-GLUON_VERSION=v2017.1.4 +
-CORES=$(expr $(nproc) + 1) +
- +
-git clone https://github.com/freifunk-gluon/gluon.git #-b GLUON_VERSION +
-cd gluon/ +
-git clone https://github.com/freifunk-stuttgart/site-ffs.git site #-b feature/2017.1.x site +
-make update +
- +
-OPTIONS="GLUON_BRANCH=stable BROKEN=1 " +
-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 +
- +
-make manifest GLUON_BRANCH=stable +
-make manifest GLUON_BRANCH=beta +
-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> +
- +
-Die fertigen Firmware-Images befinden sich anschließend im Verzeichnis: +
-<code>gluon/images/</code> +
- +
- +
-==== Firmware Image manuell flashen ==== +
-Prinzipiell ist so vorzugehen, wie auf der Seite [[anleitungen:router_flashen|router_flashen]] beschrieben. +
- +
- +
- +
- +
- +
-====== Firmware Image für vorbereiten Autoupdate ====== +
-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 ==== +
-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: +
- +
-<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>   +
- +
----- +
-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.1512809972.txt.gz
  • Zuletzt geändert: vor 5 Jahren
  • (Externe Bearbeitung)