Firmwareentwicklung-Firmware selberbauen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(+neue pakete) |
|||
Zeile 1: | Zeile 1: | ||
− | + | =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/ | ||
− | |||
− | |||
− | |||
− | + | EIGENER_ROUTER=$(route|awk '/default/{printf $2}') | |
+ | ssh $EIGENER_ROUTER | ||
− | + | * nun sind wir auf dem Router | |
− | |||
− | + | cd / | |
− | + | 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 | |
− | + | * alle (evtl. geaenderten) weimarnetz-spezifischen Dateien enthaelt. | |
− | + | * 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 | |
− | + | ipkg install freifunk-recommended-de (statistik,horst,tcpdump,dnsmasq,olsrviz) | |
− | + | ipkg install iptables-extra (viele Ziele) | |
− | + | ipkg install batman2 | |
− | + | ipkg install busybox-awk | |
− | |||
− | |||
− | |||
− | + | 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" | ||
− | + | * nun alles wieder einpacken und neues firmwareimage erzeugen | |
− | + | * das firmwareimage wird schon nach unixzeit und datum benannt: | |
− | |||
− | |||
− | |||
− | |||
− | + | tar cvzf ../root.tgz * | |
− | + | cd .. | |
− | + | 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 | |
− | + | * 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://svn.sourceforge.net/svnroot/weimarnetz-fw/ | |
− | |||
− | svn | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 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" |
Version vom 5. Februar 2007, 21:02 Uhr
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.
- 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.
- zum Arbeiten mit dem SVN empfiehlt sich die Lektüre Subversion - Versionskontrolle im Weimarnetz
- einfaches Einsehen des SVNs: http://svn.sourceforge.net/viewvc/weimarnetz-fw/trunk/firmware/
EIGENER_ROUTER=$(route|awk '/default/{printf $2}') ssh $EIGENER_ROUTER
- nun sind wir auf dem Router
cd / 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
- alle (evtl. geaenderten) weimarnetz-spezifischen Dateien enthaelt.
- 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 ipkg install freifunk-recommended-de (statistik,horst,tcpdump,dnsmasq,olsrviz) ipkg install iptables-extra (viele Ziele) ipkg install batman2 ipkg install busybox-awk
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"
- nun alles wieder einpacken und neues firmwareimage erzeugen
- das firmwareimage wird schon nach unixzeit und datum benannt:
tar cvzf ../root.tgz * cd .. 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
- 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://svn.sourceforge.net/svnroot/weimarnetz-fw/
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"