Berlin:Tutorials/Falter Firmware selber bauen
___. .__.__ __
\_ |_Freifunk|__| |_/ |_ Berlin_____
| __ \| | \ | |\ __\/ __ \_ __ \
| \_\ \ | / | |_| | \ ___/| | \/
|___ /____/|__|____/__| \___ >__|
\/ build your own Falter! \/
Mit den Falter-Releases wurde ein neues Build-System eingeführt: Firmware und Pakete werden nicht mehr generell aus dem Quelltext gebaut, sondern aus vorkompilierten Dateien zusammengesetzt. Dieses Vorgehen spart sehr viel Zeit und Ressourcen. Statt rund 2 Stunden lang (systemabhängig) alle Quellen zu bauen, um ein einzelnes Firmware-Image zu erhalten, kann ein Image nun innerhalb weniger Minuten erzeugt werden.
Der zugrundeliegende Mechanismus ist der OpenWrt-Imagebuilder.
Da Falter ein Packagefeed ist, kann für jeden Router, der in der zugrunde liegenden OpenWrt-Version unterstützt wird, ein Falter-Image erzeugt werden. Wie das geht, zeigt dieser Artikel.
Builter, Imagebuilder und Buildsystem laufen nativ nur auf x64-Linux (amd64/x86_64, kein nativer aarch64/arm-Support). Falls Du nur Windows zur Verfügung hast, kannst Du Dir eine Linux-VM erstellen oder mit WSL2 zum Beispiel Ubuntu direkt in Windows installieren. Auf Apple Silicon gelingt der Falter-Build, indem man mit Colima eine x86_64-Linux-VM startet, Docker auf deren Socket zeigt und darin den Falter-Builter ausführt; siehe Apple Silicon: Build mit Colima / Docker.
Howto
Abhängigkeiten installieren
OpenWrt braucht zum Bauen der Images bestimmte Pakete. Installieren kann man diese auf Debian/Ubuntu-Systemen mit:
und auf RedHat/Fedora-Systemen mit:
Buildsystem herunterladen
Wir laden das Buildsystem direkt von GitHub herunter:
Und wechseln in das Verzeichnis:
Wenn es zu einem späteren Zeitpunkt Updates gibt, kann man diese mit git pull herunterladen.
Image bauen
Das aktuelle Build-Script liegt im Repository unter build/build.sh und wird so aufgerufen:
- version
- Die Falter-Version, welche Du bauen möchtest, zum Beispiel
1.6.0. Wenn Du nicht weißt, welche Version Du nehmen sollst, wähle am besten die aktuelle Falter-Version. In diesem Artikel ist das1.6.0. - target
- Das OpenWrt-Target/Subtarget, in dem sich der gewünschte Router befindet, zum Beispiel
ramips/mt7621. - profile
- Der Profilname Deines Routers. Er weicht häufig etwas vom Handelsnamen ab. Für den Genexis Pulse EX400 ist das Profil
genexis_pulse-ex400. - destination
- Optionales Zielverzeichnis für die fertigen Images. Wenn es nicht angegeben wird, schreibt der Builter nach
out/.
Man kann version, target oder profile weglassen, um sich die jeweils verfügbaren Optionen anzeigen zu lassen.
Die Variante wird über FALTER_VARIANT gesetzt. Für ein Tunneldigger-Image:
Beispiel: Genexis Pulse EX400, Falter 1.6.0, tunneldiggerUm ein Tunneldigger-Falter-Image für einen Genexis Pulse EX400 zu erzeugen, sieht der Aufruf so aus: Das fertige Sysupgrade-Image heißt ungefähr: |
Target und Routerprofil finden
Den Parameter target musst Du für Deinen Router recherchieren. Das Target hängt vom Chipsatz ab, der im Router verbaut ist, und ist deshalb von Routermodell zu Routermodell verschieden. Am besten schaust Du dafür auf der Routerseite im OpenWrt-Wiki nach.
Wenn Du das Target kennst, kannst Du Dir die verfügbaren Profile anzeigen lassen. Beispiel für Falter 1.6.0 und ramips/mt7621:
In der Ausgabe suchst Du den Profilnamen Deines Routers. Bitte achte sehr genau auf die Details. Insbesondere Hardware-Versionen müssen übereinstimmen.
Beispielprofil für den Genexis Pulse EX400:
Images kopieren/sichern
Die fertigen Images landen standardmäßig unter out/. Falls Du die Images aufheben möchtest, solltest Du sie an einen anderen Ort kopieren.
Apple Silicon: Build mit Colima / Docker
Auf Apple-Silicon-Macs läuft macOS nativ auf ARM/aarch64. Für den Falter-Builter beziehungsweise den OpenWrt-Imagebuilder wird jedoch eine x86_64/amd64-Linux-Umgebung benötigt. Das geht mit Colima, Docker und einem x86_64-Profil.
Colima und Docker installieren
Mit Homebrew:
Colima als x86_64 starten
Danach den Docker-Client auf den Colima-Socket zeigen lassen:
Prüfen:
Die Ausgabe muss sein:
Falls hier aarch64 steht, läuft die Umgebung falsch für diesen Build.
Dockerfile erstellen
Lege einen Arbeitsordner an:
Erstelle ein Dockerfile:
Docker-Image bauen:
Falter 1.6.0 für Genexis Pulse EX400 mit tunneldigger bauen
Das fertige Sysupgrade-Image liegt danach unter out/.
Weiterführende Links
Der Quellcode und eine englische Anleitung befinden sich im Falter-Builter-Repo auf GitHub.