Firmwareentwicklung-Firmware selberbauen
Version vom 5. Februar 2007, 21:42 Uhr von Fries43 (Diskussion | Beiträge) (→Softwarepakete nachinstallieren)
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
Softwarepakete nachinstallieren
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 ipkg install vtun (fuer VPN-Tunnel) 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 (manuell behobener Fehler...) 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"