IlPuntoTecnico

Hardware e Software => Connessioni ADSL/VDSL/FTTC => Topic aperto da: Cris - 27 Maggio 2006, 22:51

Titolo: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 27 Maggio 2006, 22:51
Come avrete visto a molte persone il firmware di Submax non funziona  :'(
Questo è dovuto a un incompatibilità del kernel con la flash Atmel all'interno dei "nuovi" 30xT.

Ok... ho bisogno di una mano da chi il kernel aztech (quello di submax tanto per intenderci) funziona già.
Se leggete questo thread https://www.ilpuntotecnico.com/forum/index.php/topic,1948.0.html vedrete che stavamo provando a patchare il kernel per farlo funzionare su i 30xT con flash Atmel.

Ecco cosa e necessario fare passo passo:

0 - Do per scontato che avete un PC con windows e un 30xT con kernel Aztech  ;)

1 - Scaricate zip da : http://rapidshare.de/files/21550390/dump_kernel.zip.html (scusate ma rapidshare.de era l'unico modo per condividere un file velocemente che mi è venuto in mento)

2 - Scompattate tutto su un'unica directory

3 - Avviate tftpd32.exe (sbloccatelo per farlo passare dall firewall se ne
cessario)

4 - Collegatevi tramite telnet al 30xT (login: root pwd: admin)

5 - Da shell sul 302T digitate:
Codice: [Seleziona]
cd /var
 tftp -g -r sector2 192.168.1.100
 chmod 777 sector2
Ovviamente 192.168.1.100  è l'indirizzo del mio server tftp. Voi mettete il vostro. A questo punto potete usare sector2.

6 - Adesso dobbiamo trovare l'indirizzo del codice del kernel nella RAM. Basta lanciare questa riga per avere l'indirizzo iniziale e finale del kernel:
Codice: [Seleziona]
cat  /proc/iomem

7 - Estraiamo il kernel e portiamo sul PC. Basta scrivere:
Codice: [Seleziona]
cd /var
/var/sector2 /dev/mem kernel_begin_address kernel_end_address >/var/vmlinux
tftp -p -l vmlinux 192.168.1.100
rm vmlinux
-> Ovviamente kernel_begin_address e kernel_end_address sono gl iindirizzi ottenuti tramite "cat /proc/iomem" in "kernel code" <-
Nella directory dove avevate lanciato tftpd32.exe adesso c'è pronto il kernel scompattato  8)
Se avete problemi leggete più sotto in questo thread.

8 - Fatto! mandate un messaggio in privato e vi fornisco il mio indirizzo email dove inviare il file

9 - Appena ricevete il mio indirizzo email compattatelo in formato .zip, .rar o .7z e inviatemelo :P

Grazie per la collaborazione!

Ciao,
    Cris  8)
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 27 Maggio 2006, 23:37
ma poi come lo ricomprimi?
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 27 Maggio 2006, 23:46
Te l'ho scritto 2 volte qui: https://www.ilpuntotecnico.com/forum/index.php/topic,1948.45.html.
Leggi lì.
Se mi fornisci il kernel scompattato poi ci penso io. Ti mando il mio indirizzo email.

Ciao,
     Cris
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 00:00
Citazione
Per ricomprimerlo penso sia sufficiente metterlo nella home directory dei sorgenti del kernel russo e lanciare "makefile ram_zimage" per ottenere un immagine compressa in ram_zimage.bin.

forse hai ragione  :D

tftp -p -l ./vmlinux 192.168.1.2
tftp: server says: Permission denied

cosa vuole?
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 00:06
scusami non ho mai usato tftpd su linux.... ;(
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 00:09
Neppure io. Te l'ho detto io uso il server FTP su Windows.

Che non gli piaccia il "./" davanti a vmlinux?
Non so... Leggi quello che ha scritto il server tftp sul log ...

Ciao,
     Cris

P.S.: Forse c'è da modificare qualcosa nel makefile su mips-boards/ti_avalanche/ per ricomprimerlo.
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 00:17
azz ma scaricarlo con htttpd ? non riesco... uffa...
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 00:20
Ok... puoi usare pure httpd o qualsiasi altro server web... l'importante è che lo porti sul PC.
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 00:35
non riesco a scaricarlo dal router ! si blocca!
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 00:39
Forse perchè hai la RAM troppo piena o il kernel è troppo grande. Prova a scaricarlo in due parti:

Codice: [Seleziona]
cd var

/var/sector2 /dev/mem kernel_begin_address indirizzo_intermedio >/var/vmlinux.0
tftp -p -l vmlinux.0 192.168.1.100
rm vmlinux.0

/var/sector2 /dev/mem indirizzo_intermedio+1 kernel_end_address >/var/vmlinux.1
tftp -p -l vmlinux.1 192.168.1.100
rm vmlinux.1

Scegli l'indirizzo_intermedio in modo da tagliarlo in parti più o meno uguali. Occhio al +1 (ovviamente lo devi calcolare te)!

Ciao, Cris
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 00:41
ora faccio un ultima prova... se riesce ok ... altrimenti domani .....
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 00:55
Non hai un PC con WinXP? Usa il server tftpd32.exe per trasferire il file. A me non ha mai dato problemi. Mi viene in mente che forse il tftp client sul tuo firmware è diverso. Prova a controllare i parametri su http://www.busybox.net/downloads/BusyBox.html.

Se tftp ti sta proprio antipatico puoi lanciare un httpd su una porta diversa dalla 80 sullla directory /var
Dovrebbe funzionare lo stesso a meno che non tu sia a corto di RAM.
Prova:
Codice: [Seleziona]
/usr/sbin/thttpd -g -d /var -u root -p 8080
Puoi recuperare l'immagine del kernel a http://192.168.1.1:8080/vmlinux
O se hai spezzato il kernel in due(come ti dicevo sopra) a http://192.168.1.1:8080/vmlinux.0 e http://192.168.1.1:8080/vmlinux.1. Ovviamente ricordati di scaricare vmlinux.0 prima di fare "rm vmlinux.0".

Mi posti il kernel_begin_address e kernel_end_address  ottenuti tramite "cat /proc/iomem" in "kernel code" ?

Grazie,
    Cris
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 00:58
è quello che ho fatto... aspetta che provo anche da winzoz .... ma è tardi...
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 01:01
Magari i file che crei hanno i diritti sbagliati.
Prova a fare "chmod 666 vmlinux".

Rileggi un po' il messaggio sopra che l'ho modificato. Please.
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 01:17
FATTO ..... non era quello .... dava anche lo stesso errore in winzoz.... ma la linea

tftp -p -l /var/vmlinux 192.168.1.100

andava cambiata in

tftp -p -l vmlinux 192.168.1.100

comunque mandami la tua mail...
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 01:18
mi passi i sorgenti di sector2.c ?
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 01:21
Te l'avevo mandaa sula tua email su tiscali e te lh'o rimandata per messaggio privato.
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 01:22
I sorgenti di sector2 sono da qualche giorno sul thread "Quiete".
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 01:29
file inviato.....
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 28 Maggio 2006, 01:38
facci sapere.... notte  ;)
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 01:39
Grazie. Se tutto va bene lo patcho stanotte.
La prox settimana sono straimpegnato e prima del prox weekend non potrei metterci le mani.
Ciao, Cris
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 02:48
Ciao a tutti.
Prima di patchare il kernel ho provato a ricompattare l'immagine estratta dal kernel del mio 302T che sta funzionando adesso, mi pare sia l'originale Dlink per il 302T (lo so avrei dovuto provarea farlo prima).
Sto lavorando con i sorgenti del linux-2.4.17_mvl21_mc_09.
Ho copiato il kernel estratto dalla RAM in "vmlinux" nella directory principale.

Ho aggiunto nel makefile principale queste linee (in pratica ho tolto la dipendenza da vmlinux):
Codice: [Seleziona]
myram_zimage: srec2bin
$(MAKE) ram_zimage -C arch/$(ARCH)/mips-boards/ti_avalanche/inflater
$(SREC2BIN) ram_zimage.sre ram_zimage.bin

Visto che il file del kernel che abbiamo è già senza simboli ho fatto questa modifica nel makefile in \arch\mips\mips-boards\ti_avalanche\inflater nella sezione zimage.lzma commentando la linea:
Codice: [Seleziona]
$(CROSS_COMPILE)objcopy -S -O binary $(TOPDIR)/vmlinux zimage
e aggiungendo a seguire la linea:
Codice: [Seleziona]
cp $(TOPDIR)/vmlinux zimage

