Firmwareentwicklung-Firmware selberbauen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(+neue pakete) |
(kein Unterschied)
|
Version vom 5. Februar 2007, 20:55 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 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"