Development

Grundsätzliches:

Das Betriebsystem des Netcenters (und anderer NAS) besteht aus 3 Teilen:

Teil 1 "cfe" ist der Bootloader (das "Bios" des Netcenters)
Dieser sorgt für die grundlegende und individuelle Initialisierung der Hardware, z.B. der MAC-Kennung des Netzwerkanschlusses und er startet den Kernel. Eine Bearbeitung ist nur ausserhalb des Netcenters und mit spezieller Software möglich, nur kommt man leider nur schwer an ihn heran. Zumindest beim Netcenter ist das wohl nur über das JTAG-Interface möglich, das aber mit heutigem Stand noch von keinem der für diese Zwecke erhältlichen Programme unterstützt wird. Da dieser Bootloader individuell ist, kann auch nicht einfach ein anderer Bootloader genommen werden, mal abgesehen davon, dass dieser auch nur wieder über das JTAG-Interface auf das Netcenter geladen werden kann.

Die Verwendung anderer Firmwares, wie t.B. open-wrt, ist übrigens nur mit einem angepasstem Bootloader möglich!

Teil 2 "piggy.gz" ist der Kernel
Damit werden beruhend auf den Vorgaben des Bootloaders weitere Initialisierungen und Parametergrundeinstellungen vorgenommen. Dieser Kernel kann auch nicht direkt bearbeitet werden, sondern muss mit speziellen Tools kompiliert werden. Er enthält unter anderem die Busybox, die für die Integration von z.B. VSFTP oder Telnet sorgt.

Das Kompilieren des Kernels mit den Tools von der WD-Webseite war mit heutigem Stand leider noch nicht erfolgreich. Das wäre aber unbedingt notwendig, da nur auf diesem Weg z.B. Telnet oder ein neuerer NFS-Server mit größeren Size´s eingebaut werden können. Dazu wird noch aktive Mithilfe benötigt!

Teil 3 "root.cramfs" ist das Filesystem
Darin sind weitere für die Funktionen notwendigen Dateien und Module untergebracht, so z.B. für das Webinterface (den NetcenterManager). Das Filesystem ist auf dem Netcenter read-only, also nicht direkt zu bearbeiten. Es kann aber aus dem Netcenter oder der Firmware herausextrahiert und an ein Linux-System gemounted werden. Danach kann man es bearbeiten, neu zusammensetzen und normal auf das Netcenter flashen. So ist in gewissen Grenzen das Anpassen der Firmware möglich und wer es selbst versuchen oder aktiv mitwirken will, findet nachfolgend eine Anleitung dazu.

HowTo: Anpassung des Filesystems der Firmware:
Hinweise: Diese Anleitung dient rein wissenschaftlichen Zwecken und wurde sorgsam erstellt und getestet.
Die Anwendung geschieht aber ganz allein auf eigene Gefahr, es wird keinerlei Haftung dafür übernommen!

Die Anleitung bezieht sich auf das Mounten des Filesystems unter Suse Linux 9.3, ein Mounten an Cygwin war z.B. nicht möglich. Beim Editieren des Filesystems ist äußerste Sorgfalt angebracht und es wird ein gewisses Grundwissen über Linux-Konventionen vorrausgesetzt.
Download als pdf-Dokument

1. Bereiche für Kernel und Filesstem in der Original-FW finden

1.1 dazu die Firmware mit einem Hexeditor öffnen und nach der Textstelle: "piggy" suchen
-> der zu extrahierende Bereich beginnt einige Bytes vor dieser Textstelle mit der Bytefolge "1F 8B 08 08 .."

- das Extrahieren darf also erst ab Byte 1F erfolgen, alles vorher muss übersprungen werden,
daher nun zählen, wieviel Bytes davor liegen (ab Anfang der Datei), diesen Wert aufschreiben
(wird später für die Option skip= benötigt - siehe 2.1)

1.2 weitersuchen nach der Textstelle "Compressed" ,
-> der zu extrahierende Bereich beginnt einige Bytes vor dieser Textstelle mit der Bytefolge "45 3D CD 28 .."

- das Extrahieren darf also erst ab Byte 45 erfolgen, alles vorher muss übersprungen werden,
daher nun zählen, wieviel Bytes davor liegen (ab Anfang der Datei), diesen Wert aufschreiben
(wird später für die Option skip= benötigt - siehe 2.2)

2. Dateien extrahieren

- die Firmware in das Verzeichnis \opt kopieren

2.1 Kernel extrahieren (piggy.gz)

# cd /opt

