Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
firmware_selbst_kompilieren_und_signieren [12.05.2015 - 11:38] – Links adapted because of a move operation 66.249.64.140 | technik: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, | + | Interessierte, |
- | ====== Worum geht es hier? ====== | ||
- | Ich habe aus verschiedenen Freifunk Wikis mir die Information zusammengetragen, | ||
- | ====== Voraussetzungen | + | ==== Voraussetzungen ==== |
- | * Linux System | + | 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 |
+ | * Linux System (getestet mit Ubuntu 14.04 LTS) | ||
- | ====== | + | ===== 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:// | + | |
- | Kapitel [[http:// | + | |
- | === 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 | + | Hiermit |
+ | < | ||
- | 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, |
+ | Grundlage hiefür ist das Gluon Repository [[https://github.com/freifunk-gluon/ | ||
- | ====== Freifunk Stuttgart spezifische Konfiguration herunterladen ======= | + | < |
- | git clone https://github.com/ | + | #!/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:// |
- | ... | + | cd gluon/ |
- | branches = { | + | git clone https:// |
- | stable = { | + | make update |
- | | + | |
- | pubkeys = { | + | |
- | ' | + | |
- | }, | + | |
- | | + | |
- | ====== | + | OPTIONS=" |
- | Die [[http:// | + | 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 |
+ | # | ||
+ | # | ||
+ | # | ||
+ | </ | ||
- | ====== | + | Die fertigen |
- | Die [[http://gluon.readthedocs.org/en/latest/user/ | + | < |
- | Gegebenenfalls fehlen noch ein paar Pakete, die nachinstalliert werden müssen ([[http:// | ||
- | sudo apt-get install < | + | ==== Firmware-Image manuell flashen ==== |
+ | Prinzipiell ist so vorzugehen, wie auf der Seite [[anleitungen: | ||
- | ====== Firmware Image manuell flashen ====== | ||
- | Prinzipiell ist so vorzugehen, wie auf der Seite [[anleitungen: | ||
- | * 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 | + | |
- | Damit die Firmware an alle Stuttgart-Knoten verteilt wird, muss die Firmware noch signiert werden. | + | |
+ | ====== Firmware-Image für Autoupdate | ||
+ | Damit die Firmware an alle Stuttgart-Knoten verteilt wird, muss die Firmware noch signiert 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) | ||
+ | |||
+ | < | ||
+ | |||
+ | ===ECDSA-Utils=== | ||
+ | | ||
+ | |||
+ | < | ||
+ | cd | ||
+ | git clone http:// | ||
+ | cd libuecc | ||
+ | cmake ./ | ||
+ | | ||
+ | sudo make install | ||
+ | sudo ldconfig | ||
+ | cd | ||
+ | git clone https:// | ||
+ | cd ecdsautils | ||
+ | mkdir build | ||
+ | cd build/ | ||
+ | cmake ../ | ||
+ | | ||
+ | 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=/ | ||
+ | export LD_LIBRARY_PATH | ||
+ | |||
+ | ====== Privaten und öffentlichen Schlüssel zum Signieren erzeugen ====== | ||
+ | Privaten Schlüssel in Datei ' | ||
+ | |||
+ | < | ||
+ | |||
+ | Öffentlichen Schlüssel aus privatem erzeugen: | ||
+ | |||
+ | < | ||
+ | |||
+ | Der Schlüssel sollte nur für den eigenen Benutzer lesbar sein: | ||
+ | |||
+ | < | ||
==== Firmware signieren ==== | ==== Firmware signieren ==== | ||
- | Die [[http:// | + | 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 | + | < |
+ | cd gluon | ||
+ | contrib/ | ||
+ | contrib/ | ||
+ | contrib/ | ||
+ | </ | ||
- | make manifest GLUON_BRANCH=stable | + | ---- |
- | | + | Quellen: |
- | | + | |
+ | - [[http:// | ||
+ | - [[https:// | ||
+ | - [[http:// | ||
+ | - [[http:// |