Zum Inhalt springen

Freifunk Aachen/Firmware/Kompilieren

Aus wiki.freifunk.net

Dies wird nur für fortgeschrittene Anwendungszwecke gebraucht. Für den Normalbetrieb empfehlen wir unsere vorkompilierten Images unter images.aachen.freifunk.net.

Build-Umgebung einrichten

Zum Kompilieren von Gluon werden einige Build-Tools und Entwicklungsbibliotheken benötigt. Unter aktuellen Debian- und Ubuntu-Versionen (empfohlen: Debian 13 oder Ubuntu 26.04 LTS) werden die Pakete wie folgt installiert:

sudo apt update
sudo apt install clang git python3 python3-dev python3-pyelftools \
    python3-setuptools build-essential gawk unzip libncurses5-dev \
    zlib1g-dev libssl-dev libelf-dev llvm wget rsync time qemu-utils \
    ecdsautils swig jq

Alternativ stellt Gluon ein Container-Buildskript (Docker / Podman) bereit, siehe auch die offizielle Gluon Getting-Started Dokumentation.

Methode 1: Automatisierter Build über das Aachener Site-Repository (Empfohlen)

Das Aachener Site-Repository enthält ein fertiges Makefile, welches das passende Gluon automatisch herunterlädt, Aachen-spezifische Patches anwendet, externe Paketfeeds aktualisiert und die Images kompiliert.

1. Repository klonen

git clone https://github.com/ffac/site.git
cd site

2. Build starten

Alle Targets und Manifeste bauen

Um alle konfigurierten Plattformen zu bauen und direkt die Autoupdater-Manifeste (experimental, beta, stable) zu erstellen:

make manifest

Hinweis: Dies lädt bei Bedarf automatisch die in release.mk definierte Gluon-Version in den Ordner gluon-build/, patcht diese und startet die Kompilierung mit allen verfügbaren CPU-Kernen (parallele Jobs).

Einzelne Targets oder Geräte bauen

Das Kompilieren aller Targets benötigt sehr viel Zeit und Festplattenplatz. Wenn du nur Firmware für ein bestimmtes Target (z. B. mediatek-filogic oder ramips-mt7621) benötigst:

make build GLUON_TARGETS=mediatek-filogic

Oder nur für ein einzelnes Endgerät:

make build GLUON_DEVICES="openwrt-one"

3. Nützliche Make-Befehle der FFAC-Site

  • make print-targets: Zeigt alle in Aachen aktivierten Targets an.
  • make build: Baut Firmware-Images ohne Manifeste zu generieren.
  • make manifest: Baut Firmware-Images und generiert die Manifest-Dateien.
  • make sign: Signiert die Manifest-Dateien (erfordert Secret-Key unter ~/.gluon-secret-key).
  • make clean: Bereinigt die Build- und Ausgabeverzeichnisse.

Die fertigen Images liegen nach Abschluss im Ordner output/images/ (bzw. bei GLUON_DEVICES unter devices/).

Methode 2: Manueller Build über das Upstream-Gluon

Alternativ kann der Build auch klassisch über das Haupt-Gluon-Repository aufgerufen werden:

1. Gluon und Aachener Site klonen

# Gluon-Version auschecken (z. B. v2025.1.2)
git clone https://github.com/freifunk-gluon/gluon.git gluon -b v2025.1.2
cd gluon

# Aachener Site in das Unterverzeichnis "site" klonen
git clone https://github.com/ffac/site.git site

2. Abhängigkeiten aktualisieren

make update

3. Target kompilieren

Verfügbare Targets anzeigen:

make list-targets

Beispiel für das Bauen des gängigen mediatek-filogicTargets mit allen Kernen:

make GLUON_TARGET=mediatek-filogic -j$(nproc)

Hinweis: Beim manuellen Bau über das Upstream-Gluon werden eventuelle Patches aus dem Aachener patches/-Verzeichnis nicht automatisch angewendet. Verwende hierfür Methode 1.

Weiterführende Links