Benutzer-Werkzeuge


    Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/main.php on line 62
  • Admin

  • Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/tpl_functions.php on line 50

    Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/tpl_functions.php on line 77
  • Registrieren

Webseiten-Werkzeuge


Dies ist die Beschreibung wie man selber die Firmware baut und ist eher etwas für geübte Leute.

Voraussetzungen

Die Bielefelder Freifunk-Software besteht aus einer OpenWRT Installation mit Zusatzmodulen.
Unsere Konfiguration befindet sich hier. Um selber die Firmware zu bauen, wird ein GNU/Linux-System wie z.B. Debian/Ubuntu/Arch/Gentoo benötigt.

Unter Debian oder Ubuntu müssen noch folgende Programme installiert werden (hier mittels apt-get über die Kommandozeile):

sudo apt-get install git subversion g++ libncurses5-dev gawk zlib1g-dev build-essential

Falls noch Pakete fehlen sollten, kann hier nachgeschaut werden, welche das sind.

Erster Bauprozess

Für das Bauen der Firmware muss nun folgendes auf der Kommandozeile eingegeben werden:

git clone git://git.openwrt.org/12.09/openwrt.git
cd openwrt

git clone https://github.com/freifunk-bielefeld/firmware.git
cp -rf firmware/{files,package,feeds.conf.default,.config} .
git am --whitespace=nowarn firmware/patches/*.patch
rm -rf firmware

./scripts/feeds update -a
./scripts/feeds install -a

make defconfig
make menuconfig

In dem folgenden Menu muss nun das „Target System“ und „Target Profile“ ausgewählt werden:

Z.B. für den TL-WR841ND:

# Target System => <*> Atheros AR7xxx/AR9xxx
# Target Profile => <*> TP-LINK TL-WR841ND

Z.B. für den DIR-300:

# Target System => <*> AR231x/AR5312
# Target Profile => <*> Default

Für andere Router kann der Chipsatz („Target System“) im OpenWrt Wiki nachgeschaut werden.

Zu guter Letzt wird die Firmware erzeugt:

make

Die fertige Firmware liegt nun im Ordner bin/<Chipsatz>/ und sollte im Namen die Modellbezeichnung des Routers, das zu verwendete Dateisystem („squashfs“) enthalten und auf „factory.bin“ enden. Bei einem Update muss die Datei genommen werden die auf „sysupgrade.bin“ endet.

Eine Anleitung zum Flashen des Routers http://openwrt.org konsultieren oder mit uns Kontakt aufnehmen (siehe unten auf der Hauptseite).

Update & erneutes Bauen

Um erneute Kompiliervorgänge zu beschleunigen reicht es oft aus nur die Dateien zu aktualisieren. Dafür müssen folgende Befehle ausgeführt werden:

cd openwrt
git pull
./scripts/feeds update -a
./scripts/feeds install -a

rm -rf files
rm -rf package/{freifunk-bielefeld,autoupdater,next-node,simple-tc,fastd,libuecc}

git clone git://github.com/freifunk-bielefeld/firmware.git
cp -rf firmware/* .

make defconfig
make

Bei Fehlern

Fehlerhaftes Image

Sollte das neue System nicht mehr über das Web-Frontend aktualisierbar sein, so kann der OpenWrt Failsafe-Modus verwendet werden um den Router wiederzubeleben.

Mit einem TL-WR841N funktioniert das wie folgt:
1. Gerät neustarten und dabei den reset-Knopf im Sekundentakt drücken bis eine Status-LED schnell blinkt. Der Router ist nun im Failsafe-Modus.
2. Da kein DHCP aktiv ist, muss dem Computer von dem aus der Flash-Vorgang vorgenommen werden soll selbst eine IP-Adresse gegeben werden z.B. mit:

sudo ifconfig  192.168.1.2 eth0 up

3. Um das funktionstüchtige Image auf den Router zu übertragen, wird auf dem Computer ein Webserver geöffnet:

cd /home/path/to/firmware-dir
python2 -m SimpleHTTPServer   # oder mit Version 3 von Python: python -m http.server 8000

4. Der Router hat im Failsafe-Modus die IP 192.168.1.1 und kann per Telnet angesprochen werden.

telnet 192.168.1.1

5. Nun sind folgende Befehle notwendig um das Root-Dateisystem zu mounten und wegen mangelndem Flash-Speicher nach /tmp (liegt im RAM) zu wechseln:

mount_root
cd /tmp

Dann kann das Image auf den Router geladen und geflasht werden.

wget 192.168.1.2:8000/name.der.firmware.bin
sysupgrade -n name.der.firmware.bin