Forum: Mikrocontroller und Digitale Elektronik U-Boot Bootloader Image retten


von Zesi (Gast)


Lesenswert?

Hallo zusammen

Habe hier ein Embeddedsystem mit U-Boot. Das Flash ist eingelötet und 
nicht ausbaubar.

Auf die Konsole U-Boot komme ich rauf.

Ich habe keine Sicherung des Linux-Images das dort drauf ist. Weiter 
habe ich kein root / user Zugang zum System.

Ziel:-->  Sicherung des Linux-Images und Überschreiben oder Rücksetzen 
des root Passworts.


Im U-Bootmenue finde ich keine Möglichkeit das Image auf ein externes 
Speichermedium zu kopieren. Ausser dem cp Befehl und der ist wenn ich es 
richtig verstehe nur für den internen Speicher.

Ich würde nun versuchen ein anderes Image über TFTP zu laden und dann 
auf das interne Flash zuzugreifen.

Wenn ich nun den Befehl anschaue ist mir nicht ganz klar welches die 
"richtige" loadAddress ist.
1
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]

Was passiert wenn ich als "loadAddress" eine Flash Adresse angebe. WIrd 
dann das Flash von dieser Adresse an überschrieben ?

Wenn ich als "loadAddress" das RAM angebe wird das Image in das RAM 
geschrieben? Wie stelle ich sicher das sobald das "System" gestartet 
wird mir das RAM in diesem Bereich nicht überschreiben wird ?

Kann ich dann mit dem Befehl
1
 bootm [loadAddress]
 das Image starten?

Ist das überhaut das richtige Vorgehen?

PS: Nein ich war nicht zu blöd eine Datensicherung zu machen und Nein 
ich plane nichts illegales. Mein Lieferant ist in Insolvenz und ich 
bekomme kein Support mehr :-(



Grüsse Zesi

von Hmmm (Gast)


Lesenswert?

Kannst Du die Kernel-Parameter beeinflussen?

Wenn ja: init=/bin/sh

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ist natuerlich etwas schwierig, denn uboot != uboot. Da gibts auch 
grosse Unterschiede, was den Funktionsumfang angeht.

Zesi schrieb:
> Was passiert wenn ich als "loadAddress" eine Flash Adresse angebe. WIrd
> dann das Flash von dieser Adresse an überschrieben ?

Nee, wohl eher nicht.

Mit "printenv" solltest du eine Liste der gesetzen environmentvariablen 
kriegen; da koennten so Sachen drinnenstehen, wie die Adresse, wo z.B. 
der Kernel hingeladen wird.

Natuerlich koenntest du dann z.b. per tftp oder kermit was anderes als 
den "normalen" Kernel an diese Adresse schreiben und dann dahinspringen 
(Wenn der Kernel aus dem RAM heraus laeuft und nicht aus dem Flash 
(waere wohl exotisch, koennte aber auch sein).
Ist halt die Frage, ob du dann in der Lage bist (toolchain, knowhow, 
etc...), ein entsprechendes anderes Binary dir zu bauen oder sonstwie zu 
beschaffen.

Gruss
WK

von U-Boot (Gast)


Lesenswert?

Mach' den Memory Dump direkt in der U-Boot-Konsole:
> md.b 0x9f000000 0x10000
gibt zB die ersten 64kB ab Adresse 9f000000 direkt in der Konsole aus.
Den Output durch ein kleines Skript jagen, das dir die Hex-Codes parst
und daraus wieder ein bin macht. BTDT.
(Vorausgesetzt natürlich du hast "md" verfügbar. help md)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.