Änderungen

Zur Navigation springen Zur Suche springen
neuer Buildprozess
Zeile 1: Zeile 1: −
=Neue Firmware selbst bauen (buildprozess, howto, SVN)=
+
=Wo?=
* Dies ist ein Notizzettel zum bauen einer neuen Firmware. Saemtliche Schritte habe ich fuer ein Linux-System dokumentiert. Eigentlich kann man ein komplettes Copy&Paste machen und schon ist alles fertig.
+
* Die Erweiterungen zur OpenWRT-Firmware für das Weimarnetz sowie die Bauanleitung liegen auf github.
* Der normale Weg ist, sich die aktuelle Weimarnetz-Firmware auf den Router zu packen, alle Aenderungen auf dem Router vorzunehmen und dann diese Anleitung nachzumachen.
+
* Ein Repository ist z.B. das hier: https://github.com/andibraeu/weimarnetz
* zum Arbeiten mit dem SVN empfiehlt sich die Lektüre [[Subversion - Versionskontrolle im Weimarnetz]]
+
* Jeder kann dieses Repository verwenden und eine Firmware daraus erstellen. Hilfe und Änderungen sind gern willkommen, wer aktiv mitentwickeln möchte kann sich das Repository auch gabeln (aka forken)
* einfaches Einsehen des SVNs: https://www.weimar-fon.de/websvn
      +
=Wie?=
 +
==Vorbereitungen==
 +
* Zur Entwicklung und zum Bauen der Firmware empfiehlt sich die Nutzung von Linux.
 +
* auf Debian müssen diese Pakete installiert sein: build-essential libncurses5-dev m4 flex git git-core zlib1g-dev unzip subversion gawk python libssl-dev quilt
 +
* man sollte einen Nutzer verwenden, der nicht root ist, da die openWRT-scripte das überprüfen und es ein wenig Krampf ist, alles umzubiegen
   −
EIGENER_ROUTER=$(route|awk '/default/{printf $2}')
+
==Bauen einer Firmware==
ssh $EIGENER_ROUTER
+
* Alle Schritte zum Bauen einer Firmware sind grundlegend in der README des Repositories beschrieben
 +
* Um ein vtund ohne SSL und ohne Komprimierung zu erstellen, muss das Makefile entsprechend angepasst werden.
 +
* Außerdem wurden Abhängigkeiten aus der LuCI-Freifunkkonfiguration entfernt
 +
* Diese Dateien liegen im Repository unter openwrt-build/, später soll das kopieren automatisch erfolgen
   −
* nun sind wir auf dem Router
+
==Ablauf==
 +
* Die im README gezeigten Schritte erstellen eine Standardfirmware, die auf die gewählte Hardware installiert werden kann
 +
* Änderungen am OpenWRT können über ''make menuconfig'' vorgenommen werden. Den Kernel passt man mit ''make kernel_menuconfig'' an
 +
* Der erste komplette Buildprozess kann je nach Rechenleistung mehrere Stunden in Anspruch nehmen. Nachfolgende Builds sind erheblich schneller (1 min auf schnellen Rechnern, 30 Minuten auf unserem Rootserver)
   −
