pb de compilation de noyau linux

pb de compilation de noyau linux - Installation - Linux et OS Alternatifs

Marsh Posté le 07-09-2008 à 22:18:49    

Bonjour,
Pour être dans les mêmes conditions que celle d'un livre sur les drivers sous linux, je souhaite compiler
le noyau 2.6.10.
J'ai téléchargé les sources depuis http://www.kernel.org/ , dézippé le fichier *.bz2 dans /usr/src
pour obtenir tous les fichiers dans /usr/src/linux-2.6.10/ .
En me plaçant dans ce répertoire ( /usr/src/linux-2.6.10/ ) et en écrivant en tant que root la commande :
make config, voici le résultat :
 
 
root@lachez-moi:/usr/src/linux-2.6.10# make config
HOSTCC scripts/basic/fixdep
Dans le fichier inclus à partir de /usr/include/sys/socket.h:35,
à partir de /usr/include/netinet/in.h:24,
à partir de /usr/include/arpa/inet.h:23,
à partir de scripts/basic/fixdep.c:115:
/usr/include/bits/socket.h:311:24: erreur: asm/socket.h : Aucun fichier ou répertoire de ce type
scripts/basic/fixdep.c: In function «parse_config_file":
scripts/basic/fixdep.c:245: attention : pointer targets in passing argument 1 of «use_config" differ in signedness
scripts/basic/fixdep.c: In function «parse_dep_file":
scripts/basic/fixdep.c:299: attention : pointer targets in passing argument 1 of «__builtin_strchr" differ in signedness
scripts/basic/fixdep.c:299: attention : pointer targets in assignment differ in signedness
make[1]: *** [scripts/basic/fixdep] Erreur 1
make: *** [scripts_basic] Erreur 2
 
Il manquerait donc le fichier asm/socket.h .
 
Quelqu'un aurait-il une idée ?
 
PS: après un essai avec le dernier noyau 2.6.26, j'ai le même pb ! Que pasa ??

Reply

Marsh Posté le 07-09-2008 à 22:18:49   

Reply

Marsh Posté le 09-09-2008 à 13:50:30    

quelle distrib ?
 
via ton gestionnaire de paquet, cherche un paquet contenant ce fameux fichier /usr/include/asm/socket.h et installe le ...

Reply

Marsh Posté le 09-09-2008 à 13:56:40    

j'ai ubuntu gutsy gibbon,
 En fait j'ai résolu ce pb là, pour une raison que j'ignore, il me manquait un lien /usr/include/asm vers
 /usr/src/linux/include/asm-i386 .
 
 Après avoir créé ce lien, make menuconfig marche,
 mais ensuite en lançant la commande: make, il y a des erreurs.
 
 Voici les dernières lignes qui s'affichent :
In file included from include2/asm/mpspec.h:5,
from include2/asm/smp.h:18,
from /usr/src/linux-2.6.10/include/linux/smp.h:17,
from /usr/src/linux-2.6.10/include/linux/sched.h:23,
from /usr/src/linux-2.6.10/arch/i386/kernel/process.c:17:
include2/asm/mpspec_def.h:78: attention : «packed" attribute ignored
for field of type «unsigned char[6]"
/usr/src/linux-2.6.10/arch/i386/kernel/process.c: In function
«show_regs":
/usr/src/linux-2.6.10/arch/i386/kernel/process.c:259: attention :
pointer targets in passing argument 2 of «show_trace" differ in
signedness
{standard input}: Assembler messages:
{standard input}:1393: Error: suffix or operands invalid for `mov'
{standard input}:1395: Error: suffix or operands invalid for `mov'
{standard input}:1743: Error: suffix or operands invalid for `mov'
{standard input}:1745: Error: suffix or operands invalid for `mov'
{standard input}:1855: Error: suffix or operands invalid for `mov'
{standard input}:1856: Error: suffix or operands invalid for `mov'
{standard input}:2197: Error: suffix or operands invalid for `mov'
{standard input}:2210: Error: suffix or operands invalid for `mov'
make[2]: *** [arch/i386/kernel/process.o] Erreur 1
 
 Je ne sais pas trop quoi faire .
 As tu une idée ?
 
 

Reply

Marsh Posté le 09-09-2008 à 14:13:41    

