Firmware selbst kompilieren

Aus Freifunk Flensburg
(Weitergeleitet von Gluon)
Wechseln zu: Navigation, Suche

Gluon ist die Firmware, die wir bei Freifunk Flensburg für unsere Router verwenden. Entwickelt wurde diese vom Freifunk Lübeck. Die Firmware basiert auf OpenWrt und bietet eine einheitliche Konfiguration für die gesamte Community. Beispielsweise ist es auf einem laufenden Router nicht ohne weiteres möglich die Konfiguration zu ändern. Hierzu sind ein erneutes Kompilieren der Firmware oder ein kompliziertes eingreifen mittels Befehlseingabe nötig. Welche Router man verwenden kann, ist in der Liste der mit Gluon kompatiblen Router zu finden.

Fertiges Image herunterladen[Bearbeiten]

Wenn du kein Linux verwendest, du dich nicht mit Linux auskennst oder dir einfach nur die Arbeit ersparen willst, dann kannst du die fertigen Images in der Liste der mit Gluon kompatiblen Router herunterladen.

Hier findest du eine Anleitung wenn du einen Knoten einrichten möchtest.

Kompilieren von Gluon[Bearbeiten]

Um Gluon zu kompilieren installiert man die benötigten Pakete mit:

sudo apt-get install git make gcc g++ unzip libncurses5-dev zlib1g-dev subversion gawk bzip2 libssl-dev

Diese Pakete werden benötigt, um nachher die Toolchain und die Firmware an sich zu kompilieren. Des weitern sollten min. 7 GB je Target an freiem Speicher auf der Festplatte verfügbar sein. Bei aktuell 7 möglichen Targets sollten bis zu 49 GB an Platz eingeplant werden

Hinweis: Wer sein gluon Verzeichnis von der Festplatte gelöscht hat, der kann an dieser Stelle fortsetzen.
Nun lädt man sich die Source-Files für Gluon aus dem GitHub-Repository von Freifunk Lübeck herunter:

git clone https://github.com/freifunk-gluon/gluon.git

Wichtig hierbei ist, dass man sich die Dateien NICHT als root und auch ohne sudo herunterlädt, da es sonst später zu Problemen beim Kompilieren kommen kann.

Als nächstes wechselt man in das automatisch erstellte Verzeichnis mit:
cd gluon
hinein

Bevor man mit dem Kompilieren beginnen kann ist der richtige Versionszweig englisch revision branch auszuwählen.

mit
git branch -a
kann man Versionen anzeigen lassen und dann mit
git checkout v2015.1.x
die gerade aktuelle stabile Version 2015.1.x auswählen.

Wer hier nichts auswählt landet in dem experimentellen Zweig und riskiert dass das Kompilieren fehlschlägt.
Eine Anleitung wie der Gluon Master erfolgreich gebaut werden kann ist weiter unten zu finden.
Wer bisher versucht hat eine experimentelle Version von Gluon zu bauen (gemäß der bisherigen Fassung dieser Anleitung) und auf den stabilen Zweig umsteigen möchte,
der sollte sein gluon Verzeichnis auf der Festplatte rekursiv, also inclusive aller Unterverzeichnisse, löschen und neu auschecken also Gluon neu vom Freifunk Lübeck rerunterladen.

Da in diesem Repository noch keine Konfiguration dabei ist, muss diese extra heruntergeladen werden. Hierzu führt man in dem Verzeichnis gluon, wo man sich an dieser Stelle der Anleitung schon befinden sollte, folgenden Befehl aus:

git clone https://github.com/freifunk-flensburg/site-fffl.git site

Auch hier ist sicherheitshalber der richtige Branch auszuwählen.

dazu gibt man:
cd site
ein gefolgt von:
git branch -a
und wählt den richtigen Zweig aus mit:
git checkout 2015.1.2-0
aus um die Version 2015.1.2-0 zu bauen. danach ist noch ein
cd ..
erforderlich, um aus dem site Verzeichnis in das übergeordnete Verzeichnis gluon zurückzukehren.

Nun sind fast alle Dateien vorhanden, um mit dem Kompilieren zu beginnen. Die letzten Dateien erhält man mit dem Befehl

make update

und startet das Kompilieren mit:

