Flashare le fonere con dd-wrt
by Asbesto, 20/7/09, aggiornamento: 01/09/2011
Ho deciso di scrivere questo howto perche' in rete le informazioni sono abbastanza confuse, tali da produrre lo sgorgo dal colon. Seguendo passo passo queste istruzioni non c'e' possibilita' di sbagliare.
Connettori seriali sulle fonere
Fonera 2100 (vecchio modello)
Fonera 2200 (Nuovo modello)
INTERFACCIA SERIALE PER FONERA 2000, 2100, 2200, 2201, LINKSYS, USROBOTICS ETC.
Costruire l'interfaccia seriale e' facile. Usare l'integrato MAX232 e' una MINCHIATA, perche' richiede 4 condensatori e componenti di vario tipo. Usare l'integrato MAX233 e' la scelta giusta. Io ho usato questo schema:
ATTENZIONE alle connessioni specie sul connettore DB9: l'1 al 4 ed al 6, mentre il 5 va alla massa (GND) dell'integrato, sui pin 6 e 9 !!!
Se invece avete solo i chip MAX232, avrete bisogno anche di componenti esterni, 4 condensatori almeno. C'e' un mare di roba in rete ed ora non mi va di entrare nei dettagli, cmq lo schema e' questo:
Una volta realizzata l'interfaccia (o comprata gia' fatta su ebay ) possiamo cominciare!
UPPIAMO IL FIRMWARE VIA SERIALE DIRETTAMENTE CON MINICOM
Ovunque leggete che serve installare e configurare un server tftpd, impostare indirizzi ip, netmask, usare un cavo cross ethernet... QUESTA COSA E' MOLTO IDIOTA.
Redboot gestisce ymodem via seriale, QUINDI siccome abbiamo la seriale e' IDIOTA sbatterci per tirar su un server tftp, usiamo la SERIALE e YMODEM, NON CI SERVE ALTRO!!!
Basta usare un qualsiasi programma di comunicazione; per linux, c'e' Minicom che e' ottimo. Impostatelo a 9600, 8N1, e si parte! Minicom va settato a 9600,8N1, no hardware flow control altrimenti ctrl-c non funziona.
Indifferentemente che la fonera sia 2000, 2100, 2200, 2200+, basta:
- connettere la seriale
- dare:
baudrate -b 115200
Ora dovete configurate opportunamente minicom a 115200 altrimenti non vedrete piu' un cazzo! CTRL-A P e scegliete 115200. Un paio di enter e riotterrete il prompt di Redboot.
Ora cancelliamo la memoria della fonera, inizializzandola:
RedBoot> fis init About to initialize [format] FLASH image system - continue (y/n)? y *** Initialize FLASH Image System ... Erase from 0xa83e0000-0xa83f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa83e0000: .
Ora, trasferiamo l'immagine di linux.bin CON YMODEM su di essa.
Il firmware dd-wrt che uso e' questo: linux.bin, e' il 24sp2 credo. funziona ed e' stabile.
load -m ymodem -r -v -b 0x80041000 linux.bin
Premete CTRL-A S su Minicom, selezionate il protocollo YMODEM e scegliete il file da mandare. ET VOILA'
A upload completato, creiamo tutta la struttura sulla fonera (ci mettera' una decina di minuti):
RedBoot> fis create linux ... Erase from 0xa8030000-0xa82f0000: ............................................ ... Program from 0x80041000-0x80301000 at 0xa8030000: ............................................ ... Erase from 0xa83e0000-0xa83f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa83e0000: .
Ora diamo un minimo di configurazione:
RedBoot> fconfig
Rispondiamo alle domande, configuriamo gli indirizzi desiderati, RICORDANDOCI DI INSERIRE questo script di 2 righe DOVE VERRA' CHIESTO ALTRIMENTI LA FONERA NON PARTE:
fis load -l linux exec
Salviamo la config uscendo, cosi':
reset
FINE!
VECCHIO HOWTO CON TFTPD, DEPRECATED
Installare tftpd, tftp: nelle dipendenze software c'e' pure openbsd-inetd.
apt-get install tftpd tftp
(Il client vi servira' per fare i test.)
Configurare /etc/inetd.conf cosi':
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
Creare la dir /tftpboot, modo 777, user nobody; metti li' dentro linux.bin, modo 777, owner nobody.
Risultato finale:
root@gemini:~# ls -la /tftpboot/ total 6604 drwxrwxrwx 2 nobody root 4096 2009-07-19 18:57 . drwxr-xr-x 22 root root 4096 2009-07-19 18:47 .. -rwxrwxrwx 1 nobody root 6754304 2009-07-19 18:57 linux.bin root@gemini:~#
Ovviamente il server tftpd va lanciato, quindi:
/etc/init.d/openbsd-inetd start
Bella minchiata, eh? Usare ora tftp su localhost per provare se tutto funziona. Dovrebbe essere possibile poter prelevare linux.bin.
Seconda parte: collegamenti hardware
Collegare la fonera all'adattatore. questo dipende dall'adattatore! PARTE DA INSERIRE.
Terza parte: Riprogrammiamo la fonera
Enter the RedBoot console by pressing CTRL+C (entro 2 secondi)...
Configure the RedBoot bootloader IP and TFTP server settings using
ip_address -l [local ip address] -h [remote server address]
Cancelliamo la memoria della fonera, inizializzandola:
RedBoot> fis init About to initialize [format] FLASH image system - continue (y/n)? y *** Initialize FLASH Image System ... Erase from 0xa83e0000-0xa83f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa83e0000: .
Ora, trasferiamo l'immagine di linux.bin su di essa:
RedBoot> load -r -v -b 0x80041000 linux.bin Using default protocol (TFTP) Raw file loaded 0x80041000-0x802e3fff, assumed entry at 0x80041000
E per finire, creiamo tutta la struttura sulla fonera (ci mettera' una decina di minuti):
RedBoot> fis create linux ... Erase from 0xa8030000-0xa82f0000: ............................................ ... Program from 0x80041000-0x80301000 at 0xa8030000: ............................................ ... Erase from 0xa83e0000-0xa83f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa83e0000: .
Ora diamo un minimo di configurazione:
RedBoot> fconfig
Rispondiamo alle domande, configuriamo gli indirizzi desiderati, poi inseriamo questo script di 2 righe:
fis load -l linux exec
Salviamo la config uscendo, cosi':
reset
FINE!
Materiali e link
http://www.dd-wrt.com/dd-wrtv3/dd-wrt/hardware.html