Forum Linux.noyau problème compilation noyau

Posté par  .
Étiquettes : aucune
0
16
juil.
2009
Voilà je tente de compiler pour la première dois mon noyau.
mais que je fais make menuconfig. NIKEL.

Puis make, et là.....
[moi@localhost linux]$ make
scripts/kconfig/conf -s arch/x86/Kconfig
#
# configuration written to .config
#
CHK include/linux/version.h
CHK include/linux/utsrelease.h
UPD include/linux/utsrelease.h
CC arch/x86/kernel/asm-offsets.s
GEN include/asm-x86/asm-offsets.h
CALL scripts/checksyscalls.sh
make[1]: *** Pas de règle pour fabriquer la cible « init/main.o », nécessaire pour « init/built-in.o ». Arrêt.
make: *** [init] Erreur 2
[moi@localhost linux]$


J'ai chercher un peu mais je trouve vraiment pas pourquoi ca bloque.

Merci d'avance
  • # ..

    Posté par  . Évalué à 2.

    make V=1
    • [^] # Re: ..

      Posté par  . Évalué à 1.

      je te remercie mais c'est idem... P.S.:ca fais quoi cette commande.
      [moi@localhost linux]$ make V=1
      make -f /home/moi/src/linux/Makefile silentoldconfig
      make -f scripts/Makefile.build obj=scripts/basic
      mkdir -p include/linux include/config
      make -f scripts/Makefile.build obj=scripts/kconfig silentoldconfig
      scripts/kconfig/conf -s arch/x86/Kconfig
      rm -f include/config/kernel.release
      echo 2.6.24.7-PERSO586-2mnbperso > include/config/kernel.release
      set -e; echo '  CHK     include/linux/version.h'; mkdir -p include/linux/;      (echo \#define LINUX_VERSION_CODE 132632; echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) < /home/moi/src/linux/Makefile > include/linux/version.h.tmp; if [ -r include/linux/version.h ] && cmp -s include/linux/version.h include/linux/version.h.tmp; then rm -f include/linux/version.h.tmp; else echo '  UPD     include/linux/version.h'; mv -f include/linux/version.h.tmp include/linux/version.h; fi
        CHK     include/linux/version.h
      set -e; echo '  CHK     include/linux/utsrelease.h'; mkdir -p include/linux/;   if [ `echo -n "2.6.24.7-PERSO586-2mnbperso" | wc -c ` -gt 64 ]; then echo '"2.6.24.7-PERSO586-2mnbperso" exceeds 64 characters' >&2; exit 1; fi; (echo \#define UTS_RELEASE \"2.6.24.7-PERSO586-2mnbperso\";) < include/config/kernel.release > include/linux/utsrelease.h.tmp; if [ -r include/linux/utsrelease.h ] && cmp -s include/linux/utsrelease.h include/linux/utsrelease.h.tmp; then rm -f include/linux/utsrelease.h.tmp; else echo '  UPD     include/linux/utsrelease.h'; mv -f include/linux/utsrelease.h.tmp include/linux/utsrelease.h; fi
        CHK     include/linux/utsrelease.h
      set -e; asmlink=`readlink include/asm | cut -d '-' -f 2`;   \
              if [ -L include/asm ]; then                                     \
                      if [ "$asmlink" != "x86" ]; then                \
                              echo "ERROR: the symlink include/asm points to asm-$asmlink but asm-x86 was expected"; \
                              echo "       set ARCH or save .config and run 'make mrproper' to fix it";             \
                              exit 1;                                         \
                      fi;                                                     \
              else                                                            \
                      echo '  SYMLINK include/asm -> include/asm-x86';          \
                      if [ ! -d include ]; then                               \
                              mkdir -p include;                               \
                      fi;                                                     \
                      ln -fsn asm-x86 include/asm;                              \
              fi
      mkdir -p .tmp_versions ; rm -f .tmp_versions/*
      make -f scripts/Makefile.build obj=scripts/basic
      make -f scripts/Makefile.build obj=.
      mkdir -p arch/x86/kernel/
      make -f scripts/Makefile.build obj=. missing-syscalls
        /bin/sh scripts/checksyscalls.sh gcc -m32 -Wp,-MD,./.missing-syscalls.d  -nostdinc -isystem /usr/lib/gcc/i586-manbo-linux-gnu/4.2.3/include -D__KERNEL__ -Iinclude  -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -O2 -pipe -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2  -march=i586 -ffreestanding -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -Iinclude/asm-x86/mach-default -fno-omit-frame-pointer -fno-optimize-sibling-calls  -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign     -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(missing_syscalls)"  -D"KBUILD_MODNAME=KBUILD_STR(missing_syscalls)"
      make -f scripts/Makefile.build obj=scripts
      make -f scripts/Makefile.build obj=scripts/mod
      make -f scripts/Makefile.build obj=init
      make[1]: *** Pas de règle pour fabriquer la cible « init/main.o », nécessaire pour « init/built-in.o ». Arrêt.
      make: *** [init] Erreur 2
      
      • [^] # Re: ..

        Posté par  . Évalué à 0.

        Désolé pour l'affichage.!
        • [^] # Re: ..

          Posté par  . Évalué à 0.

          pkoi ton src/linux est dans ton /home/user ?

          par defaut il devrait etre dans /usr

          afin que le make ou les differents outils trouvent leur petits

          enfin il me semble
          • [^] # Re: ..

            Posté par  . Évalué à 4.

            Bah je suis dans mon home, car vu que c'est ma première compil je suit un tuto: [http://wiki.mandriva.com/fr/Compiler_son_noyau] Qui conseil de pas travailler dans /usr/src/
            Un extrait d'un message de Linux Torwald :
            
            Je suggère aux personnes qui compilent un nouveau noyau de :
            
            - ne pas le faire dans /usr/src. Quelque soit le noyau provenant de votre
            distribution (probablement les fichiers d'entêtes uniquement), 
            mais en tout cas n'y touchez pas.
            
            - compiler le noyau dans leur propre répertoire personnel. Il est inutile 
            d'être root pour compiler le noyau. Vous avez besoin d'être root
            pour installer le noyau, mais c'est différent.
            Après j'ai peut être tord.
            • [^] # Re: ..

              Posté par  (site web personnel) . Évalué à 3.

              Et je suis d'accord avec Linus, il n'est nul besoin d'avoir les sources dans /usr/src, ni d'avoir les droits root (nécessaire uniquement pour l'installation du kernel et modules)
            • [^] # Re: ..

              Posté par  (site web personnel) . Évalué à 1.

              Bon j'ai oublié que sinon pour ton souci je ne sais d'ou il vient, tu obtiens le même résultat avec le téléchargement des sources depuis le site officiel (www.kernel.org) ?

              Sinon bien que ne connaissant pas cette option make V=1 active le mode verbeux : affiche les commandes exécutés par make. 1 doit correspondre au niveau le plus faible.
            • [^] # Re: ..

              Posté par  (site web personnel) . Évalué à 2.

              Tu es sur que tu as bien pris les sources du noyau ?
              • [^] # Re: ..

                Posté par  . Évalué à 1.

                bah euh oui... enfin je crois en tout les cas j'ai suivi le tuto. j'ai fais:
                 cp -r /usr/src/linux-2.6.24.7-desktop586-2mnb/ ~/src/linux
                Ce qui devrais copier mes sources.? (nan)
                • [^] # Re: ..

                  Posté par  (site web personnel) . Évalué à 5.

                  Non, /usr/src/linux-2.6.24.7-desktop586-2mnb/ ca vient d'un package -devel qui contient juste ce qu'il faut pour builder des modules externes.
  • # piste

    Posté par  . Évalué à 2.

    tout d'abord faire un noyau à la sauce de ta distrib :
    http://www.howtoforge.com/howtos/linux/kernel

    (pour debian voir http://www.andesi.org/noyau:compilation-d-un-noyau-a-la-sauc(...)

    ensuite récupérer la configuration d'un noyau fonctionnel (sous Debian /boot/config-XXXX) et le copier comme configuration par défaut[1], exemple (je suppose que l'on est dans le dossier contenant les sources) :
    $ cp /boot/config-2.6.26-1-686 .config

    [1] je me demande si de nos jours cela n'est pas fait automatiquement par le menuconfig (ou xconfig, etc)

    et sauf connerie de ta part, cela compilera un noyau.
    • [^] # Re: piste

      Posté par  . Évalué à 2.

      je confirme cette methode
      qui fonctionne avec ubuntu

      - recuperer les sources
      - decompresser les sources
      - copier le /boot/config-xxx du kernel courant dans le dossier contenant les sources
      - faire make oldconfig pour repondre valider ou non les nouvelles fonctionnalités

      puis faire les classiques :
      - make
      - make modules
      puis en sudo
      - la copy du noyau et system.map
      - le make modules_install (il me semble, ca fait longtemp que je n'ai pas fait de kernel perso)
      • [^] # Re: piste

        Posté par  . Évalué à 2.

        Je te remercie, je redemarre tout à 0 je vous tiens au courant. Merci pour toute vos infos.

Suivre le flux des commentaires

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