pb de compilation de noyau linux - Installation - Linux et OS Alternatifs
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 ...
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 ?
Marsh Posté le 09-09-2008 à 14:13:41
tu es sur que le 2.6.10 compile avec le gcc de gutsy ?
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 :-)
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
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 ?
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 .
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.
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 .
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 . |
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/
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.
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 ?
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-moiusr/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 ??