Firmwareentwicklung-Firmware selberbauen: Unterschied zwischen den Versionen

Aus Weimarnetz Wiki
Zur Navigation springen Zur Suche springen
(+neue pakete)
 
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"

Version vom 5. Februar 2007, 19: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"