tu es sur que le 2.6.10 compile avec le gcc de gutsy ?


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 09-09-2008 à 14:22:59    

C'est une très bonne question :-)
 
 J'ai pensé à télécharger gcc-2.95.3
 et même à compiler, et là tu risques de rire mais  
 j'ai pô réussi non plus :  
 voilà les messages suite à make dans gcc-2.95.3 :
 
 cedric@lachez-moi:~/ordinateur/programmes/gcc-2.95.3$ make
make[1]: entrant dans le répertoire « /home/cedric/ordinateur/programmes/gcc-2.95.3/libiberty »
if [ x"no" = xyes ] && [ ! -d pic ]; then \
          mkdir pic; \
        else true; fi
touch stamp-picdir
CONFIG_FILES= CONFIG_HEADERS=config.h:config.in /bin/sh ./config.status
creating config.h
test x"no" != xyes || \
          gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include   argv.c -o pic/argv.o
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  argv.c
argv.c: In function «dupargv":
argv.c:122: attention : incompatible implicit declaration of built-in function «strcpy"
test x"no" != xyes || \
          gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include   choose-temp.c -o pic/choose-temp.o
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  choose-temp.c
choose-temp.c: In function «choose_temp_base":
choose-temp.c:127: attention : incompatible implicit declaration of built-in function «strlen"
choose-temp.c:130: attention : incompatible implicit declaration of built-in function «strcpy"
choose-temp.c: In function «make_temp_file":
choose-temp.c:173: attention : incompatible implicit declaration of built-in function «strlen"
choose-temp.c:183: attention : incompatible implicit declaration of built-in function «strcpy"
choose-temp.c:192: attention : incompatible implicit declaration of built-in function «strcat"
test x"no" != xyes || \
          gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include   concat.c -o pic/concat.o
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  concat.c
test x"no" != xyes || \
          gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include   cplus-dem.c -o pic/cplus-dem.o
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  cplus-dem.c
test x"no" != xyes || \
          gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include   fdmatch.c -o pic/fdmatch.o
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  fdmatch.c
test x"no" != xyes || \
          gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include   fnmatch.c -o pic/fnmatch.o
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  fnmatch.c
Dans le fichier inclus à partir de /usr/include/errno.h:36,
          à partir de fnmatch.c:46:
/usr/include/bits/errno.h:25:26: erreur: linux/errno.h : Aucun fichier ou répertoire de ce type
make[1]: *** [fnmatch.o] Erreur 1
make[1]: quittant le répertoire « /home/cedric/ordinateur/programmes/gcc-2.95.3/libiberty »
make: *** [all-libiberty] Erreur 2
 
 si tu as une idée là dessus, je suis preneur :-)
 

Reply

Marsh Posté le 09-09-2008 à 17:35:13    


 J'ai trouvé sur internet une solution au pb lié à la commande make pour le noyau.
 
Il fallait que j'utilise un patch en me plaçant dans
 le répertoire /usr/src/linux
 
 Du coup je n'ai plus de pb de compilation avec process.o .
 
Néanmoins, après une vingtaine de minutes, la compilation s'est arrêtée à cause d'erreurs venant de fichiers liés au bus isa.
 Un petit tour sur google, pour suivre ce bon conseil, virer le support pour les bus ISA dont j'ai pas besoin : chose faite, le pb est évité .
 
 Malheureusement la compilation bloque un peu plus tard sur le support I2C .
 
 Sur google, j'ai vu un message conseillant de virer  
 ce support à partir de menuconfig, mais en fait
 pour I2C je ne peux choisir qu'entre  
builtin ou Modularized ,
 avec Modularized ça bugge et pour builtin, j'imagine que c'est pire

Reply

Marsh Posté le 09-09-2008 à 18:36:04    

tu voudrais pas compiler un noyau récent plutôt genre un 2.6.24 ou plus ?


Message édité par Mjules le 09-09-2008 à 18:36:11

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 09-09-2008 à 22:29:10    

Ben j'aimerais bien compiler ce noyau là pour  
 avoir le même noyau que dans un livre sur les drivers, qui date un peu .
 Je suppose que dès qu'un livre est assez abouti, il date toujours, vu que faut bien un certain temps pour écrire un livre .
 Bon sinon à vrai dire, je peux au pire utiliser le noyau en cours et là plus une compilation en vue.
 
 Non mais sérieux, je veux réussir la compilation de ce noyau .