make

Wer ein anderes Target als ar71xx-generic kompilieren möchte muss dieses seperat mit dem Parameter GLUON_TARGET= angeben
Eine Liste der vorhandenen Targets gibt es mit

make GLUON_TARGET=?

Seit Gluon Version 2014.4.x kann auch beim ersten Build der Paramiter -j siehe weiter unten zur Steigerung der Geschwindigkeit des Kompilierens genutzt werden.
Es werden nur die gerade kompilierten Dateien angezeigt.

Wer am Ende wissen möchte warum das Kompilieren fehlschlägt oder zuschauen möchte was im einzelnen passiert der benutzt

make V=s bzw. make -jX V=s X ist Platzhalter für eine Zahl

Für den Fall, dass du einen CPU mit mehreren Kernen verwendest kannst du hinter "make" die Option "-jX" setzen, wobei X der Anzahl der Kerne deines CPU entspricht. Durch diese Zusatzoption arbeiten mehr Kerne am Kompilieren des Codes und es geht schneller als nur mit einem. Wenn man auf einem Server über SSH kompiliert, ist es zu empfehlen das ganze in einer screen, tmux o.ä. Sitzung auszuführen. Das komplette Kompilieren dauert ca. 2 Stunden mit einem Kern, bei einem i7-2600k mit der Option "-j8" nur kanpp 30 Minuten. Also sollte man sich einen Kaffee, eine Mate oder sonst etwas holen und warten.

Sobald das Kompilieren ohne Fehler abgeschlossen ist, findet man die Images im gluon-Ordner unter

output/images/factory/

Kompilieren des Gluon Master Branch (aktuell experimental 2016.1) nur für Experten die wissen was sie tuen
[Bearbeiten]

Hierzu ist im wesentlichen die Anleitung der stable Version zu befolgen mit folgenden Änderungen:
Der Branch von Gluon ist nicht v2015.1x sondern master
Alternativ kann auch der Branch v2016.1.x verwendet werden. Damit wird die neueste Gluon Version 2016.1.0 gebaut. Diese ist jedoch in Flensburg noch im Testbetrieb und daher ebenfalls als experimental deklariert.

Der Branch für die Flensburger site Dateien ist nicht 2015.1.2-0 sondern 2016.1.0-0
Bitte den Branch 2015.2.x nicht mehr zum Bauen von experimental Images nutzen!!
Dieser Branch wird ersetzt wenn die fertige Version veröffentlicht wird
Das Ergebnis des Kompiliervorgangs liegt unter ./output/images
Der Sinn den Master Branch zu Bauen und die experimentelle Version 2016.1 zu testen liegt darin,
dass die Router eine neue Statussseite erhalten haben.
Ausserdem wurde die Anzahl der supporteten Router erhöht.
Wer dieses Feature nutzen möchte kompiliert am Besten mit dem BROKEN=1 Parameter Dann wird zum Beispiel auch der ARCER C5/C7 experimentell unterstützt Der Aufruf des kompilierungsvorgangs lautet dann

make -j8 BROKEN=1 

Warnung Das Bauen des Master Branches ist nur Linux Experten zu empfehlen.
Es kann nicht garantiert werden dass das Kompilieren erfolgreich verläuft da an dem Master Branch ständig gearbeitet wird.

Manifest erstellen[Bearbeiten]

Wenn man die Gluon-Images für automatische Updates signieren möchte muss man zuerst eine Manifest-Datei erzeugen, in der die Signaturen enthalten sein werden. Wichtig hierzu ist, dass auf dem System die ECDSA Utils vorhanden sind.

Um die Manifest-Datei zu erzeugen gehen wir in das Gluon Verzeichnis und führen dort den folgenden Befehl aus:

make manifest GLUON_BRANCH=stable

Nun finden wir unter images/sysupgrade eine Datei mit dem Namen "stable.manifest".

Nun müssen wir nur noch den script zum signieren der Images ausführen. Die Befehlsreihenfolge ist die folgende:

./contrib/sign.sh pfad/zur/secret/key/datei pfad/zur/manifest/datei>

weitergehende Informationen:

http://wiki.freifunk-flensburg.de/wiki/Signieren_von_Manifesten

Links[Bearbeiten]