# dd if=Firmware.wdf of=piggy.gz bs=1 skip=112
(bei skip= den unter 1.1 ermittelten Wert eintragen, R1_1_0.003-FW: 112, openFW: 28)
-> piggy.gz wird nun erstellt (dauert etwas) und sollte ca. 6,5 MB groß sein

- um die korrekte Größe zu erhalten, muß der Kernel noch nachbehandelt werden:
# gunzip piggy.gz
-> Rückmeldung: gunzip: piggy.gz: decompression OK, trailing garbage ignored
(erfolgt eine Rückmeldung, wie "not gunzip-format" oder so, war der skip-Wert nicht korrekt)

# gzip -9 piggy
-> die Datei piggy.gz, sollt nun 1158029 Bytes groß sein

2.2 Filesystem extrahieren (root.cramfs)

# dd if=Firmware.wdf of=root.cramfs bs=1 skip=1151648
(bei skip= den unter 1.2 ermittelten Wert eintragen, R1_1_0.0003-FW: 1158144, openFW: 1158060)
-> root.cramfs wird nun erstellt (dauert etwas) und sollte ca. 5,7 MB groß

2.2.1 Filesystem mounten (root.cramfs)

- das Filesystem als Verzeichnis nach /mnt mounten:
# mount -o loop,ro ./root.cramfs /mnt
(erfolgt eine Fehlermeldung "please specify filesystem" oder so, war der skip-Wert bei 2.2 nicht korrekt)

Das nun als /root gemountete Verzeichnis ist erst mal nicht editierbar!

- gemountetes Verzeichnis /root nach /opt kopieren (dort ist es editierbar):
# cp -Rp /mnt root

Beim Mounten werden mehrere Fehlermeldungen über nicht kopierbare Verzeichnisse erfolgen.

- Verzeichnisse manuell erstellen:
# cd root
# mkdir foreign_shares mnt proc shares tmp
# cd usr/share
# mkdir empty

- das nun nicht mehr benötigte und unter /mnt gemountete Verzeichnis /root unmounten:
# umount /mnt
(wenn es dabei zu einer busy-Meldung kommt, den Vorgang später wiederholen)

Nun kann das Filesystem der Firmware editiert werden
Bitte beachten: Firmware über 7,6 MB wird vom Netcenter nicht akzeptiert, also nicht zu viel hineinpacken.

4. Firmware zusammensetzen

Dazu können z.B. die Tools WRT54GS_v4.70.6 verwendet werden (downloadbar bei Netgear -> Development). Nach dem Download der ca. 170 MB großen Datei werden die Tools entpackt, z.B. in /opt, so daß es dann ein Verzeichnis /opt/WRTGS54…. gibt. Eine spezielle Zusatzbehandlung, wie make oder so, benötigen die WRTGS-Tools für diese Zwecke nicht.
In der nachfolgenden Beschreibung wird von einem Verzeichnis /opt/WRT…/WRTGS… ausgegangen und die benötigten Tools liegen dabei in

mkcramfs in /WRT…/WRTGS…/release/src/linux/linux/scripts/cramfs
trx in /WRT…/WRTGS…/release/tools
(dies bitte bei anderen Tool-Versionen überprüfen)

4.1 Filesystem erstellen (cramfs)

- die Datei piggy.gz in das Verzeichnis /opt/WRT…/WRTGS…/realease/tools kopieren:
# cp /opt/piggy.gz /opt/WRT…/WRTGS…/release/tools

- cramfs erstellen:
# cd /opt/WRT…/WRTGS…/release/src/linux/linux/scripts/cramfs
# mkcramfs /opt/root root.cramfs

- die erstellte Datei cramfs in das Verzeichnis /opt/WRT…/WRTGS…/realease/tools kopieren:
# cp /opt/WRT…/WRTGS…/release/src/linux/linux/scripts/cramfs/root.cramfs /opt/WRT…/WRTGS…/release/tools

4.2 Kernel und Filesystem kombinieren

# cd /opt/WRT…/WRTGS…/release/tools
# trx -o myfirmware.wdf piggy.gz root.cramfs

- die neue Firmware-Datei wird erstellt

(eine Fehlermeldung, wie warning: increasing offset (wert1) (wert2) kann wohl vernachlässigt werden,
solange der Wert2 nicht um mehr als 3 Stellen größer ist, als der Wert1)

Die neue Firmware ist fertig!

------------------------------------------------------------

Download Filesystem open_FW 0.3

Download Filesystem open_FW 0.3a

------------------------------------------------------------

Download Kernel

------------------------------------------------------------

Home