Reply

Marsh Posté le 09-09-2008 à 22:39:31    

le 2.6.10 date de décembre 2004 ; amha, il compilera avec un gcc 3.2 3.3 ou 3.4 mais pas avec un 4.xx tout au moins pas sans modif.
 
Mais honnêtement, si tu veux apprendre à compiler, un noyau récent se compile de la même façon et au moins tu n'auras pas de problèmes de ce type.
 
Et si tu veux développer sur linux, alors oublie tout de suite le 2.6.10, de toute façon tu devras travailler a partir des arbres de développement.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 09-09-2008 à 22:48:31    

Mon but est pas d'apprendre à compiler un noyau, mais plutôt d'apprendre à écrire des pilotes de périphériques .  
 Tu connais des tutoriaux détaillés et récents sur l'écriture de pilotes de périphériques ?
 
 Je suis pas contre de ressortir du grenier un vieux gcc , d'ailleurs c'est ce que j'ai commencé à faire avec le fichier gcc-2.95.3  
 
Si j'avais réussi à le compiler, ça me dérangerait pas de l'utiliser pour compiler les sources du noyau 2.6.10  
 
 Tu penses que c'est si compliqué que ça de compiler ce noyau ?
 
 Car je me vois bien débuter l'écriture de driver grâce à ce manuel, en utilisant le noyau du livre : 2.6.10, bon et puis un peu plus tard passer au dernier noyau en date .

Reply

Marsh Posté le 09-09-2008 à 22:48:31   

Reply

Marsh Posté le 09-09-2008 à 22:58:31    

gland resistant a écrit :

Mon but est pas d'apprendre à compiler un noyau, mais plutôt d'apprendre à écrire des pilotes de périphériques .  
 Tu connais des tutoriaux détaillés et récents sur l'écriture de pilotes de périphériques ?
 
il y a des choses chez http://kernelnewbies.org ou kernel janitor, ainsi que chez le linux driver projet, mais si ton bouquin est bien Linux Device Driver 3° édition, la base reste valable.
 
 Je suis pas contre de ressortir du grenier un vieux gcc , d'ailleurs c'est ce que j'ai commencé à faire avec le fichier gcc-2.95.3  
 
Si j'avais réussi à le compiler, ça me dérangerait pas de l'utiliser pour compiler les sources du noyau 2.6.10  
 
 Tu penses que c'est si compliqué que ça de compiler ce noyau ?
 
avec le bon compilateur, non, avec gcc4, tu vas ramer, il est beaucoup plus strict que gcc3 sur un certains nombres de choses.
 
 Car je me vois bien débuter l'écriture de driver grâce à ce manuel, en utilisant le noyau du livre : 2.6.10, bon et puis un peu plus tard passer au dernier noyau en date .


 
Pas mal de choses ont changés dans le noyau depuis le 2.6.10 ; donc les bases du bouquin doivent toujours être bonnes mais les api ont du être modifiées un paquet de fois : http://lwn.net/Articles/2.6-kernel-api/


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 09-09-2008 à 23:52:50    

Le livre en pdf , c'est linux device driver , 3ème édition .
 Je vais réessayer de compiler gcc 2.95.3 .
 J'espère ne pas écraser des fichiers de mon système actuel qui marche bien avec cette compil.

Reply

Marsh Posté le 12-09-2008 à 12:23:08    

Merci Mjules pour tes conseils sur gcc,
 J'ai téléchargé gcc-2.95.3 déjà compilé et du coup  
 la compilation du noyau 2.6.10 a abouti :-)  
 J'ai ajouté un initrd à /boot et puis le noyau boote
 enfin :-)) .
 Le hic, car il y en a toujours un ;-) , c'est que /home ne se monte pas .
 Du coup je me retrouve en tant que root sur une console, à partir de laquelle j'arrive qd même à lancer gnome par startx .
J'ai bizarrement non plus pas accès à internet .
J'ai repéré pendant le boot , que le noyau n'arrive pas à monter /home .
 En fait j'ai actuellement /home installé avec LVM
 sur ext3 et ça se passe sans pb avec le noyau 2.6.15 .
 
 Je sais pas trop quoi faire pour que /home soit monté automatiquement sur le noyau 2.6.10 .
 
 Z'avez une idée ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed