Freetz für die 7390?

Status
Für weitere Antworten geschlossen.
- Irgendwie hat (bei mir) das "select" für die Build-TC nicht funktioniert, ich musste die von Hand wählen
Ich musste ebenfalls von Hand auswählen, dass ich eine selbst gebaue Toolchain wollte, vermutlich musst du das auch?

Jörg
 
EDIT:
Nach dem Erstellen der Toolchain kommt es zu einen andern Fehlern bei mir, und mit der heruntergeladen Toolchain geht es sowieso nicht.


freetz@speedlinux:~/sp/freetz-trunk1$ make
(cd /home/freetz/sp/freetz-trunk1/source/toolchain/target/gcc-4.2.4-uClibc-0.9.29/libtool-1.5.26; rm -rf config.cache; \
CC=/home/freetz/sp/freetz-trunk1/toolchain/target/bin/mips-linux-uclibc-gcc \
CXX=/home/freetz/sp/freetz-trunk1/toolchain/target/bin/mips-linux-uclibc-g++-uc \
CFLAGS="-O3 -march=24kec -mips16 -mdsp -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" \
PATH="/home/freetz/sp/freetz-trunk1/toolchain/target/bin:/home/freetz/sp/freetz-trunk1/toolchain/kernel/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games" \
./configure \
--build=i386-pc-linux-gnu \
--host=mips-linux-uclibc \
--target=mips-linux-uclibc \
--prefix=/usr \
--disable-ltdl-install \
--enable-shared \
--enable-static \
--disable-nls \
);
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for mips-linux-uclibc-strip... mips-linux-uclibc-strip
checking for mips-linux-uclibc-gcc... /home/freetz/sp/freetz-trunk1/toolchain/target/bin/mips-linux-uclibc-gcc
checking for C compiler default output file name...
configure: error: C compiler cannot create executables
See `config.log' for more details.
make: *** [/home/freetz/sp/freetz-trunk1/source/toolchain/target/gcc-4.2.4-uClibc-0.9.29/libtool-1.5.26/.configured] Error 77
freetz@speedlinux:~/sp/freetz-trunk1$
Die Fehlermeldung sollte eigentlich klar sein, trotzdem kann ich derzeit damit nichts anfangen.
ein config.log finde ich auch nicht.


Frank_m24 muss doch auch eine gehabt haben mit der er Compiliert hat.


Ich musste ebenfalls von Hand auswählen, dass ich eine selbst gebaute Toolchain wollte, vermutlich musst du das auch?

Jörg

Ja so hab ich das auch bis jetzt gehalten, habe jetzt die selben Compiler Optionen eingetragen wie ich die beim buildroot habe, mit dem ja das Kompilieren von kleineren Teilen funktioniert.

Unter selber auswählen verstehst du hoffentlich das gleiche wie ich, ich hab das nur übers freetz-menü gemacht und nicht per Kommandozeile.
 
Zuletzt bearbeitet:
Ja, habe ich (als die Fehler auftraten) auch im Menuconfig bei den Advanced Optionen eingestellt (hab ich jetzt nicht vor mir).

Jörg
 
Habe im Betrag #42 erneut editiert und die Fehlermeldung eingetragen die derzeit mit den geänderten Compileroptionen bekomme.

Angehängt ist noch meine .config
 

Anhänge

  • .config.gz
    4.1 KB · Aufrufe: 8
Zuletzt bearbeitet:
Hmm, das ist aber "später", also nicht beim Erstellen der MIPS-Compilers, oder? Denn dort werden ja schon die MIPS-Compiler genutzt. Ist das Bauen denn fehlerlos durchgelaufen??

Jörg
 
Ja stimmt nachdem ich jetzt meinen ersten Fehler begriffen habe wurde eine Toolchain gebaut. Compiler ist vorhanden soweit ich das sehe.

Ich konnte keine vorangegangen Fehler finden im log. Es wurde wohl an einer Stelle auf Benutzereingaben gewartet die scheinbar nicht vorkonfiguriert waren aber sonst war nichts.

Ich werde erneut komplett von vorne beginnen und alles mitloggen.
Genug freier Platz ist auch vorhanden.
 
Zuletzt bearbeitet:
Der übergeben mips-Compiler kann tatsächlich keine Executables erstellen, die auf dem Host lauffähig wären. Vielleicht kommt daher der Fehler.
Sonst müßte man mal die config.log ansehen.
 
Code:
freetz@speedlinux:~/sp/freetz-trunk1$ make
(cd [B]/home/freetz/sp/freetz-trunk1/source/toolchain/target/gcc-4.2.4-uClibc-0.9.29/libtool-1.5.26[/B]; 
CFLAGS="-O3 -march=24kec -mips16 -mdsp -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" \
...
See `[B]config.log[/B]' for more details.
make: *** [/home/freetz/sp/freetz-trunk1/source/toolchain/target/gcc-4.2.4-uClibc-0.9.29/libtool-1.5.26/.configured] Error 77
 
