reflash HOWTO - wie man die Box wieder mit BR Soft füttert

Ein Problem, welches viele haben: nach dem kurzschließen der Box will die nicht mehr.
Entweder steht auf dem Display "kein System" oder die Box "loopt" immer im Kreis.
Beides ist nicht schön und heißt schlicht und einfach, das die Originalsoftware übern
Jordan ist, bzw. das Flash hat nix anständiges mehr als Inhalt.

Iss aber eh nicht wild, da soll eh Linux (mal) rein.

Das Verfahren hier setzt eine Box voraus, welche schon im Debug Mode ist!

Nötig sind erstmal 3 Sachen:

1. ein Image, der Inhalt vom Flash. Das ist eine 8MB Datei.
     Nein, das ist nicht das, was lokal als Verzeichnisse auf der Platte liegt.
     Das Flash ist bauartabhängig, sprich anders bei Nokia, Sagem und Philips.
     Dieses Howto beschreibt auch nicht, wie Ihr an das Image durch auslesen kommt
     sondern wie ihr das wieder reinquetscht. :)
2. der ausgelesene Kernel, auch als "os" bekannt.
3. das File cp.class, nicht das cpR.class

Das neufüttern der Box hat im Grunde nur zwei wichtige Schritte:

Schritt 1: flashen


Sorg erstmal dafür, das die Box per ppcboot bootet. Einen Kernel brauchen wir erstmal
nicht, wir brauchen die Komandozeile von ppcboot.
Es ist wohl selbstverständlich, das die Box per Nullmodem Kabel angeschlossen wird,
9600,8N1, kein check.

Wenn die Box an der Komandzeile steht und euch der ppcboot prompt angrinst, kann es weitergehen.

Das Flashimage (8MB!) legen wir mal nach /dbox
Nachfolgend die Befehle für ppcboot:
Tut euch selbst den Gefallen und gebt die Zahlen RICHTIG ein ..

bootp 100000 /dbox2/tftpboot/flashimage .. Das Image wir an die Speicherstelle 100000 vom RAM geladen ..

protect off 10020000 107fffff .. Schreibschutz für den Bereich über 128k disablen ..

erase 10020000 107fffff .. den zu flashenden Bereich erstmal löschen ..

Bei einem Image mit Bootloader:
cp.l 120000 10020000 1f8000 .. aus dem ram , ab stelle 1Mb+128k wird das flash.image ins flash ab stelle 128k geschrieben ..

Bei einem Image ohne Bootloader:
cp.l 100000 10020000 1f8000 .. aus dem ram , ab stelle 1Mb wird das flash.image ins flash ab stelle 128k geschrieben ..

NOCHMALS: ALLE ZAHLEN 3 MAL KONTROLLIEREN!

So, Schritt 1 ist damit abgeschlossen. Es sollten keine Fehlermeldungen beim flashen aufgetreten sein.
Box neu starten. "lade .." - entweder gehts gut oder - aaaah, wer bist Du denn?! Fehler UC0 ..
Keine Panik, das iss nicht weiter tragisch. Die Box merkt, das es nicht dein Image war. hmm..
Egal, machen wir mal passend. Deine Box hat eine eindeutige ID. Das ist die dsID, welche beim booten
auf dem Display steht. Und nein, das ist nicht die Ethernet MAC-Adresse. :)
Da Du ja schon den Inhalt des Flashs auf Platte hast, die Datei, an der sich das System aufhängt iss in
/dbox/var/upgrade/.did
Die brauchen wir gleich. Wenn Du die nicht hast bzw. kontrollieren willst -
in der Datei (binary) steht die dsID mit 0xFF geXORt.
Du nimmst also die dsID und XORst jeden Wert mit 0xFF.
dsID "01 xx xx xx xx 00 00 xx" wird also zu "FE xx xx xx xx FF FF xx"
Checken kannst Du die vorhandene .did mit jedem beliebigen HEX-Editor.
Wer des XORens nicht so mächtig iss, kann auch jenes bemühen.
Wenn das gecheckt iss, gehts weiter.

Schritt 2: .did anpassen

Damit wir die Datei im Flash austauschen können, muß uns die Box rsh aufmachen. Tut sie so aber nicht.
Man muß sie also zwingen. :) Dazu nehmen wir uns mal den Kernel vor, der schon unter
/dbox/root/platform/kernel/os wartet. Einen HEX-Editor brauchen wir noch, geübte machen es mit vi. :)
Im Kernel müssen wir einen Dateinamen patchen, damit der Kernel stockt und rsh aufmacht.
Dazu suchen wir mal in "os" nach rc.classix. Dieser Name muß umbenannt werden, z.B. in rc.classio.
Das reicht schon.

Diesen gepachten Kernel per dhcp/tftp booten!

Wenn alles glatt ging, kannst Du jetzt per rsh auf die Box. (rsh dbox help)
Wenns nicht klappt, einen Blick auf die serielle Ausgabe werfen.

Jetzt schnappst Du dir die copy.sh und entfernst alles hinter dem mount, sprich die Zeilen mit rsh entfernen.
Dieses geänderte copy.sh file kommt nach /dbox, ebenso wie die cp.class und das .did File.

copy.sh aufrufen - die Box wird ins System gemountet
rsh dbox arun siegep cp /lost+found/.did /var/upgrade/.did ausfühen.
Damit wird die lokale .did Datei in die Box nach /var/upgrade/ kopiert.
Auf Fehlermeldungen achten, wenn keine kommen, wars das.

Box neu starten.
Mein Dank geht an derget für die Infos.
-openbsdfn