Donnerstag, 6. Dezember 2007

Fonera zerflashen

hab soeben meine Fonera zum dritten mal erfolgreich geflasht und bin jetzt denkich mal soweit, meine erfahrungen mit euch zu teilen ^^

ACHTUNG: DAS HIER IST IM GROßEN UND GANZEN NICHT AUF MEINEM EIGENEN MIST GEWACHSEN UND BLOß EIN RESUMÉE DESSEN, WAS BEI MIR FUNKTIONIERT HAT (SIEHE QUELLEN). FÜR ETWAIGE SCHÄDEN SEID IHR SELBST VERANTWORTLICH!!!

zunächst ein paar fakten:

  • auf der fonera läuft von haus aus openwrt
    (mit hübchem, aber sehr beschnittenem webinterface)

  • sobald das gerät eingeschaltet wird und internet zugang hat, verbindet es sich mit seiner heimat, um firmwareupdates und konfigurationen automatisch einzuspielen
    (funktioniert anstandslos, ist aber für unsre zwecke eher hinderlich)



unser erstes ziel: SSH freischalten
dazu benötigen wir:

(eigentlich benötigen wir für SSH bloß die sshenable.htm. aber da wir unter umständen zwichenzeitlich kein internet haben, sollten alle files vorher auf der platte sein ^^)

als erstes trennen wir die fonera vom internet (weil wir die alte firmware der werkseinstellungen brauchen) und drücken mit dem bleistift den resetknopf auf der unterseite der fonera für 20 sekunden. danach sollten die wlan- und die internet-led kurz erlöschen, was signalisiert, daß die fonera neu startet.
von nun an hat die fonera die firmware 7.1r1 (aber bloß, bis sie wieder internet hat), welche eine lücke im webfrontend hat, die es gestattet den ssh-server zu starten (ist nämlich bereits drauf). dazu muß das netzwerk wie folgt eingestellt werden:
ip: 169.254.255.2
mask: 255.255.0.0
gateway: 169.254.255.1
dns: 169.254.255.1
da die fonera am ethernetport vorübergehend die adresse 169.254.255.1 hat. nun rufen wir via browser die auf dem webserver hinterlegte datei sshenable.htm auf und bestätigen den dialog.
nach kurzer zeit sollte das webui der fonera erscheinen (http://169.254.255.1/...) und die fonera via sh erreichbar sein.



nächstes ziel: Redboot
ssh ist zwar schön, aber flash0rn geht aus redboot; alo los!
jetzt gehts mit ssh (root:admin) auf die fonera, von wo aus ihr euch via wget in /tmp die dateien openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma organisiert:


cd /tmp

wget http://169.254.255.2/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma


die enthält ein gepatchtes rootfs und wird mit:


mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7


ins flash geschrieben. die fonera sollte jetzt neu gestartet werden:


reboot


(oder reset ...)
wieder mit ssh auf die fonera und wieder in /tmp. jetzt die out.hex besorgen:


wget http://169.254.255.1/out.hex


geflasht wird mit:


mtd -e "RedBoot config" write out.hex "RedBoot config"


und wieder:


reboot


ab sofort sollte die fonera kurz nach dem anschalten für ca. 10 sekunden über telnet erreichbar sein, also strom raus.
bei den netzwerk einstellungen sollte jetzt die ip auf 192.168.1.111 gessetzt werden. wir öffnen zwei terminals, wobei das eine die 192.168.1.254 pingt, und das andre mit


telnet 192.168.1.254 9000


im anschlag auf eine antwort des pings wartet, also strom wieder rein.
der kurz darauf erscheinende dialog wird mit ^C abgebrochen und ihr seid im bootloader ^^.

für MacOSX/BSD Systeme:
es hat mich einige zeit gekostet, um rauszufinden, daß BSD systeme ein 'falsches' zeichen als BREAK senden. daher muß vorher auf der konsole:


echo -e "\0377\0364\0377\0375\0006" > break


eingegeben werden. und telnet startet ihr mit:


nc -vvv 192.168.1.254 9000 < break ; telnet 192.168.1.254 9000


und auf zum dritten ziel: anderes system
für openwrt benötigen wir 2 dateien auf einem tftp server:

zuerst gehts mit telnet in redboot (s.o.). von dort aus werden nun nacheinander folgende befehle eingegeben:

RedBoot> ip_addr -h 192.168.1.111 -l 192.168.1.254/24

RedBoot> fis init

RedBoot> load -r -v -b %{FREEMEMLO} openwrt-atheros-2.6-root.jffs2-64k

RedBoot> fis create -f 0xA8030000 -l 0x006f0000 rootfs

RedBoot> load -r -v -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma

RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7

RedBoot> fis load -l vmlinux.bin.l7


mit 'ip_address' wird die locale ip und die des std. servers (z.B. für tftp) gesetzt.
'fis init' löscht das flash.
'load -r ...' lädt eine datei über tftp als image an eine freie telle im ram.
'fis create ...' schreibt ein image aus dem ram ins flash.
'fis load ...' lädt ein image aus dem flash in den speicher (zum ausführen; in unsrem fall den kernel).
'exec' startet das zuvor geladene image.
der erste 'fis create ...' dauert etwa eine viertel stunde und sollte wegen timeout nach ein paar minuten durch die eingabe von 'ip' gefolgt werden (beim prompt dann wieder einmal enter, damit der befehl ausgeführt wird; zeigt die ip konfiguration der fonera an).
ab sofort sollte openwrt auf der fonera (192.168.1.1) installiert sein; eine schöne grundlage für weitere spielereien ... =)