Putroppo non funzionava e mi dava:
Codice: [Seleziona]
mipsel-linux-ld -T zimage.script -r -b binary zimage.lzma -o zimage.o
mipsel-linux-ld -G 0 -static -G 0 -Map inflate.map -R /home/vmware/AR7/linux-2.4.17_mvl21_mc_09/vmlinux -no-warn-mismatch -T ld. script inflate.o zimage.o -o inflate
/home/vmware/AR7/linux-2.4.17_mvl21_mc_09/vmlinux: file not recognized: File format not recognized
make[1]: *** [ram_zimage] Error 1
make[1]: Leaving directory `/home/vmware/AR7/linux-2.4.17_mvl21_mc_09/arch/mips/mips-boards/ti_avalanche/inflater'
make: *** [myram_zimage] Error 2

Ho scoperto che il problema era la linea:
Codice: [Seleziona]
LOCALLINKFLAGS = -static -G 0 -Map inflate.map -R $(TOPDIR)/vmlinux
che ho provato a cambiare in:
Codice: [Seleziona]
LOCALLINKFLAGS = -static -G 0 -Map inflate.map

Ora però mi da un'altro errore:
Codice: [Seleziona]
LZMA 4.06 Copyright (c) 1999-2004 Igor Pavlov  2004-09-05
sed -e 's/@@OUTPUT_FORMAT@@/elf32-tradlittlemips/' \
    -e 's/@@LOADADDR@@//' <zimage.script.in >zimage.script
mipsel-linux-ld -T zimage.script -r -b binary zimage.lzma -o zimage.o
sed -e 's/@@OUTPUT_FORMAT@@/elf32-tradlittlemips/' \
    -e 's/@@LOADADDR@@//' <ld.script.in >ld.script
mipsel-linux-ld -G 0 -static -G 0 -Map inflate.map  -no-warn-mismatch -T ld.script inflate.o zimage.o -o inflate
ld.script:56 invalid assignment to location counter
make[1]: *** [ram_zimage] Error 1
make[1]: Leaving directory `/home/vmware/AR7/linux-2.4.17_mvl21_mc_09/arch/mips/mips-boards/ti_avalanche/inflater'
make: *** [myram_zimage] Error 2

Penso che manchino i simboli per la mappatura dei segmenti tramite LD.
La riga 56 in ld.script è l'ultima riga ed è vuota... il messaggio di errore non mi aiuta a identificare il simbolo o i simboli mancanti.

C'è qualcuno che è più esperto di me in materia che può dare una mano?

Ciao,
     Cris
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 13:45
Non è esattamente chiaro quali sono gli indirizzi dentro vmlinux che servono al compressore (quelli usati da LD).

Ho trovato questo simpatico post che potrebbe aiutare:
http://sourceware.org/ml/binutils/2005-02/msg00132.html
Con questa patch LD potrebbe ritornare informazioni più significative.

Sapete per caso dove trovare i sorgenti di "ld" nel toolchain
Io ho quelli di openwrt per WRT54. Anche il suo processore è mips ma gli eseguibili sembrano diversi (almeno dall lunghezza degli eseguibili).

Ciao,
     Cris
Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: Cris - 28 Maggio 2006, 20:28
Ok. Ultime notizie prima della prossima settimana.
Stavo cercando di risolvere il problema della compressione del kernel riscrivendo il loader.

Ma mi sono detto siamo sicuri che qualcuno non l'abbia già fatto?

Mi sono ricordato che Openwrt funziona (o almeno comincia a funzionare) su AR7.
Osvi sta lavorando alla versione 2 del firmware che dovrebbe basarsi su Openwrt... spero che si sia reso conto di quello che è già stato fatto (forse l'ha fatto lui?)

Ho scaricato i sorgenti della versione "kamikaze". Dando un'occhiata al makefile sembra che il vmlinux originale con i simboli non sia necessario. Eccetto per definire la variabile KERNEL_ENTRY(che non dovrebbe essere difficile da recuperare).
Quindi si potrebbe utilizzare questa versione del compressore per ricomprimere l'immagine patchata.

Ci vuole un po' di tempo per capire come abilitare la compilazione per AR7 di openwrt
Potere partire da qui:
http://wiki.openwrt.org/AR7Port

Fatemi sapere.

Ciao, Cris

Titolo: Re: Facciamo funzionare il kernel Aztech su 30xT con Flash Atmel!!!
Inserito da: submax82 - 29 Maggio 2006, 09:57
bravo cris... OTTIMO LAVORO ..... aspetto con ansia.. se non rispondo subito non preoccuparti sto scorrazzando con la gsr ...... :D