mount proc
Ich dachte außerdem, Du hättest kein Backup. Hast Du also doch eines?
Nein, muß es nicht. Das Eine hat mir dem Anderen nichts zu tun.ls -l /dev/mtd* listet mir alle 22 Char.- und Block-Devices. Dann muss wohl init irgendwie gelaufen sein?
Ist ja eine witzige Methode, Dateien von einem Remote-System zu holen und als lokale Zieldatei ein Block Device anzugeben. Das war vorher etwas mißverständlich formuliert. Du schreibst nicht über FTP, Du liest ("-g"=get). Das Schreiben läuft einfach in ein Device, genau wie mit cat. Du könntest genauso gut die Dateien erst lokal anlegen und sie dann mit cat schreiben, wie im Wiki beschrieben.Also, ich habe schon verschiedentlich direkt per tftp in die mtd-Blöcke geschrieben:
Das Netzwerk kann man schon hochfahren, vorausgesetzt, es bringt nicht wieder die Box zum Absturz wegen Deines verhunzten Bootloaders samt Environment. Aber das lassen wir mal und versuchen - s.u. - die Datei anders auf die Box zu kriegen.EDIT: Wie starte ich denn jetzt den Telnet Dämon für das LAN-Port?
(...)
Edit2: Geht scheinbar doch, aber er sieht kein Netz. Und außerdem ist das Dateisystem ro gemountet.
cat urlader.image | uuencode -m - > urlader.base64
urlader="[COLOR="Gray"]<hier einfügen>
...
diverse eingefügte Zeilen, immer mit einem Fortsetzungszeichen
">" am Zeilenanfang versehen - warten, bis fertig
...[/COLOR]
"
echo "$urlader" | uudecode | wc -c
echo "$urlader" | uudecode > /dev/mtdblock3
Nein, procfs und devfs sind zwei Paar Stiefel. Procfs mounten mußt Du nur, wenn Du aus dem virtuellen Proc-Dateisystem etwas abfragen willst, z.B. /proc/mtd, ansonsten sagt er ja, er könne die Datei nicht finden.Das mit dem mount proc habe ich noch nicht verstanden. Jetzt habe ich ein proc on /proc type proc (rw,nodiratime) - muss ich dorthin noch /dev/mtdblock3 mounten?
Meine Erfahrung mit der seriellen Konsole ist, daß sie aus dem Takt kommt, sobald mehr als ca. 15 Zeichen auf einmal eingegeben werden. Vermutlich kann die Box die Zeichen nicht schnell genug aus dem Schnittstellenbaustein abholen. Man müßte also jede Zeile in mehreren Teilen einfügen, und das für sehr viele Zeilen.Jetzt wollen wir den Inhalt über Einfügen komplett in eine Umgebungsvariable auf der seriellen Konsole Deiner mit init=/bin/sh gestarteten Box bugsieren.
...nein, eigentlich nicht. Ich paste mit Putty munter ganze Zeilen.Meine Erfahrung mit der seriellen Konsole ist, daß sie aus dem Takt kommt, sobald mehr als ca. 15 Zeichen auf einmal eingegeben werden.
Interessante Idee, hätte mir mit meiner netzlosen Minishell wahrscheinlich geholfen.Das einfachste ist, den benötigten Boot-Loader mit ins Flash-Image zu schreiben, dann hat man ihn ohne weitere Umstände gleich im Dateisystem.
quote SETENV urlader-version 0000
quote SETENV bootloaderVersion 0.000
(AVM) EVA Revision: [B]1.153[/B] Version: [B]1153[/B]
(C) Copyright 2005 AVM Date: Jul 12 2006 Time: 10:00:21 (0) 2 0-11111
[FLASH:] MACRONIX Top-MirrorBit-Flash 8MB 32 Bytes WriteBuffer
[FLASH:](Eraseregion [0] 127 sectors a 64kB)
[FLASH:](Eraseregion [1] 8 sectors a 8kB)
[SYSTEM:] OHIO on 211MHz/125MHz
AVM_Ar7 >setenv urlader-version 0000
AVM_Ar7 >setenv bootloaderVersion 0.0000
AVM_Ar7 ><set IP-Address to 192.168.178.1>
urlader_update
..
AVM_Ar7 >
flash .check mtd2
AVM_Ar7 >
(AVM) EVA Revision: [B]1.190[/B] Version: [B]1190[/B]
(C) Copyright 2005 AVM Date: Nov 15 2006 Time: 16:53:42 (0) 2 0-11111
[FLASH:] MACRONIX Top-MirrorBit-Flash 8MB 32 Bytes WriteBuffer
[FLASH:](Eraseregion [0] 127 sectors a 64kB)
[FLASH:](Eraseregion [1] 8 sectors a 8kB)
[SYSTEM:] OHIO on 211MHz/125MHz
AVM_Ar7 >
Die Frage wäre, was mit "über den Bootloader" gemeint ist. Meine Auffassung war, dass ich "aus dem Bootlader heraus" den Bootlader nicht überschreiben kann (also solange ich den Bootlader nicht verlassen habe, kann ich ihn nicht überschreiben z.B. kein "ftp put" eines Lader-Images nach mtd2), sondern ein "Programm" haben muss, was vom Bootlader gestartet wird und das dann tut. Vielleicht liege ich da ja falsch, zumindest war es das, was ich gemeint hatte.Wie kommt ihr darauf, dass man den Bootloader nicht über den Bootloader recovern kann?
Hätte ich statt "über den Bootloader" besser "aus dem Bootloader" geschrieben? Ich denke es ist klar was gemeint ist, denn wenn man den Bootloader nicht über den Bootloader flashen könnte, dann könnte man ihn gar nicht flashen... ;-)Die Frage wäre, was mit "über den Bootloader" gemeint ist.
Ja, da war dann wohl mein Fehler in der Annahme. Genau das hatte ich eben bislang gedacht, dass das nur über den "Umweg eines anderen Programms" ginge, und der Lader selbst das eben nicht könnte... wenn man den Bootloader nicht über den Bootloader flashen könnte, dann könnte man ihn gar nicht flashen... ;-)
Wie gesagt, da habe ich wohl geirrt :-(Ich kann beim AVM recover nur "quote media flsh" und "put mtd2" erkennen...
HWRevision127
ProductIDFritz_[B]Bo?x[/B]_7170_AnnexA
[...]
HWRevision_ATA='[B]0[/B]'
HWRevision_BitFileCount=[B]''[/B]
[...]
CONFIG_ATA='[B]n[/B]'
HWRevision127[B].1.1.0[/B]
ProductIDFritz_[B]Box[/B]_7170_AnnexA
[...]
HWRevision_ATA='[B]1[/B]'
HWRevision_BitFileCount=[B]'1'[/B]
[...]
CONFIG_ATA='[B]y[/B]'
[...]
Kernel panic - not syncing: No answer on upper layer Control channel! UBIK2 probably dead!
<0>Rebooting in 5 seconds..
Sollte gehen, obwohl mich das bei 38400 bps ohne jedes Handshake doch erstaunt. Mehrzeiliges Einfügen beim Adam-FTP mache ich hingegen oft und bisher ohne Probleme (oder vielleicht habe ich sie ja nur nicht bemerkt? ) Ja, danke nochmal für deine Methode! Man könnte das in einen Rettungs-Toolkit aufnehmen und im WiKi verewigen.Meine Erfahrung mit der seriellen Konsole ist, daß das Einfügen großer Datenmengen (z.B. die knapp 90 KB base64-kodierten Urladers) in eine Shell sehr zuverlässig funktioniert. Nur das Einfügen von Daten inkl. Zeilenvorschub in eine Bootloader-Sitzung vor dem Start der Box ist problematisch, das sollte man Befehl für Befehl selbst machen.
microvoip_isdn_top.bit
microvoip_isdn_top.bit1
driver params overwritten io_addr=0x0 irq_num=0
[4294938646]EchoCanceler MIPS: 3
[4294938689]DSP-Fw: Version 2.276] EC=0 DTMF=0 Slots=10 BChan=8(Analog=4) DChan=2 Fifo=128
[tiatm] DSL in training!
usbcore: registered new driver usbfs
usbcore: registered new driver hub
AHCI RevisionID = 0x02, RamSize = 16384, NumPorts= 1
[setup_irq]: irq 9 irqaction->handler 0xC0034490 (ahci_irq+0x0/0x880 [usbahcicore] )
ahci : new USB bus registered, assigned bus number 1
usb storage: nothing to do ....
Jan 1 01:00:16 ar7cfgctl[391]: FactoryDefault=/etc/default/avme/ar7.cfg (ar7) Jan 1 01:00:16 ar7cfgctl[391]: load_config(ar7): factory default loaded kdsldmod: init start (Jun 12 2007 16:03:29) sizeof(struct sk_buff)=176
kdsldmod: init done
<6>kdsld: PPP led: off (value=0)
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
Jan 1 01:00:20 ctlmgr[432]: process priority is 19 Jan 1 01:00:20 ctlmgr[468]: FactoryDefault=/etc/default/avme/ar7.cfg (ar7)
driver params overwritten io_addr=0x0 irq_num=0
[4294938660]EchoCanceler MIPS: 3
usbcore: registered new driver usbfs
usbcore: registered new driver hub
AHCI RevisionID = [b]0xFF[/b], RamSize = [b]1048579[/b], NumPorts= [b]16[/b]
AHCI Reset failed after 201 jiffies
Trying to free IRQ9
insmod: cannot insert `/lib/modules/2.6.13.1-ohio/kernel/drivers/usb/ahci/usbahcicore.ko': Success (1): Success
modprobe: failed to load module usbahcicore
usb storage: nothing to do ....
Jan 1 01:00:18 ar7cfgctl[392]: FactoryDefault=/etc/default/avme/ar7.cfg (ar7) Jan 1 01:00:18 ar7cfgctl[392]: load_config(ar7): factory default loaded kdsldmod: init start (Jun 12 2007 16:03:29) sizeof(struct sk_buff)=176
kdsldmod: init done
<6>kdsld: PPP led: off (value=0)
Jan 1 01:00:21 ctlmgr[434]: process priority is 19 Jan 1 01:00:21 ctlmgr[436]: FactoryDefault=/etc/default/avme/ar7.cfg (ar7)
[4294938689]DSP-Fw: Version 2.276] EC=0 DTMF=0 Slots=10 BChan=8(Analog=4) DChan=2 Fifo=128
[tiatm] DSL in training!