Berlin:Tutorials/Falter Firmware selber bauen

Aus wiki.freifunk.net
Zur Navigation springen Zur Suche springen


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 von rund 3 Minuten erzeugt werden.

Der zugrundeliegende Mechanismus ist der OpenWrt-Imagebuilder.

Da Falter ein einfacher 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.

Der Imagebuilder und das Buildsystem laufen nur auf 64-bit Linux. Falls Du nur Windows zu Verfügung hast, kannst Du Dir eine Linux-VM erstellen und darin bauen, oder Dir, nach diesem Tutorial, mithilfe des Windows Subsystem for Linux 2 zum Beispiel Ubuntu direkt in Dein Windows installieren.

Howto

Abhängigkeiten installieren

OpenWrt braucht zum Bauen der Images bestimmte Pakete. Installieren kann man diese mit:

sudo apt install build-essential libncurses5-dev libncursesw5-dev \
zlib1g-dev gawk git gettext libssl-dev xsltproc wget unzip python

Das Falter-buildsystem braucht zusätzlich:

sudo apt install rsync curl

Buildsystem herunterladen

Wir laden das Buildsystem direkt von github herunter:

git clone https://github.com/Freifunk-Spalter/builter.git falter-image-builder

Und wechseln in das Verzeichnis:

cd falter-image-builder

Wenn es zu einem späteren Zeitpunkt Updates gibt, kann man diese mit git pull herunterladen.

Image bauen

Das build-script kann mehrere Optionen verarbeiten. Eckige Klammern bedeuten ein Pflicht-Argument, spitze Klammern sind optional.

./build_falter [-p packageset] [-v version] [-t target] [-s subtarget] [-r router]
packageset
Gibt an, welchen Image-Typ man haben möchte. Möchte man alle drei haben, trägt man all ein, möchte man einen bestimmten haben, gibt man an, wo die Paketliste liegt, relativ zum builter-Wurzelverzeichnis, beispielsweise ./packageset/19.07/notunnel.txt, hier bitte auf cat-Fehler achten beim Bauen, sollte der Pfad nicht ganz stimmen oder die Datei nicht existent sein - am sichersten ist einfach all.
release
Das OpenWrt-Release, auf dem das Image basieren soll, z.B. 19.07. Wird kein explizites Sub-Release (z.B. 19.07.3) angegeben, wird das aktuellste Sub-Release genutzt.
target
Target, in dem sich der gewünschte Router befindet, z.B.ath79.
subtarget
Viele Targets sind nochmals unterteilt. Oft trägt man hier generic ein.
router
Der Profil-Name deines Routers. Er weicht häufig etwas vom Trivial-Namen ab.

Die Parameter target,subtarget und router musst du für deinen Router selber recherchieren. Am besten schaust du dafür auf der Routerseite im OpenWrt-Wiki nach.


Beispiel:

Um ein Tunneldigger-Falter-Image für einen GL-AR150 zu erzeugen, sieht der Aufruf zum Beispiel so aus:

./build_falter -p packageset/19.07/tunneldigger.txt -v 19.07 -t ath79 -s generic -r glinet_gl-ar150


Alternativ kann man die Optionen auch ausschreiben:

./build_falter --packageset packageset/19.07/tunneldigger.txt --version 19.07 --target ath79 --sub-target generic -router glinet_gl-ar150 


Images kopieren/sichern

Die fertigen Images landen im Verzeichnis firmwares/. Bei jedem neuen Build wird dieses Verzeichnis gelöscht. Falls Du die Images aufheben möchtest, solltest du sie an einen anderen Ort verschieben.

Weiterführende Links

Der Quellcode und eine englische Anleitung (eher technisch) findest Du im Falter-Repo auf Github.