#1 15/01/2008 08:45:32

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Compilation kernel efixo

Je voudrais compiler un kernel broadcom compatible avec le fs actuel.

Mon point de départ est de récupérer le source chez efixo
http://www.efixo.com/neufbox4/freesoftw … mer.tar.gz
l'installer dans /opt/L01
appliquer le patch pour la flash depuis /opt/L01
http://www.efixo.com/neufbox4/freesoftw … /mtd.patch

patch -p 0 < mtd.patch

forcer la config du kernel avec le fichier
http://www.efixo.com/neufbox4/freesoftw … fig.config

et lancer une compil
make PROFILE=96358GWV

pour récupérer le vmlinux.lz qui sera dans targets/96358GWV

C'est pas encore cela

des volontaires ??


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#2 15/01/2008 19:43:48

psolyca
Dictateur orthographique
Lieu: Cinq-Mars-la-Pile
Date d'inscription: 30/08/2007
Messages: 1616
Site web

Re: Compilation kernel efixo

je suis je suis maintenant que j'ai la câble c'était un de mes objectifs mais je ne suis pas chez moi... ce week-end.

Je voulais aussi faire 2-3 scripts pour fcgiopenbox4 mais je n'ai pas installé sur le dernier firmware modifié.


Reprend peu à peu le développement NB4
Me faut remettre la NB6 en fonction par JTAG si possible
Le Dockstar est en pause, soudures à faire.
C'quoi ça, ç'pas pour tout le monde tongue - Par contre, ça oui mais il n'y a plus grand chose

Hors ligne

 

#3 15/01/2008 20:04:22

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

je bute sur cette ligne
inodep = (squashfs_reg_inode_header *) inode = get_inode(sizeof(*reg) + offset * sizeof(unsigned short));

et celle-ci
inodep = (squashfs_symlink_inode_header *) inode = get_inode(sizeof(*symlink) + byte);

erreur : membre de gauche affectation invalide

Comment les réécrire ?


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#4 15/01/2008 20:43:15

psolyca
Dictateur orthographique
Lieu: Cinq-Mars-la-Pile
Date d'inscription: 30/08/2007
Messages: 1616
Site web

Re: Compilation kernel efixo

erf merde s'il faut savoir programmer...
Comment se fait-il que tu es des doubles égalités ? C'est possible ça ?


Reprend peu à peu le développement NB4
Me faut remettre la NB6 en fonction par JTAG si possible
Le Dockstar est en pause, soudures à faire.
C'quoi ça, ç'pas pour tout le monde tongue - Par contre, ça oui mais il n'y a plus grand chose

Hors ligne

 

#5 15/01/2008 20:59:29

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

Merci google

int i;
                squashfs_reg_inode_header *reg = &inode_header.reg, *inodep;

-               inodep = (squashfs_reg_inode_header *) inode =
get_inode(sizeof(*reg) +
-                       offset * sizeof(unsigned int));
+               inode = get_inode(sizeof(*reg) + offset * sizeof(unsigned int));
+               inodep = (squashfs_reg_inode_header *) inode;
                reg->mtime = buf.st_mtime;
                reg->file_size = byte_size;
                reg->start_block = start_block;
@@ -546,7 +546,8 @@
                        return SQUASHFS_INVALID;
                }

-               inodep = (squashfs_symlink_inode_header *) inode =
get_inode(sizeof(*symlink) + byte);
+               inode = get_inode(sizeof(*symlink) + byte);
+               inodep = (squashfs_symlink_inode_header *) inode;
                symlink->symlink_size = byte;
                if(!swap)
                        memcpy((void *) inode, symlink, sizeof(*symlink));


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#6 15/01/2008 22:02:23

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

Résumé :

Je suis allé sur le site d'Efixo et j'ai fait ceci :

1°) créer une directory efixo
2°) télécharger (tout depuis le site d'efixo)
buildroot-0.9.27.tar.gz
3°) détarrer  -> buildroot
4°) aller dans buildroot
5°) créer une directory dl
6°) dans cette directory dl j'ai téléchargé
gcc-3.4.2.tar.bz2
binutils-2.15.94.0.2.tar.bz2
linux-libc-headers-2.6.8.1.tar.bz2
uClibc-0.9.27.tar.bz2
7°) dans buildroot téléchargé nb4-buildroot-defconfig.config
8°) corrigé deux erreurs
a) dans package/config/mconf.c substituer partout current_menu par current_menu_here
b) remplacer dans target/squashfs le fichier squashfs.patch par