Hallo,

ich bin mir nicht sicher, ob ich alle Fragen richtig verstanden habe, aber ich versuche mal, sie zu beantworten.

Ich lasse die Toolchain selber bauen. Der Patch von Oliver aus Freetz Ticket 673 sorgt für die entsprechenden Optionen und stellt bei mir die Toolchain auf selber bauen um, belässt allerdings gcc-4.2.4 aktiv. Ich habe das dann auf gcc-4.3.3 umgeändert. gcc-3.4.6 für den Kernel und gcc-4.3.3 für den Rest bauen danach bei mir problemlos (Ubuntu 9.10 native auf einem Core2 Duo Notebook). Dann geht es direkt weiter mit dem Rest der konfigurierten Pakete. Zwischendurch muss ich lediglich ein paar Kernel-Config Optionen manuell bestätigen (u.a. ein LZO). Dauer: 33 Minuten für ein komplettes Freetz bis zum fertigen Image (3 parallele Build Jobs).

Ich habe mir einen "All in One Patch" gebaut, der alle meine Änderungen und Olivers Patch beinhaltet. Nur die find-sqaushfs.tar.gz muss ich außer diesem Patch noch in ein frisch ausgeschecktes freetz trunk einfügen. Ich kann ihn auf Wunsch hier anhängen, aber Warnung: Damit kann man dann nur noch die 7390 Images bauen, da er mksquashfs Option auf "-be" umbiegt und das Kernel Kompilieren verhindert.

Ich hatte auch schon überlegt, den chronyd rauszuwerfen und ggf. gegen OpenNTPD zu ersetzen. Ich wusste nicht, dass auch der multid NTP spricht, dann kann ich ja auch auf OpenNTPD verzichten. chronyd arbeitet erstaunlicherweise korrekt trotz seiner Eskapaden. Die Zeit ist korrekt und auch die Clockdrift etc. wird richtig eingestellt. Er verbrät halt nur 100% CPU und treibt den Load auf 5. Ich wage zu bezweifeln, dass das lange gut geht, wenn ich anfange, Daten auf den USB Speicher zu schieben oder per WLAN zu schaufeln.
 
Danke für die Antwort.

Ja bitte "All in One Patch" hier anhängen dann probiere ich das mal genau so wie du es gemacht hast.

Viel kann ja nicht anders sein aber etwas muss anders sein.

"belässt allerdings gcc-4.2.4 aktiv. Ich habe das dann auf gcc-4.3.3 umgeändert."

Dass habe ich nicht umgestellt, werde ich beim nächsten mal aber machen.

@RalfFriedl

Danke für den Hinweis, ja hätte ich auch gedacht, dass das dort zu finden sein müsste.
Nur war das keine, oder ich hab die übersehen werden beim nächsten mal besser aufpassen.
 
Wie gesagt: Nach Einspielen dieses Patches kann man nur noch Images für die 7390 bauen!
 

Anhänge

  • patch_7390.zip
    19.2 KB · Aufrufe: 31
Danke damit komme ich nun doch wesentlich weiter auch wenn ein Kernel zu bauen versucht wird.

EDIT:
Ich nimm das vorerst wieder raus, und lass es erneut durchlaufen.

Anhang ist nun mit geänderter .config


EDIT3: Anhang angepasst für r 4824
Kleine Änderung an der Config.in build kernel ist in dieser Version deaktiviert.
damit lässt sich eine freetz Firmware bauen aufbauend auf dem was frank_24 beschrieben hat.
auspacken und ./7390_freetz.sh eingeben.
 

Anhänge

  • 7390_without_make_kernel.log.gz
    13.5 KB · Aufrufe: 11
  • 7390_R4824-freetz.tar.gz
    51 KB · Aufrufe: 14
Zuletzt bearbeitet:
Hallo,

Was mir noch aufgefallen ist: Ich kann nicht auf den an der Fritz angeschlossenen Speicher zugreifen - weder per FTP noch per SMB. Auch nicht auf den Online Speicher. Da gabs doch auch schon mal was, oder? Irgendwas mit Plugins oder so? :gruebel:
 
Moin,
wollt grad die Version aus #52 antesten bzw. bauen lassen, bricht allerdings wie folgt ab:
Code:
    ( cd /home/guido/freetz/test/freetz-trunk_for_7390/toolchain/build/gcc-3.4.6/mips-unknown-linux-gnu/bin; \
            ln -fs ../usr/bin/ccache mips-linux-cc; \
            ln -fs ../usr/bin/ccache mips-linux-gcc; \
            ln -fs ../usr/bin/ccache mips-unknown-linux-gnu-cc; \
            ln -fs ../usr/bin/ccache mips-unknown-linux-gnu-gcc);
 downloading...tools/freetz_download dl/fw .config GPL-Speedport_W722V.tar.gz "@AVM/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc" "" 

--2010-04-28 20:50:27--  ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/GPL-Speedport_W722V.tar.gz
           => »dl/fw/GPL-Speedport_W722V.tar.gz«
Auflösen des Hostnamen »ftp.avm.de«.... 212.42.244.90
Verbindungsaufbau zu ftp.avm.de|212.42.244.90|:21... verbunden.
Anmelden als anonymous ... Angemeldet!
==> SYST ... fertig.    ==> PWD ... fertig.
==> TYPE I ... fertig.  ==> CWD (1) /fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc ... fertig.
==> SIZE GPL-Speedport_W722V.tar.gz ... fertig.
==> PASV ... fertig.    ==> RETR GPL-Speedport_W722V.tar.gz ... 
Die Datei »»GPL-Speedport_W722V.tar.gz«« gibt es nicht.
is ja klar, die Datei hat ja da auch nichts zu suchen auf dem AVM-Server.
Was ich mich aber frage, wieso will er überhaupt die w722V laden?

[EDIT] ok, temporär reichts den Haken bei "Override firmware source" zu setzen sowie die md5sum anzupassen und er holt die 7390er source.
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

die CFLAGS -mips16 -mdsp darf man nicht zusammen verwenden!
besser erstmal keinen der beiden verwenden.

viele Grüße
trinkfix
 
Ist derzeit nicht gesetzt.

@colonia
die Datei hat ja da auch nichts zu suchen auf dem AVM-Server.
Was ich mich aber frage, wieso will er überhaupt die w722V laden?
Frag ich mich auch, der W722V Source sollt eigentlich deaktiviert sein.

Da ist die falsche .config mit eingepackt!

Hab das in Ordnung gebracht.
Damit sollten keinerlei Änderungen im Menü nötig sein, wie es von Beginn an vorgesehen war.


EDIT: Log entfernt.
 
Zuletzt bearbeitet:
Jpascher: scheint so, aber ist ja aktuell halb so wild. Temporären workaround hatte ich ja gefunden. Damit komm ich zumindest genausoweit wie du in #52.
 
Post #52 editiert.

Mit deaktivierten build Kernel und deaktivierten build Modulen funktioniert es soweit wie frank_24 beschrieben.

Wenn Build Kernel an ist dann hängt es wie gehabt.

Hab nun einen Log angehängt, da fehlen jetzt wieder Headerdatein.

@MaxMuster
Wie war das mit den Header von den 7270 source oder war es Freetz ausborgen?
 
Zuletzt bearbeitet:
Oder kann man das noch optimieren?

Ich haben die Datei mal etwas überarbeitet:
Code:
--- source/host-tools/find-squashfs/find-squashfs.c~    2006-04-29 20:52:50.000000000 +0200
+++ source/host-tools/find-squashfs/find-squashfs.c     2010-04-29 17:25:25.000000000 +0200
@@ -3,8 +3,10 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
-#include <endian.h>
 #include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <arpa/inet.h>

 #include <errno.h>

@@ -15,78 +17,109 @@
 static void usage(name)
 char name[];
 {
-       fprintf(stderr,"Usage: %s kernel.image\n",name);
+       fprintf(stderr,"Usage: %s [-any|-be|-le] kernel.image\n",name);
        exit(1);
 }

+void
+write_file (const char *fn, void *start, size_t len)
+{
+       int fd;
+       ssize_t ret;
+
+       fd = open(fn, O_WRONLY|O_CREAT, 0666);
+       if ( fd < 0 )
+       {
+               fprintf(stderr, "Create %s: %s\n", fn, strerror (errno));
+               exit(99);
+       }
+       ret = write(fd, start, len);
+       if (ret != (ssize_t)len)
+       {
+               fprintf (stderr, "Write %s: short write %ld of %ld\n", fn, (long)ret, (long)len);
+               exit (99);
+       }
+       ret = close(fd);
+       if (ret < 0)
+       {
+               fprintf (stderr, "Close %s: %s\n", fn, strerror (errno));
+               exit (99);
+       }
+       fprintf(stderr, "created %s\n", fn);
+}
+
 int main(argc,argv)
 int argc;
 char **argv;
 {
-       FILE *fd;
+       int fd;
        long size, count;
+       ssize_t ret;
+       int i;
        uint32_t *start,*point;
-
        /* start signature of squashfs */
-#if BYTE_ORDER == LITTLE_ENDIAN
-       uint32_t search = 0x73717368;
-#else
-       uint32_t search = 0x68737173;
-#endif
+       uint32_t search_be = ntohl (0x73717368);
+       uint32_t search_le = ntohl (0x68737173);
+       enum { MODE_BE = 1 << 0, MODE_LE = 1 << 1, MODE_ANY = MODE_BE | MODE_LE} mode = MODE_ANY;
+       const char *fn;

-       if ( argc != 2 )
-               usage(argv[0]);
-       fd = fopen(argv[1],"r");
-       if ( fd == NULL )
+
+       for (i = 1; i < argc; i++)
        {
-               fprintf(stderr,"Unable to open <%s> errno: %d\n",argv[1],errno);
+               if (argv[i][0] != '-')
+                       break;
+               if (!strcasecmp (argv[i] + 1, "any"))
+                       mode = MODE_ANY;
+               else if (!strcasecmp (argv[i] + 1, "be"))
+                       mode = MODE_BE;
+               else if (!strcasecmp (argv[i] + 1, "le"))
+                       mode = MODE_LE;
+               else
+                       usage(argv[0]);
+       }
+       if ( argc - i != 1 )
                usage(argv[0]);
+       fn = argv[i];
+       fd = open(fn, O_RDONLY);
+       if ( fd < 0 )
+       {
+               fprintf(stderr,"open <%s>: %s\n",fn,strerror(errno));
+               exit(99);
        }
        /* get size */
-       size=fseek(fd, 0L, SEEK_END);
-       size=ftell(fd);
-       fprintf(stderr,"The size of <%s> is %ld\n",argv[1],size);
-       fseek(fd, 0L, SEEK_SET);
+       size = lseek(fd, 0L, SEEK_END);
+       fprintf(stderr,"Size is %ld\n", size);
+       lseek(fd, 0L, SEEK_SET);

        start=(uint32_t *)malloc(size);

-       fread(start,size,1,fd);
-       fclose(fd);
+       ret = read(fd, start, size);
+       if (ret != (ssize_t)size) {
+               fprintf (stderr, "short read %ld of %ld\n", ret, size);
+               exit (99);
+       }
+       close(fd);

        for ( count=0,point=start; count < size; count+=sizeof(uint32_t),++point)
        {
-               if ( *point == search )
+               if ( (mode & MODE_BE) && *point == search_be)
                {
-                       fprintf(stderr,"Squashfs signature found at %ld\n",count);
+                       fprintf(stderr,"Big endian squashfs signature found at %ld\n",count);
                        break;
                }
-       }
-       if ( count < size )
-       {
-               fd=fopen("kernel.raw","w");
-               if ( fd == NULL )
-               {
-                       fprintf(stderr,"Create kernel.raw: errno %d\n",errno);
-                       exit(99);
-               }
-               fwrite(start,1,count,fd);
-               fclose(fd);
-               fprintf(stderr,"kernel.raw created\n");
-               fd=fopen("kernelsquashfs.raw","w");
-               if ( fd == NULL )
+               if ( (mode & MODE_LE) && *point == search_le )
                {
-                       fprintf(stderr,"Create kernelsquashfs.raw: errno %d\n",errno);
-                       exit(99);
+                       fprintf(stderr,"Little endian squashfs signature found at %ld\n",count);
+                       break;
                }
-               fwrite(point,1,size-count,fd);
-               fclose(fd);
-               fprintf(stderr,"kernelsquashfs.raw created\n");
        }
-       else
+       if ( count >= size )
        {
                fprintf(stderr,"Strange, no squashfs signature found...\n");
                exit(99);
        }
+       write_file ("kernel.raw", start, count);
+       write_file ("kernelsquashfs.raw", point, size - count);

        free(start);
        exit(0);
Der Patch enthält eine erweiterte Fehler-Prüfung beim Lesen und Erstellen der Dateien, sowie die Möglichkeit, gezielt nach BE und LE Versionen zu suchen. Die Suche und die Meldung sollte unabhängig von der Architektur des Hosts funktionieren. Wenn nichts angegeben wird, wird sowohl BE als auch LE gesucht.

Im Prinzip ist es nicht ausgeschlossen, daß der gesuchte Wert zufällig auch im Kernel vorkommt, bevor das Squash-Dateisystem anfängt. Eine andere Möglichkeit wäre noch, die Länge des Kernels aus dem Header am Anfang auszulesen.
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Statistik des Forums

Themen
244,881
Beiträge
2,220,052
Mitglieder
371,606
Neuestes Mitglied
Hobbie
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.