Berlin:Tutorials/Falter Firmware selber bauen

Aus wiki.freifunk.net
Zur Navigation springenZur Suche springen
___.         .__.__   __                
\_ |_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 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.

Builter (Imagebuilder und Buildsystem) laufen nur auf 64-bit Linux (amd64, kein aarch/arm-Support). 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 auf Debian-Systemen mit:

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

und auf RedHat/Fedora-Systemen mit

sudo dnf install make automake gcc gcc-c++ kernel-devel \
ncurses-devel zlib-devel openssl-devel libxslt gawk git wget unzip python3 perl-FindBin

Das Falter-buildsystem braucht zusätzlich:

sudo apt install rsync curl sqlite3

Buildsystem herunterladen

Wir laden das Buildsystem direkt von github herunter:

git clone https://github.com/freifunk-berlin/falter-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/1.2.1/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.
version
Die Falter-Version, welche Du bauen möchtest, z.B. 1.2.1. Diese Version entspricht genau den Ordnern, die du hier findest. Wenn du nicht weißt, was diese Ordner genau bedeuten, wähle am besten einfach die Versionsnummer des aktuellen Falter-Releases.
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 Handels-Namen ab.

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


Den Profilnamen deines Router kannst du mithilfe der Option -l finden. Diese gibt dir eine Liste mit allen verfügbaren Router-Profilen aus. Unter dem Profil stehen die Routermodelle, für welche es verwendet werden darf. Bitte achte sehr genau auf die Details. Insbesondere die Versionsnummern müssen übereinstimmen! Als Beispiel ein Codeausschnitt von ./build_falter -p all -v 1.2.0-snapshot -t ath79 -s generic -l:

 ...
tplink_tl-wr1043n-v5:                          <-- Routerprofil
    TP-Link TL-WR1043N v5
    SupportedDevices: tplink,tl-wr1043n-v5 tl-wr1043n-v5
...

Anschließend übergibst du diesen Profilnamen, ohne den Doppelpunkt, mit der Option -r an das Skript.


Beispiel:

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

./build_falter -p packageset/1.2.2/tunneldigger.txt -v 1.2.2 -t ath79 -s generic -r tplink_tl-wr1043n-v5


Alternativ kann man die Optionen auch ausschreiben:

./build_falter --packageset packageset/1.2.2/tunneldigger.txt --version 1.2.2 --target ath79 --sub-target generic --router tplink_tl-wr1043n-v5 

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.