Code:

--- squashfs1.3r3/squashfs-tools/Makefile-dist    2004-01-18 01:01:05.000000000 +0100
+++ squashfs1.3r3/squashfs-tools/Makefile    2008-01-15 21:06:20.000000000 +0100
@@ -1,5 +1,5 @@
INCLUDEDIR = .
-
+CC=gcc
CFLAGS := -I$(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -Wall

mksquashfs: mksquashfs.o read_fs.o

--- squashfs1.3r3/squashfs-tools/mksquashfs.c-dist    2004-01-18 01:02:27.000000000 +0100
+++ squashfs1.3r3/squashfs-tools/mksquashfs.c    2008-01-15 21:05:54.000000000 +0100
@@ -136,6 +136,8 @@
    stotal_bytes, stotal_inode_bytes, stotal_directory_bytes, sinode_count, sfile_count, ssym_count, sdev_count, sdir_count, sdup_files;
int restore = 0;

+unsigned int root_owned = 0;
+
/*flag whether destination file is a block device */
int block_device = 0;

@@ -421,6 +423,11 @@
        return SQUASHFS_INVALID;
    }

+    if (root_owned) {
+        buf.st_uid = 0;
+        buf.st_gid = 0;
+    }
+
    base->mode = SQUASHFS_MODE(buf.st_mode);
    base->uid = get_uid(&file_type, (squashfs_uid) buf.st_uid);
    base->inode_type = file_type;
@@ -429,8 +436,8 @@
    if(type == SQUASHFS_FILE_TYPE) {
        squashfs_reg_inode_header *reg = &inode_header.reg, *inodep;

-        inodep = (squashfs_reg_inode_header *) inode = get_inode(sizeof(*reg) +
-            offset * sizeof(unsigned short));
+              inode = get_inode(sizeof(*reg) + offset * sizeof(unsigned int));
+              inodep = (squashfs_reg_inode_header *) inode;
        reg->mtime = buf.st_mtime;
        reg->file_size = byte_size;
        reg->start_block = start_block;
@@ -486,7 +493,8 @@
            return SQUASHFS_INVALID;
        }

-        inodep = (squashfs_symlink_inode_header *) inode = get_inode(sizeof(*symlink) + byte);
+              inode = get_inode(sizeof(*symlink) + byte);
+              inodep = (squashfs_symlink_inode_header *) inode;
        symlink->symlink_size = byte;
        if(!swap)
            memcpy((void *) inode, symlink, sizeof(*symlink));
@@ -1268,6 +1276,8 @@
            root_name = argv[i];
        } else if(strcmp(argv[i], "-version") == 0) {
            VERSION();
+        } else if (strcmp(argv[i], "-root-owned") == 0) {
+            root_owned = TRUE;
        } else {
            ERROR("%s: invalid option\n\n", argv[0]);
printOptions:

9°) lancer make
il va construire un menu
dans ce menu charger (L) le fichier nb4-buildroot-defconfig.config
return
exit et accepter de sauver la config
10° lancer make
Il propose des options, j'ai tout pris par défaut (return)
question : comment retrouver les optiosn dans la toolchains de Broadcom ?
Il devrait construire la toolchains sans erreur et faire une image vide

Je suis ensuite passer au kernel
1°) chargement du kernel de base 2.6.8.1 avec les instructions d'efixo.
2°) application du patch d'efixo kernel.patch
3°) application du patch mtd.patch
4°) récupération du fichier nb4-kernel-defconfig.config

et là je ne sais pas trop quoi faire
soit inclure ce linux dans buildroot si oui comment
soit inclure ce linux dans la distribution Broadcom


Qui a une idée ?

La transposition directe du fichier nb4-kernel-defconfig.config dans la directory kernel/linux de la distribution broadcom (le copier en tant que .config) après avoir appliquer le patch mtd.patch ne fonctionne pas . (Nota il ne faut pas appliquer le kernel.patch car cette directory linux contient déjà les modifs broadcom).

