Forum Linux.noyau Compilation d'un noyau inférieur pour une autre machine

Posté par  .
Étiquettes : aucune
0
2
nov.
2005
Bonjour à tous,

je cherche à recompiler un noyau de version antérieure pour une machine cible qui n'est pas ma machine hote.

Voilà ma configuration:
- Machine hote
Linux localhost.localdomain 2.6.11-1.1369_FC4 #1 Thu Jun 2 22:55:56 EDT 2005 i686 i686 i386 GNU/Linux

- Machine cible
Kernel 2.4.31
glibc 2.3.3
processeur i586MMX

J'ai donc récupérer le kernel 2.4.31. En lisant les README j'ai vu qu'il me fallait utiliser gcc-2.95.3 (et donc binutils-2.10.1).

Je pars donc du début en regénérant binutils-2.10.1, le 'configure' (--target=i586-linux) se passe bien mais la compilation echoue sur la génération du 'gas' lors d'un include
------------------------------------------
make[3]: Entering directory `/home/herve/development/binutils-2.10.1/gas'
gcc -DHAVE_CONFIG_H -I. -I. -I. -D_GNU_SOURCE -I. -I. -I../bfd -I./config -I./../include -I./.. -I./../bfd -I./../intl -I../intl -DLOCALEDIR="\"/usr/local/binutils-2.10.1/share/locale\"" -g -O2 -W -Wall -c app.c
In file included from ./targ-cpu.h:1,
from ./config/obj-elf.h:40,
from ./obj-format.h:1,
from ./config/te-linux.h:4,
from targ-env.h:1,
from as.h:620,
from app.c:29:
./config/tc-i386.h:441: erreur: les éléments du tableau sont de type incomplet
m
------------------------------------------

La machine hote est avec:
gcc 4.0.0 20050519 (Red Hat 4.0.0-8)

Je ne sais pas s'il est possible de regénérer binutils antérieur avec une version plus récente de gcc.

Est-ce que quelqu'un peu m'aider ?
Me donner un bon séquencemment de génération à suivre ?
Des liens utiles peut-être (HOW-TO) ?

D'avance merci pour votre aide.
  • # pas grand chose de special

    Posté par  . Évalué à 1.

    en realité le seule truc important quand tu compiles ton noyau pour une autre machine c'est de ne pas se tromper dans les infos que tu mets dans la conf, comme par exemple le type pe proc ou meme le support du matos.

    Ensuite tout ira tranquillement :]

    pas besoin de recompiler gcc, binutils ni rien du tout.
    • [^] # Re: pas grand chose de special

      Posté par  . Évalué à 1.

      Ah ...

      je ne savais pas :)

      Je vais donc essayer de recompiler le kernel pour la machine cible.

      Merci du conseil.
      • [^] # Ca ne marche pas

        Posté par  . Évalué à 1.

        Salut c'est encore moi :)

        J'ai donc tenté de recompiler mon noyer 2.4.31 depuis ma Fedora 4.

        J'ai fais:

        make oldconfig (j'avais un ancien .config)
        make dep
        make

        Et dès le premier fichier comilé j'ai une erreur:

        ------------------------------------------------------------------------
        gcc -D__KERNEL__ -I/home/herve/development/linux-2.4.31/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i586 -fno-unit-at-a-time -DKBUILD_BASENAME=main -c -o init/main.o init/main.c
        In file included from /home/herve/development/linux-2.4.31/include/linux/kernel.h:15,
        from /home/herve/development/linux-2.4.31/include/linux/wait.h:13,
        from /home/herve/development/linux-2.4.31/include/linux/fs.h:12,
        from /home/herve/development/linux-2.4.31/include/linux/capability.h:17,
        from /home/herve/development/linux-2.4.31/include/linux/binfmts.h:5,
        from /home/herve/development/linux-2.4.31/include/linux/sched.h:9,
        from /home/herve/development/linux-2.4.31/include/linux/mm.h:4,
        from /home/herve/development/linux-2.4.31/include/linux/slab.h:14,
        from /home/herve/development/linux-2.4.31/include/linux/proc_fs.h:5,
        from init/main.c:15:
        /home/herve/development/linux-2.4.31/include/asm/byteorder.h:14: attention : qualificateurs de type ignorés pour le type à retourner par la fonction
        /home/herve/development/linux-2.4.31/include/asm/byteorder.h:30: attention : qualificateurs de type ignorés pour le type à retourner par la fonction
        In file included from /home/herve/development/linux-2.4.31/include/linux/byteorder/little_endian.h:11,
        from /home/herve/development/linux-2.4.31/include/asm/byteorder.h:65,
        from /home/herve/development/linux-2.4.31/include/linux/kernel.h:15,
        from /home/herve/development/linux-2.4.31/include/linux/wait.h:13,
        from /home/herve/development/linux-2.4.31/include/linux/fs.h:12,
        from /home/herve/development/linux-2.4.31/include/linux/capability.h:17,
        from /home/herve/development/linux-2.4.31/include/linux/binfmts.h:5,
        from /home/herve/development/linux-2.4.31/include/linux/sched.h:9,
        from /home/herve/development/linux-2.4.31/include/linux/mm.h:4,
        from /home/herve/development/linux-2.4.31/include/linux/slab.h:14,
        from /home/herve/development/linux-2.4.31/include/linux/proc_fs.h:5,
        from init/main.c:15:
        /home/herve/development/linux-2.4.31/include/linux/byteorder/swab.h:160: attention : qualificateurs de type ignorés pour le type à retourner par la fonction
        /home/herve/development/linux-2.4.31/include/linux/byteorder/swab.h:173: attention : qualificateurs de type ignorés pour le type à retourner par la fonction
        /home/herve/development/linux-2.4.31/include/linux/byteorder/swab.h:186: attention : qualificateurs de type ignorés pour le type à retourner par la fonction
        /home/herve/development/linux-2.4.31/include/linux/byteorder/swab.h:200: attention : qualificateurs de type ignorés pour le type à retourner par la fonction
        In file included from /home/herve/development/linux-2.4.31/include/linux/prefetch.h:13,
        from /home/herve/development/linux-2.4.31/include/linux/list.h:6,
        from /home/herve/development/linux-2.4.31/include/linux/wait.h:14,
        from /home/herve/development/linux-2.4.31/include/linux/fs.h:12,
        from /home/herve/development/linux-2.4.31/include/linux/capability.h:17,
        from /home/herve/development/linux-2.4.31/include/linux/binfmts.h:5,
        from /home/herve/development/linux-2.4.31/include/linux/sched.h:9,
        from /home/herve/development/linux-2.4.31/include/linux/mm.h:4,
        from /home/herve/development/linux-2.4.31/include/linux/slab.h:14,
        from /home/herve/development/linux-2.4.31/include/linux/proc_fs.h:5,
        from init/main.c:15:
        /home/herve/development/linux-2.4.31/include/asm/processor.h:75: erreur: les éléments du tableau sont de type incomplet
        make: *** [init/main.o] Erreur 1
        ----------------------------------------------------------------------------

        J'imagine que celà vient du fait que je n'ai pas la bonne version de glibc mais je n'en suis pas certain.

        Quelqu'un peut-il m'aider ?

        D'avance merci.
        • [^] # Re: Ca ne marche pas

          Posté par  . Évalué à 1.

          Essaye :
          make mrproper
          make menuconfig
          make dep
          make

          P.S. make oldconfig ne fonctionne pas toujours correctement.
  • # mes 2 cts

    Posté par  . Évalué à 1.

    si le readme du kernel specifie une version de gcc 2.95 c'est parce que les premieres version du 3.0 provoquant du code errone en fonction du codage de certaine partie du kernel. Par la suite personne n'as plus verifier a quel version ca marchait ou pas.
    Pour ton pb, c'est vrai que c'est possible de faire de la cross-compilation
    (voir sur google :gcc cross compilation) pour avoir des tutos.
    Mais le plus rapide/le plus simple dans ton cas puisque tu tourne sur la meme archi (ia32) c'est de partionner ton disque dur. Installe une vieille distrib embarquant le kernel 2.4 (mandrake 8 ou 9 par exemple) et recompile pour ta cible.
    Attention le 2.4 ne supporte pas le SATA !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.