Die Folgende Anleitung mag unvollständig oder gar an einigen Stellen Falsch sein. Der/Die AuthorInnen übernehmen keine Haftung für Schäden jeglicher Art, die mittelbar oder unmittelbar als Folge dieser Anleitung entstanden sind. Das Flashen der Firmware bedeutet in jedem Falle eine Verletzung der Garantiebedingungen.
Zuerst einmal solltest Du Dir ein Verzeichnis für die Sourcen anlegen, sinnvoll wäre z.B.
mkdir /usr/src/speedport_firmware
Danach das Archiv mit der Firmware dort ablegen und entpacken.
cd /usr/src/speedport_firmware tar -xzvf bcm963xx_Speedport [...]
In dem Verzeichnis befinden sich nun 2 weitere Archive, die ebenfalls wie oben entpackt werden können. Ausserdem liegt dort die Toolchain vergraben in zwei RPM-Paketen. Auf Systemen, die ohnehin RPM verwenden einfach installieren mit
rpm -ihv uclibc-crosstools-common.i386.rpm uclibc-crosstools-mips.i386.rpm
Für Systeme, die primär auf das Debian-Paketmanagement setzen (Debian, Ubuntu, etc.), muss rpm installiert sein:
apt-get install rpm
Danach die Toolchain installieren mit
rpm -ihv --nodeps uclibc-crosstools-common.i386.rpm uclibc-crosstools-mips.i386.rpm
Die –nodeps Option ist leider nötig, da bei der Installation von RPM dessen Paketdatenbank leer ist und RPM glaubt, es sei nicht einmal eine libc installiert…
Um die Paketverwaltung von Debian nicht inkonsistent werden zu lassen, wäre es nicht sinnvoller, das Paket mit alien in ein deb Paket zu konvertieren?
Damit es sauber backt, muss man zuerst einmal Hand anlegen und die Datei mconf.c im Verzeichnis userapps/opensource/busybox/scripts/config bearbeiten. In Zeile 104 muss
static struct menu *current_menu;
zu
struct menu *current_menu;
umgebastelt werden.
EDIT 20071027: Bei mir war es die gleiche Änderung, aber an der Datei kernel/linux/scripts/kconfig/mconf.c in Zeile 91 (die oben genannte Datei war schon o.k.).
Die eigene Busybox Konfiguration kann man bequem menügeführt erledigen. Dazu muss man in das Verzeichnis userapps/opensource/busybox gehen und dort make menuconfig eingeben.
Was unbedingt aktiviert werden sollte in der Config ist der telnetd – den brauchen wir später noch ;)
Nach getaner Arbeit muss man die soeben erstellte Datei .config kopieren in brcm.config, sonst wird sie knallhart von der Makefile überschrieben. Alternativ kann man natürlich auch folgenden Eintrag aus Zeile 774 der Makefile auskommentieren:
cd $(OPENSOURCE_DIR)/busybox; cp -f brcm.config .config
in
cd $(OPENSOURCE_DIR)/busybox #; cp -f brcm.config .config
Den Kernel darf man natürlich auch verändern und so z.B. ipv6 support einbauen. Einfach in das Verzeichnis kernel/linux wechseln und ebenfalls make menuconfig hier eingeben.
Auch hier ist die Makefile gnadenlos und will einfach unsere schöne neue Kernel-Config überschreiben… Hierzu einfach Zeilen 362 und 374 der Makefile komplett auskommentieren:
cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config;
in
# cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config;
Es gibt 2 möglichkeiten den Telnetd zu starten. Zum einen via inetd oder direkt via rc-script, das beim starten des Systems aufgerufen wird.
Zum starten via rc-script die Datei /target/fs.src/etc/init.d/rcS editieren und folgende Zeile hinzufügen:
/usr/sbin/telnetd telnetd -l /bin/login
fertig.
Es ist auch möglich den Telnetd via inetd zu starten. Hierzu sollte man den inetd in busybox (s.o.) aktivieren und ihn mit dem rc-script starten. Hierzu einfach folgende Zeile der rcS hinzufügen:
/usr/sbin/inetd
Wenn man sich für inetd entscheidet, muss man zusätzlich noch folgende Zeile in der Datei /target/fs.src/etc/inetd.conf eintragen:
telnet stream tcp nowait root /bin/telnetd telnetd
So, nun ist's eigentlich fertig. Zum Backen des Images braucht man nun nur noch make zu tippen und abwarten, bis folgende Meldung erscheint:
Done! Image 96348GWV_DT has been built in /usr/src/speedport_w500v/images.
In dem Verzeichnis images/ wird dann ein fertiges firmware-image abgelegt, das man über das Webinterface hochladen kann.
…gibt es noch eine Art backup-Modus. Hierzu muss man das Gerät zunächst ausschalten und mit gedrückt gehaltener reset-taste wieder einschalten. So lange drücken, bis die Power-LED rot, die Online-LED gelb und die LAN-LED grün leuchtet.
In diesem Modus hält das gerät einen mini Webserver vor, der auf der IP 192.168.1.1 lauscht und mit dem man das Gerät neu flashen kann. (z.B. Original Firmware image vom Hersteller)