sollte jemand wieder die original firmware benötigen, folge er folgendem kleinen auszug aus der wiki von dd-wrt:

1) Download the firmware:
Download and unzip a pre-converted zip file:
7.1.1 version (Enable-SSH hole is OPEN in this version)
(http://rapidshare.com/files/18083671/fo ... d.zip.html)
7.1.2 versions (Enable-SSH hole has been patched in this version)
(http://uselesshacks.com/files/fonera_0.7.1.2.zip)
If you want the firmware directly from FON, download it here: Fon.com (http://www.fon.com/)
(Direct link (http://downloads.fon.com/firmware/curre ... .7.1.3.fon) ) then follow these
steps to convert it to usable files:
1.a) Remove the first 520 bytes of the downloaded file.
On Linux, Mac OS X (or other *nixes):



tail --bytes +520 fonera_0.7.1.3.fon > fonera_0.7.1.3.tar.gz


Windows: Use the mirrored zip files which are already converted.
1.b) Change the extension of the resulting file to .tar.gz and untar it.
2) You need 2 files from the steps above, kernel.lzma and rootfs.squashfs. Put these in your TFTP
server root directory. If you don't have a TFTP server, go back the beginning of this document and
set one up.
3) Connect to the RedBoot prompt and type in the following commands:


RedBoot> ip_address -l 192.168.1.254/24 -h 192.168.1.111
RedBoot> fis init
RedBoot> load -r -v -b 0x80040450 rootfs.squashfs
RedBoot> fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
RedBoot> load -r -b %{FREEMEMLO} kernel.lzma
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
RedBoot> fis load -l vmlinux.bin.l7
RedBoot> exec



nach einem reboot sollte die original firmware wieder einsatzbereit sein.


wer statdessen dd-wrt installieren möchte (hat ein sehr umfasendes webui), dem sei es freigestellt, sich die 4 files aus der downloadsektion (LINK > beta > fonera > ...) herunter zu laden und der fonera_flashing.txt zu folgen =)

quellen:

http://google.com

http://uselesshacks.com/?p=23 (für die sache mit ssh&co)

http://www.dd-wrt.com/wiki/index.php/La ... e_Flashing (original firmware wiederherstellen)

http://www.dd-wrt.com/phpBB2/viewtopic.php?t=8858

http://wiki.chaostreff-dortmund.de/wiki/La_Fonera

Keine Kommentare: