Zeile 1: |
Zeile 1: |
− | ===Neue Firmware selbst bauen (buildprozess, howto, SVN)===
| + | =Neue Firmware selbst bauen (buildprozess, howto, SVN)= |
| * 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. | | * 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. |
| * 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. | | * 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. |
Zeile 5: |
Zeile 5: |
| * einfaches Einsehen des SVNs: http://svn.sourceforge.net/viewvc/weimarnetz-fw/trunk/firmware/ | | * einfaches Einsehen des SVNs: http://svn.sourceforge.net/viewvc/weimarnetz-fw/trunk/firmware/ |
| | | |
− | <pre>
| |
− | EIGENER_ROUTER=$(route|awk '/default/{printf $2}')
| |
− | ssh $EIGENER_ROUTER
| |
| | | |
− | # nun sind wir auf dem Router
| + | EIGENER_ROUTER=$(route|awk '/default/{printf $2}') |
| + | ssh $EIGENER_ROUTER |
| | | |
− | cd /
| + | * nun sind wir auf dem Router |
− | 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
| |
| | | |
− | # nun haben wir eine direkt herunterladbare Datei fw.tgz, die
| + | cd / |
− | # alle (evtl. geaenderten) weimarnetz-spezifischen Dateien enthaelt.
| + | 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 |
− | # nun muessen wir noch alle zusaetzlich installierten
| |
− | # Software-Pakete herausfinden und in ein Archiv packen:
| |
− | # das Archiv wird aus Platzgruenden in die RAM-Disk geleitet
| |
− | # und ein zusaetzlicher, umgebogener Webserver gestartet
| |
| | | |
− | ipkg update
| + | * nun haben wir eine direkt herunterladbare Datei fw.tgz, die |
− | ipkg install freifunk-recommended-de (statistik,horst,tcpdump,dnsmasq,olsrviz)
| + | * alle (evtl. geaenderten) weimarnetz-spezifischen Dateien enthaelt. |
− | ipkg install iptables-extra (viele Ziele)
| + | * nun muessen wir noch alle zusaetzlich installierten |
− | ipkg install batman2
| + | * Software-Pakete herausfinden und in ein Archiv packen: |
| + | * das Archiv wird aus Platzgruenden in die RAM-Disk geleitet |
| + | * und ein zusaetzlicher, umgebogener Webserver gestartet |
| | | |
− | PAKETE="$(ipkg status|awk '{if(s==1&&$1=="Package:")printf $2" ";if($2=="dropbear")s=1}')"
| + | ipkg update |
− | F1="/usr/lib/ipkg/info/*"
| + | ipkg install freifunk-recommended-de (statistik,horst,tcpdump,dnsmasq,olsrviz) |
− | F2="/usr/lib/ipkg/status"
| + | ipkg install iptables-extra (viele Ziele) |
− | 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)"
| + | ipkg install batman2 |
− | tar cvzf /tmp/ipkg.tgz $F1 $F2 $F3
| + | ipkg install busybox-awk |
− | 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,
| + | PAKETE="$(ipkg status|awk '{if(s==1&&$1=="Package:")printf $2" ";if($2=="dropbear")s=1}')" |
− | # haben also alles was wir brauchen und sind wieder auf unserem Rechner
| + | F1="/usr/lib/ipkg/info/*" |
− | # wir laden und das aktuelle Kit von sven-ola's freifunk-seite
| + | F2="/usr/lib/ipkg/status" |
− | # herunter und entpacken dieses auf unserem Rechner
| + | 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 |
| | | |
− | KIT_URL="http://styx.commando.de/sven-ola/testing/_kit/"
| + | * nun haben wir eine direkt herunterladbare Datei ipkg.tgz, |
− | KIT_VERSION="freifunk-openwrt-kit-1.3.6-de"
| + | * haben also alles was wir brauchen und sind wieder auf unserem Rechner |
− | wget "$KIT_URL$KIT_VERSION.tar.gz"
| + | * wir laden und das aktuelle Kit von sven-ola's freifunk-seite |
− | tar xvzf "$KIT_VERSION.tar.gz"
| + | * herunter und entpacken dieses auf unserem Rechner |
− | cd $KIT_VERSION
| |
| | | |
− | # nun machen wir uns ein Verzeichnis in der die komplette
| + | KIT_URL="http://styx.commando.de/sven-ola/testing/_kit/" |
− | # Verzeichnisstruktur und alle Dateien wie sie auf dem Router
| + | KIT_VERSION="freifunk-openwrt-kit-1.3.6-de" |
− | # sind reinkopiert werden. Das Grundsystem ist im Kit schon dabei.
| + | wget "$KIT_URL$KIT_VERSION.tar.gz" |
− | # die zwei Dateien, die wir eben auf dem Router erstellt
| + | tar xvzf "$KIT_VERSION.tar.gz" |
− | # haben, nehmen wir von dort oder aus dem SVN
| + | cd $KIT_VERSION |
| | | |
− | wget "http://$EIGENER_ROUTER:81/fw.tgz"
| + | * nun machen wir uns ein Verzeichnis in der die komplette |
− | wget "http://$EIGENER_ROUTER:81/ipkg.tgz"
| + | * Verzeichnisstruktur und alle Dateien wie sie auf dem Router |
− | wget "http://$EIGENER_ROUTER:81/images.tgz"
| + | * sind reinkopiert werden. Das Grundsystem ist im Kit schon dabei. |
− | mkdir weimar
| + | * die zwei Dateien, die wir eben auf dem Router erstellt |
− | cd weimar
| + | * haben, nehmen wir von dort oder aus dem SVN |
− | 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
| + | wget "http://$EIGENER_ROUTER:81/fw.tgz" |
− | # nach www/ ein eigenes bild zu kopieren und ein paar kleine
| + | wget "http://$EIGENER_ROUTER:81/ipkg.tgz" |
− | # Aenderungen durchzufuehren, z.b.:
| + | 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 |
| | | |
− | # holen und formatieren der aktuellen nervseite:
| + | * 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.: |
| | | |
− | URL="http://wireless.subsignal.org/index.php?title=Nervseite"
| + | * holen und formatieren der aktuellen nervseite: |
− | F1="www/nervseite-vorlage"
| |
− | wget -O - "$URL"|sed '/-- NERVSEITE:START --/,/-- NERVSEITE_LEEREKONTAKTDATEN:END --/!d' >"$F1"
| |
| | | |
− | # nun alles wieder einpacken und neues firmwareimage erzeugen
| + | URL="http://wireless.subsignal.org/index.php?title=Nervseite" |
− | # das firmwareimage wird schon nach unixzeit und datum benannt:
| + | F1="www/nervseite-vorlage" |
| + | wget -O - "$URL"|sed '/-- NERVSEITE:START --/,/-- NERVSEITE_LEEREKONTAKTDATEN:END --/!d' >"$F1" |
| | | |
− | tar cvzf ../root.tgz *
| + | * nun alles wieder einpacken und neues firmwareimage erzeugen |
− | cd ..
| + | * das firmwareimage wird schon nach unixzeit und datum benannt: |
− | X=$(date -Ih|awk -F[-T] '{print($1-1970)*31536000+$2*2592000+$3*86400+$4*3600}')
| |
− | Z=$(date -R|awk -F"[, :]" '{printf("%s%s%s-%suhr%s",$3,tolower($4),$5,$6,$7)}')
| |
− | N="weimarnetz_firmware-$X-$Z-trx.bin"
| |
− | ./gen-openwrt -v $N trx >../$N
| |
| | | |
− | # Nun muessen wir noch eine Schmalspur-Variante fuer Geraete mit
| + | tar cvzf ../root.tgz * |
− | # nur 2Mb Flash-Speicher bauen. Dazu schmeissen wir scheinbar
| + | cd .. |
− | # ueberfluessigen Muell raus. Insbesondere grosse Dateien 8-)
| + | X=$(date -Ih|awk -F[-T] '{print($1-1970)*31536000+$2*2592000+$3*86400+$4*3600}') |
− | # erstmal verschaffen wir uns einen Ueberblick:
| + | Z=$(date -R|awk -F"[, :]" '{printf("%s%s%s-%suhr%s",$3,tolower($4),$5,$6,$7)}') |
| + | N="weimarnetz_firmware-$X-$Z-trx.bin" |
| + | ./gen-openwrt -v $N trx >../$N |
| | | |
− | cd weimar
| + | * Nun muessen wir noch eine Schmalspur-Variante fuer Geraete mit |
− | ls -alR|awk '{if(substr($0,1,2)=="./")dir=substr($0,3,length($0)-3);print $5,dir"/"$9,$10,$11,$12}'|sort -n
| + | * nur 2Mb Flash-Speicher bauen. Dazu schmeissen wir scheinbar |
| + | * ueberfluessigen Muell raus. Insbesondere grosse Dateien 8-) |
| + | * erstmal verschaffen wir uns einen Ueberblick: |
| | | |
− | # nun sehen wir den ganzen Kram,der sich lohnt. Hier mein Vorschlag:
| + | 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 |
| | | |
− | rm www/images/intro.jpg
| + | * nun sehen wir den ganzen Kram,der sich lohnt. Hier mein Vorschlag: |
− | 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
| |
| | | |
| + | 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 *
| + | * und die neue version bauen: |
− | 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
| + | tar cvzf ../root.tgz * |
− | # und wenn man moechte, nun noch das SVN aktualisieren
| + | cd .. |
| + | N="weimarnetz_firmware-schmalspur-$X-$Z-trx.bin" |
| + | ./gen-openwrt -v $N trx >$N |
| | | |
− | #NUR BEIM ERSTEN MAL:
| + | * nun haben wir zwei firmware-dateien, die schmalspurvariante ist ca. 300Kb kleiner |
− | svn checkout https://svn.sourceforge.net/svnroot/weimarnetz-fw/
| + | * und wenn man moechte, nun noch das SVN aktualisieren |
| | | |
− | cd firmware/
| + | * NUR BEIM ERSTEN MAL: |
− | #Sonst:
| + | svn checkout https://svn.sourceforge.net/svnroot/weimarnetz-fw/ |
− | 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"
| |
| | | |
− | </pre>
| + | 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" |