Il y a plantage

Code:

 CC      fs/jffs2/compr.o
In file included from fs/jffs2/nodelist.h:28,
                 from fs/jffs2/compr.h:28,
                 from fs/jffs2/compr.c:16:
fs/jffs2/os-linux.h:180: warning: "struct jffs2_raw_inode" declared inside parameter list
fs/jffs2/os-linux.h:180: warning: its scope is only this definition or declaration, which is probably not what you want
In file included from fs/jffs2/compr.h:28,
                 from fs/jffs2/compr.c:16:
fs/jffs2/nodelist.h:423: warning: "struct jffs2_raw_inode" declared inside parameter list
fs/jffs2/nodelist.h:425: warning: "struct jffs2_raw_inode" declared inside parameter list
fs/jffs2/nodelist.h:426: warning: "struct jffs2_raw_dirent" declared inside parameter list
fs/jffs2/nodelist.h:429: warning: "struct jffs2_raw_inode" declared inside parameter list
fs/jffs2/nodelist.h:430: warning: "struct jffs2_raw_inode" declared inside parameter list
fs/jffs2/nodelist.h:439: warning: "struct jffs2_raw_inode" declared inside parameter list
fs/jffs2/compr.c: In function `jffs2_compress':
fs/jffs2/compr.c:61: error: `JFFS2_COMPR_NONE' undeclared (first use in this function)
fs/jffs2/compr.c:61: error: (Each undeclared identifier is reported only once
fs/jffs2/compr.c:61: error: for each function it appears in.)
fs/jffs2/compr.c: In function `jffs2_decompress':
fs/jffs2/compr.c:184: error: `JFFS2_COMPR_NONE' undeclared (first use in this function)
fs/jffs2/compr.c:189: error: `JFFS2_COMPR_ZERO' undeclared (first use in this function)
make[3]: *** [fs/jffs2/compr.o] Erreur 1
make[2]: *** [fs/jffs2] Erreur 2
make[1]: *** [fs] Erreur 2

obstacle surmonté, le fichier kernel/linux/include/linux/jffs2.h était vide

..mais plein d'erreurs au link avec des références de type BcmAtm

Dernière modification par SGDA (15/01/2008 22:59:49)


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#7 16/01/2008 01:18:21

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

Finalement je n'ai pu que compiler le firmware broadcom L01.. et il boote ;-)


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#8 16/01/2008 11:16:23

goundoulf
Administrateur
Date d'inscription: 21/08/2007
Messages: 4607
Site web

Re: Compilation kernel efixo

psolyca a écrit:

erf merde s'il faut savoir programmer...
Comment se fait-il que tu es des doubles égalités ? C'est possible ça ?

en fait c'est des affectations multiples, à éviter en général

les règles de priorité te disent dans quel sens il faut faire : de la droite vers la gauche

Hors ligne

 

#9 16/01/2008 11:18:52

goundoulf
Administrateur
Date d'inscription: 21/08/2007
Messages: 4607
Site web

Re: Compilation kernel efixo

SGDA a écrit:

je bute sur cette ligne
inodep = (squashfs_reg_inode_header *) inode = get_inode(sizeof(*reg) + offset * sizeof(unsigned short));

et celle-ci
inodep = (squashfs_symlink_inode_header *) inode = get_inode(sizeof(*symlink) + byte);

erreur : membre de gauche affectation invalide

Comment les réécrire ?

en fait la partie qu'il n'aime pas est

Code:

(squashfs_symlink_inode_header *) inode = get_inode(sizeof(*symlink) + byte);

car les lvalues (membre de gauche) ne peuvent pas être castées (transtypées) comme ça

les casts doivent apparaître dans le membre de droite, pas dans le membre de gauche

la solution est de séparer la ligne en 2 parties

Hors ligne

 

#10 16/01/2008 11:20:36

goundoulf
Administrateur
Date d'inscription: 21/08/2007
Messages: 4607
Site web

Re: Compilation kernel efixo

SGDA a écrit:

Finalement je n'ai pu que compiler le firmware broadcom L01.. et il boote ;-)

le L01 c'est lequel (numéro de version majeure) ?

Hors ligne

 

#11 16/01/2008 11:22:16

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

bcm963xx_3.12L.01_consumer.tar.gz


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#12 16/01/2008 19:47:19

psolyca
Dictateur orthographique
Lieu: Cinq-Mars-la-Pile
Date d'inscription: 30/08/2007
Messages: 1616
Site web

Re: Compilation kernel efixo

Je fais ça ce week-end par contre à ta double question :

soit inclure ce linux dans buildroot si oui comment
soit inclure ce linux dans la distribution Broadcom

Je ne connais pas buildroot et ne sais même pas à quoi ça sert ^^; , je vais me renseigner...
Il n'est pas inclut dans la distribution d'ailleurs il n'y a pas de répertoire /boot ?

J'ai toujours un soucis, le linuxrc il sert à quoi ?


Reprend peu à peu le développement NB4
Me faut remettre la NB6 en fonction par JTAG si possible
Le Dockstar est en pause, soudures à faire.
C'quoi ça, ç'pas pour tout le monde tongue - Par contre, ça oui mais il n'y a plus grand chose

Hors ligne

 

#13 17/01/2008 11:45:22

goundoulf
Administrateur
Date d'inscription: 21/08/2007
Messages: 4607
Site web

Hors ligne

 

#14 19/01/2008 14:30:33

psolyca
Dictateur orthographique
Lieu: Cinq-Mars-la-Pile
Date d'inscription: 30/08/2007
Messages: 1616
Site web

Re: Compilation kernel efixo

Bon, compilation d'un noyau avec le consumer 3.12L.01 et le .config de l'archive sans soucis
make PROFILE=96358GWV kernelbuild

Etape suivante, voir ce que fait le noyau du consumer avec une base de firmware 1.4.5
Après, je vois à mettre le .config fournit par Efixo
Comprendre le fonctionnement de la compilation et après faudra le faire à partir d'un 2.6.8 patché.

J'ai récupéré une carte PCMCIA pour voir aussi.


Reprend peu à peu le développement NB4
Me faut remettre la NB6 en fonction par JTAG si possible
Le Dockstar est en pause, soudures à faire.
C'quoi ça, ç'pas pour tout le monde tongue - Par contre, ça oui mais il n'y a plus grand chose

Hors ligne

 

#15 21/01/2008 17:26:29

l77
Moddeur newbie
Date d'inscription: 19/01/2008
Messages: 10

Re: Compilation kernel efixo

J'ai recompilé le noyau et le fs d'après les sources de la release consumer 3.12L.01
Il y a pas mal de différences avec le firmware en squashfs extrait du firmware par Efixo.
J'ai fait une liste des différences: http://pastebin.com/fbc00683

Le détail du noyau et du rootfs R1.4.5 de la NB4 est-il disponible? Le site tftp.neufbox.neuf.fr tel qu'indiqué dans http://www.neufbox4.org/wiki/index.php? … u_firmware ne fournit en tftp que la version R1.3.11.

Hors ligne

 

#16 21/01/2008 18:06:25

goundoulf
Administrateur
Date d'inscription: 21/08/2007
Messages: 4607
Site web

Re: Compilation kernel efixo

tftp.neufbox.neuf.fr n'est pas le même pour tout le monde apparemment

du style quand certains sont en beta test, ils doivent être sur un tftp différent pour avoir la version beta du firmware, alors que tous les autres abonnés ont la version stable

sinon d'après le pastebin, tu n'as pas les devices de créés on dirait, du coup ça ne peut pas marcher (cf ton autre message)

Hors ligne

 

#17 21/01/2008 18:06:35

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

le wiki dit d'utiliser l'IP      80.118.192.99


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#18 21/01/2008 18:09:21

goundoulf
Administrateur
Date d'inscription: 21/08/2007
Messages: 4607
Site web

Hors ligne

 

#19 21/01/2008 19:39:48

l77
Moddeur newbie
Date d'inscription: 19/01/2008
Messages: 10

Re: Compilation kernel efixo

goundoulf a écrit:

sinon d'après le pastebin, tu n'as pas les devices de créés on dirait, du coup ça ne peut pas marcher (cf ton autre message)

OK, j'imagine de toute façon que recompiler à partir des sources ne me donnera pas un firmware tel que celui tournant sur la Neufbox. Compiler les sources donnera peut-être le même noyau (?) mais le rootfs semble bien différent. Est-ce que je me trompe?

Par contre, mon autre message (fais-tu référence à http://www.neufbox4.org/forum/viewtopic … 09&p=2 ?) parle bien d'un firmware créé via unsquash et mksquashfs et donc je ne l'ai pas recompilé à partir de zéro.

Hors ligne

 

#20 22/01/2008 10:29:56

goundoulf
Administrateur
Date d'inscription: 21/08/2007
Messages: 4607
Site web

Re: Compilation kernel efixo

les sources fournies ne permettent pas de recompiler une image à l'identique

en fait Broadcom a du fournir un moyen de créer une consumer release à ses clients, leur permettant de mettre à dispositions les sources concernées par la GPL

le souci, c'est que dans l'archive créée (d'après les différentes archives de routeurs basés sur Broadcom que j'ai récupéré), il y a juste les binaires Broadcom et les logiciels libres, et non pas tout ce qui permet de recompiler à l'identique

Hors ligne

 

#21 22/01/2008 10:39:39

psolyca
Dictateur orthographique
Lieu: Cinq-Mars-la-Pile
Date d'inscription: 30/08/2007
Messages: 1616
Site web

Re: Compilation kernel efixo

Non exactement, je suis en train déjà de me prendre la tête parce qu'un noyau créé par le consumer ne boot pas, il décompresse et après nada.

J'en ai touché 2 mots à florian sur IRC.
SGDA si tu pouvais nous y rejoindre ce soir pour en discuter puisqu'apparemment tu as réussit à booter dessus.

Je suis en train de modifier le .config pour me rapprocher du noyau Efixo mais j'ai encore des erreurs, notamment sur br2684.c alors qu'il compile sur le .config du consumer.

Donc pour le moment mon principal problème est de faire booter le noyau, les erreurs après ça viendrat assez vite je pense.

Erf oui, au passage, je compile avec le consumer et non le buildroot d'Efixo, faut que  je vois si c'est possible.


Reprend peu à peu le développement NB4
Me faut remettre la NB6 en fonction par JTAG si possible
Le Dockstar est en pause, soudures à faire.
C'quoi ça, ç'pas pour tout le monde tongue - Par contre, ça oui mais il n'y a plus grand chose

Hors ligne

 

#22 22/01/2008 14:13:33

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

Entendu RdV ce soir.../ma soirée est libre


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#23 24/01/2008 00:05:42

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

Je confirme que le firmware obtenu en faisant
gmake =96358GWV avec la distribution
bcm963xx_3.12L.01_consumer.tar.gz

boote sans problème  (user admin password admin pour telnet et http)

il y a un souci d'in itialisation de la VOIP (SIP) avec un message en continu sur la console
slicConfigure() reading 3 from slic 0 devId 2
je ne puis dire si c'est par absence de paramètres ou incompatibilité hard

pas connecté  sur l'adsl car plutôt en recher d'utilisation d'un compact flash en pcmcia
[size=1]adslphy.bin dernier cri [/size]


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#24 24/01/2008 09:57:26

e-t172
Moddeur aficionados
Lieu: Pau, 64, France
Date d'inscription: 20/01/2008
Messages: 382
Site web

Re: Compilation kernel efixo

SGDA a écrit:

Je confirme que le firmware obtenu en faisant
gmake =96358GWV avec la distribution
bcm963xx_3.12L.01_consumer.tar.gz

boote sans problème  (user admin password admin pour telnet et http)

Ca compile un kernel aussi ? Est-ce qu'on peut prendre le kernel ainsi compilé et booter le firmware officiel Neuf avec ?

Hors ligne

 

#25 24/01/2008 10:28:43

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8464

Re: Compilation kernel efixo

Non... il faut au moins adjoindre le patch mtd +d'autres options ..ce qui je tenterai ce soir...sans grand espoir


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

Pied de page des forums