cd /
+
==Probleme im Build-Prozess==
tar cvzhf www/fw.tgz usr/sbin/*weimar* etc/init.d/*weimar* www/*nervseite www/*info* www/*registr* www/cgi-bin/*kinder* www/cgi-bin-speed www/cgi-bin-map www/cgi-bin/telnet
+
* nach Auswahl eines Hardwaremodels und kopieren der Build-Config sind immer wieder gewisse Standardwerte gesetzt, wie z.B. der b43legacy-Treiber beim Linksys
   −
* nun haben wir eine direkt herunterladbare Datei fw.tgz, die
+
=Weitere Forks=
* alle (evtl. geaenderten) weimarnetz-spezifischen Dateien enthaelt.
+
* [https://github.com/bittorf/kalua Basti]: Entwicklung hauptsächlich für bittorf wireless
* nun muessen wir noch alle zusaetzlich installierten
+
* [https://github.com/weimarnetz/storchi Storchi]
* Software-Pakete herausfinden und in ein Archiv packen:
  −
* das Archiv wird aus Platzgruenden in die RAM-Disk geleitet
  −
* und ein zusaetzlicher, umgebogener Webserver gestartet
  −
 
  −
==Softwarepakete nachinstallieren==
  −
ipkg update
  −
ipkg install freifunk-recommended-de                              # statistik,horst,tcpdump,dnsmasq,olsrviz
  −
inkf install freifunk-statistics-de (extra aus leipzig)          # olsr-stats zu 2 nachbarn
  −
ipkg install freifunk-olsrd-libs                                  # damit Dienste-Plugin funzt
  −
ipkg install iptables-extra                                      # viele Ziele
  −
ipkg install batman2 [http://article.gmane.org/gmane.org.freifunk.berlin/827 mehr]
  −
ipkg install busybox-awk
  −
ipkg install vtun                                                # fuer VPN-Tunnel
  −
ipkg install freifunk-portfw-de                                  # Portforwarding
  −
ipkg install freifunk-pppoecd-de                                  # fuer DSL-Einwahl
  −
ipkg install libmatrixssl                                        # fuer HTTPS
  −
ipkg install http://znerol.ch/ipkg/matrixtunnel_0.2-1_mipsel.ipk  # fuer HTTPS
  −
ipkg install http://openwrt.alphacore.net/netcat_0.7.1_mipsel.ipk # fuer Registrierungs-mails verschicken)
  −
 
  −
echo "ipt_ipp2p"  >>/etc/modules.d/40-ipt-nat-extra
  −
echo "ipt_layer7" >>/etc/modules.d/40-ipt-nat-extra (Module direkt beim start laden)
  −
 
  −
URL=http://l7-filter.sourceforge.net
  −
cd /etc/l7-protocols/
  −
wget -O - "$URL/protocols"|awk -v U=$URL '/layer7-protocols/ {system("wget "U"/"substr($11,7,match($11,"\\.")-3))}'
  −
 
  −
PAKETE="$(ipkg status|awk '{if(s==1&&$1=="Package:")printf $2" ";if($2=="dropbear")s=1}')"
  −
F1="/usr/lib/ipkg/info/*"
  −
F2="/usr/lib/ipkg/status"
  −
F3="$(for F in $PAKETE;do ipkg files $F|awk '{if($0!="/")system("ls -ld "sprintf("%s",substr($0,2)))}'|awk '{if($5>0)print $9}';done)"
  −
tar cvzf /tmp/ipkg.tgz $F1 $F2 $F3
  −
tar cvzf /tmp/images.tgz www/images/Info_* www/images/*.swf www/images/intro.jpg
  −
httpd -h /tmp/ -p 81
  −
exit
  −
 
  −
* nun haben wir eine direkt herunterladbare Datei ipkg.tgz,
  −
* haben also alles was wir brauchen und sind wieder auf unserem Rechner
  −
* wir laden und das aktuelle Kit von sven-ola's freifunk-seite
  −
* herunter und entpacken dieses auf unserem Rechner
  −
 
  −
KIT_URL="http://styx.commando.de/sven-ola/testing/_kit/"
  −
KIT_VERSION="freifunk-openwrt-kit-1.3.6-de"
  −
wget "$KIT_URL$KIT_VERSION.tar.gz"
  −
tar xvzf "$KIT_VERSION.tar.gz"
  −
cd $KIT_VERSION
  −
 
  −
* nun machen wir uns ein Verzeichnis in der die komplette
  −
* Verzeichnisstruktur und alle Dateien wie sie auf dem Router
  −
* sind reinkopiert werden. Das Grundsystem ist im Kit schon dabei.
  −
* die zwei Dateien, die wir eben auf dem Router erstellt
  −
* haben, nehmen wir von dort oder aus dem SVN
  −
 
  −
wget "http://$EIGENER_ROUTER:81/fw.tgz"
  −
wget "http://$EIGENER_ROUTER:81/ipkg.tgz"
  −
wget "http://$EIGENER_ROUTER:81/images.tgz"
  −
mkdir weimar
  −
cd weimar
  −
tar xvzf ../root.tgz
  −
tar xvzf ../fw.tgz
  −
tar xvzf ../ipkg.tgz
  −
tar xvzf ../images.tgz
  −
 
  −
* ok,nun ist fast alles fertig. Wir haben nun noch die Chance
  −
* nach www/ ein eigenes bild zu kopieren und ein paar kleine
  −
* Aenderungen durchzufuehren, z.b.:  
  −
 
  −
* holen und formatieren der aktuellen nervseite:
  −
 
  −
URL="http://wireless.subsignal.org/index.php?title=Nervseite"
  −
F1="www/nervseite-vorlage"
  −
wget -O - "$URL"|sed '/-- NERVSEITE:START --/,/-- NERVSEITE_LEEREKONTAKTDATEN:END --/!d' >"$F1"
  −
 
  −
===Firmware-Image erzeugen/bauen===
  −
 
  −
* nun alles wieder einpacken und neues firmwareimage erzeugen
  −
* das firmwareimage wird schon nach unixzeit und datum benannt:
  −
 
  −
tar cvzf ../root.tgz *
  −
cd ..
  −
N="weimarnetz_firmware-$(date +%s-%d%b%Y-%Huhr%M)-trx.bin"
  −
./gen-openwrt -v $N trx >../$N
  −
 
  −
* Nun muessen wir noch eine Schmalspur-Variante fuer Geraete mit
  −
* nur 2Mb Flash-Speicher bauen. Dazu schmeissen wir scheinbar
  −
* ueberfluessigen Muell raus. Insbesondere grosse Dateien 8-)
  −
* erstmal verschaffen wir uns einen Ueberblick:
  −
 
  −
cd weimar
  −
ls -alR|awk '{if(substr($0,1,2)=="./")dir=substr($0,3,length($0)-3);print $5,dir"/"$9,$10,$11,$12}'|sort -n
  −
 
  −
* nun sehen wir den ganzen Kram,der sich lohnt. Hier mein Vorschlag:
  −
 
  −
rm www/images/intro.jpg
  −
RRD="$(find -name "*rrd*")"
  −
rm $RRD
  −
rm usr/bin/dropbearmulti
  −
rm usr/bin/netcat
  −
rm www/cgi-bin-registrator.html
  −
rm usr/sbin/batman
  −
rm usr/sbin/tcpdump
  −
rm lib/libncurses.so.5.2
  −
rm usr/lib/libpcap.so.0.8.3
  −
 
  −
 
  −
* und die neue version bauen:
  −
 
  −
tar cvzf ../root.tgz *
  −
cd ..
  −
N="weimarnetz_firmware-schmalspur-$X-$Z-trx.bin"
  −
./gen-openwrt -v $N trx >$N
  −
 
  −
* nun haben wir zwei firmware-dateien, die schmalspurvariante ist ca. 300Kb kleiner
  −
* und wenn man moechte, nun noch das SVN aktualisieren
  −
 
  −
* NUR BEIM ERSTEN MAL:
  −
svn checkout https://www.weimar-fon.de/svn_freifunkfirmwareweimar/trunk
  −
 
  −
cd firmware/
  −
* Sonst:
  −
cd firmware/
  −
svn update
  −
* weiter
  −
wget "http://$EIGENER_ROUTER:81/fw.tgz"
  −
tar xvzf --overwrite fw.tgz
  −
rm fw.tgz
  −
svn add * --force
  −
svn commit -m "$X-$Z"
      
[[Kategorie:Firmware]]
 
[[Kategorie:Firmware]]

Navigationsmenü