Recovery-UBoot

Aus Freifunk Dresden - Anwender-Wiki
Zur Navigation springen Zur Suche springen

Einleitung

Jeder Router hat einen Loader, meist UBoot. Über diesen kann man alternative ebenso seinen Router retten.< br/> Dazu ist aber eine Serielle Konsole notwendig, die die meisten Router nur auf der Leiterplatte haben (manche sogar garnicht).
Eine Anleitung zum Öffnen und Verbinden eines Seriellen-Usb-Adapters ist routerabhängig.

Achtung: KEINE direkte Verbindung vom Serial-Port vom PC (oder USB-Serial-Adapter) !!!
         ---> Zerstörung des Routers möglich !

Die Serielle Schnittstelle am PC oder im USB-Serial-Adapter haben zu hohe Spannungen, welche von -15V (für low) und +15V (high) reichen.

Es gibt aber USB Adapter, die für low 0V und high 3.3V liefern. Nur diese dürfen verwendet werden.
Kennt man die Belegung der seriellen Schnittstelle nicht, so muss man einfach probieren.

Uboot

Funktioniert die serielle Konsole, kann der UBoot meist mit "Ctrl-C" gleich nach dem Start/Boot aktiviert werden. Man erhält einen Prompt.

Uboot besitzt eine Hilfe zu den unterstützen Kommandos

# help

Anzeige IP Adressen,

# printenv
bootcmd=tftp
bootdelay=1
baudrate=57600
ethaddr="00:C0:02:12:35:88"
ipaddr=192.168.1.1
serverip=192.168.1.123
stdin=serial
stdout=serial
stderr=serial

Anpassen und Speichern von IP Adressen, wenn notwendig.

# setenv <variable> <wert>
# saveenv

Wenn der Kernel kaputt ist und der Router nicht mehr startet, um eine Firmware zu installieren, kann man das kernel image via tftp in den Speicher laden und direkt aus UBoot starten.
Wenn das funktioniert, kann man via ssh und sysupgrade die freifunk-firmware (openwrt) installieren.

tftpboot verwendet die serverip, um sich mit einem tftp-server (port 69) zu verbinden. Wurde kein Filename konfiguriert, so wird dieser angezeigt.

# tftpboot

*** Warning: no boot file name; using 'test.bin'
TFTP from server 192.168.1.123; our IP address is 192.168.1.1
Filename 'test.bin'.

 TIMEOUT_COUNT=10,Load address: 0x0
Loading: Got ARP REPLY, set server/gtwy eth addr (20:1a:06:fe:4e:29)
Got it
Got ARP REQUEST, return our IP
T T T checksum bad
T checksum bad
checksum bad
T T T Got ARP REQUEST, return our IP
T T #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ######################
done
Bytes transferred = 7099592 (6c54c8 hex)
NetBootFileXferSize= 006c54c8

Das Kernel.image wurde in den Speicher geladen, wo bei die Adresse via 'printenv' angezeigt werden. Gibt es hier keine Angabe, so findet man die Speicheradresse (was auch die Startadresse ist) normalerweise bei den Ausschriften von `tftpboot` (TIMEOUT_COUNT=10,Load address: 0x80100000)

Der Kernel liegt im RAM und kann direkt gestartet werden.

# bootm 0x80100000