Hallo,
ich weiß, daß dieser Thread hier schon ewig alt ist, aber er trifft nun einmal genau mein Thema und war deshalb auch die Anleitung für meine bisherigen Versuche.
Mein Vorhaben ist es, meinen Rechner von überall auf der Welt über wol aufwecken, auf meinen FTP-Server zugreifen, Daten hoch- und runterladen und ihn dann über SSH wieder herunterfahren zu können. Das war alles eigentlich viel einfacher als ich dachte und funktioniert mittlerweile auch wunderbar, bis auf eine Kleinigkeit eben:
Meine Fritzbox SL weigert sich Ports an den Broadcast weiterzuleiten, weshalb ich das Zauberpaket direkt an meinen Rechner senden muß. Wenn dieser allerdings länger als eine Stunde aus war, löscht die Fritzbox den Arp-Cache und hat keine Ahnung mehr welche MAC-Adresse meine Netzwerkkarte habe, was wiederum dazu führt, daß dieser nichts zugestellt wird und mein Rechner weiter schläft.
Leider steht nun aber der arp-Befehl, mit dem man statische Arp-Einträge vornehmen kann, in meiner Busybox nicht zur Verfügung und kann auch nicht ständig über wget nachgeladen werden, da dies ebenfalls nicht drauf ist. Die einzige Möglichkeit Daten auf meine Box zu laden ist die Firmware-Update-Variante, die aber das Squash-Dateisystem nicht beschreiben kann (oder doch?), oder tftp, was wegfällt, da ich keinen öffentlichen tftp-Server kenne, von dem man bei jedem Neustart die Busybox mit dem arp-Bewfehl nachladen könnte.
Deswegen kam ich nun zu dem Schluß, daß die einzige Möglichkeit sei, das 10.03.94-Image zu modifizieren und die Arp-Busybox in das Squash-Dateisystem einzubauen. Wenn ich damit falsch liege und es einen einfacheren Weg gibt, fände ich das natürlich toll (deswegen schrieb ich auch die ganze Vorgeschichte).
Nun also zum Thread-Thema:
Ich versuchte mich an die Anleitung, die danisahne
hier zur Verfügung stellte, zu halten und dabei die Abweichungen für die 2MB-SL Box aus diesem Thread zu berücksichtigen. Resultat sind diese beiden Skripte:
squash_sl:
Code:
#! /bin/bash
TOOLS_DIR="./werkz"
TARGET_DIR="unsquash"
UNTAR_DIR="untar"
"$TOOLS_DIR/mksquashfs_alt" "$TARGET_DIR" filesystem.image -b 65536 -noappend -all-root
cat kernel.raw filesystem.image > alles.image
split -d -b 640k alles.image teil-
mv teil-00 "$UNTAR_DIR/var/tmp/kernel.image"
cat teil-01 teil-02 > "$UNTAR_DIR/var/tmp/filesystem.image"
"$TOOLS_DIR/tichksum" "$UNTAR_DIR/var/tmp/filesystem.image"
"$TOOLS_DIR/tichksum" "$UNTAR_DIR/var/tmp/kernel.image"
"$TOOLS_DIR/tar" -C "$UNTAR_DIR/" -cf - --owner=0 --group=0 --mode=0755 --format=oldgnu . > neue_firmware.image
rm -rf unsquash untar alles.image filesystem.image kernel.raw kernelsquashfs.raw teil-*
unsquash_sl (ist zum größten Teil von kriegaex übernommen):
Code:
#! /bin/bash
TOOLS_DIR="./werkz"
KERNEL_IMAGE="$1"
TARGET_DIR="unsquash"
rm -rf "$TARGET_DIR"
UNTAR_DIR="untar"
rm -rf "$UNTAR_DIR"
mkdir "$UNTAR_DIR"
"$TOOLS_DIR/tar" -C "$UNTAR_DIR" -xvf "$KERNEL_IMAGE"
"$TOOLS_DIR/rmtichksum" -f "$UNTAR_DIR/var/tmp/filesystem.image"
"$TOOLS_DIR/rmtichksum" -f "$UNTAR_DIR/var/tmp/kernel.image"
cat "$UNTAR_DIR/var/tmp/kernel.image" "$UNTAR_DIR/var/tmp/filesystem.image" > alles.image
#rm -rf "$UNTAR_DIR"
"$TOOLS_DIR/find-squashfs" alles.image
"$TOOLS_DIR/unsquashfs" -dest "$TARGET_DIR" kernelsquashfs.raw
"$TOOLS_DIR/unsquashfs" -ls kernelsquashfs.raw
#rm -f kernelsq*.raw
mksquashfs, unsquashfs, tichksum, tar und eigentlich alles bis auf cat klaute ich mir aus dem danisahne-mod (ds26-14.3), den kriegaex hier auch schon erwähnte. Es funktioniert auch eigentlich fast alles, wie es soll: das Image wird mit unsquash_sl entpackt und kann mit squash_sl wieder eingepackt werden (und dann auch wieder entpackt, es sollte also nicht korrupt sein). Vorerst fügte ich noch keine Datein hinzu, um auf Nummer sicher zu gehen. Dabei fiel mir auf, daß die neugepackte Version immer ca 70KB kleiner ist als die originale und tatsächlich kommt meine Fritzbox mit dem Resultat nicht klar: Sie blinkt ewig und dann brennt nur noch die Power-Lampe. Danach ist sie zu nichts mehr zu gebrauchen...
Ist irgendetwas an den Skripten verkehrt?
Hat jemand eine andere Idee, wie ich mein Ziel erreichen kann?
Irgendein Tipp?
Ich sitze jetzt schon ein paar Tage an dieser Kleinigkeit und möchte irgendwie mal fertig werden...
Danke im Voraus!