OVH Cloud OVH Cloud

Compilation noyau

9 réponses
Avatar
Rémi
Salut,

J'ai fait une mise à jour avec un noyau précompilé 2.6.8.1,
et depuis j'ai des soucis de gravure. Il semble que
le 2.6.9 corrige ce problème, mais cette version n'existe pas
encore en version précompilé.

Questions :

- Quand je fais make menuconfig, à part sélectionner
le type de processeur, quels sont les options qu'ils faut
absolument cocher pour obtenir une version équivalente à ce que
l'on aurait avec une version précompilé standard ?

- J'ai lu dans la doc qu'il faut un compilateur 2.95.3,
mais j'ai une version 3.4.1, ai je des risques que cela
ne fonctionne pas ?,

- Je ne tiens pas vraiment à revenir à un vieux compilateur, peux on faire
cohabiter le 3.4.1 avec le 2.95.3 ?. Comment résolvez vous
ce problème de compilateur ?.

Merci d'avance.

Rémi

9 réponses

Avatar
Rakotomandimby Mihamina
On Thu, 04 Nov 2004 13:52:15 +0100, Rémi wrote:

Salut,


Salut,

J'ai fait une mise à jour avec un noyau précompilé 2.6.8.1,
et depuis j'ai des soucis de gravure. Il semble que
le 2.6.9 corrige ce problème, mais cette version n'existe pas
encore en version précompilé.



- Quand je fais make menuconfig, à part sélectionner
le type de processeur, quels sont les options qu'ils faut
absolument cocher pour obtenir une version équivalente à ce que
l'on aurait avec une version précompilé standard ?


Essaie de récuperer le fichier de conf du 2.6.8.1.
Meme en package kernel-sources 2.6.9 il n'existe pas ?

- J'ai lu dans la doc qu'il faut un compilateur 2.95.3,
mais j'ai une version 3.4.1, ai je des risques que cela
ne fonctionne pas ?,


Tu peux nous montrer cette doc ?

- Je ne tiens pas vraiment à revenir à un vieux compilateur, peux on faire
cohabiter le 3.4.1 avec le 2.95.3 ?


Oui, mais je doute que ce soit obligé d'avoir un 2.95.
Quelle est ta distribution?
--
ASPO Infogérance - http://aspo.rktmb.org/activites/infogerance
Unofficial FAQ fcolc - http://faq.fcolc.eu.org/
Linux User Group sur Orléans et alentours.
Tél: + 33 2 38 76 43 65 (France)

Avatar
Rémi
Rakotomandimby Mihamina wrote:

On Thu, 04 Nov 2004 13:52:15 +0100, Rémi wrote:

Salut,


Salut,

J'ai fait une mise à jour avec un noyau précompilé 2.6.8.1,
et depuis j'ai des soucis de gravure. Il semble que
le 2.6.9 corrige ce problème, mais cette version n'existe pas
encore en version précompilé.



- Quand je fais make menuconfig, à part sélectionner
le type de processeur, quels sont les options qu'ils faut
absolument cocher pour obtenir une version équivalente à ce que
l'on aurait avec une version précompilé standard ?


Essaie de récuperer le fichier de conf du 2.6.8.1.
Meme en package kernel-sources 2.6.9 il n'existe pas ?

- J'ai lu dans la doc qu'il faut un compilateur 2.95.3,
mais j'ai une version 3.4.1, ai je des risques que cela
ne fonctionne pas ?,


Tu peux nous montrer cette doc ?


C'est marqué dans le README contenu dans les zip des sources du kernel.
Du reste j'ai des erreurs de compilation suivante :

Erreur de compilation :
[portableremi:/home/remi/linux-2.6.9]#make
CHK include/linux/version.h
make[1]: « arch/i386/kernel/asm-offsets.s » est à jour.
CHK include/asm-i386/asm_offsets.h
CHK include/linux/compile.h
CC [M] drivers/scsi/qla2xxx/qla_os.o
drivers/scsi/qla2xxx/qla_os.c: In function `qla2x00_queuecommand':
drivers/scsi/qla2xxx/qla_os.c:315: sorry, unimplemented: inlining failed in
call to 'qla2x00_callback': function not considered for inlining
drivers/scsi/qla2xxx/qla_os.c:269: sorry, unimplemented: called from here
drivers/scsi/qla2xxx/qla_os.c:315: sorry, unimplemented: inlining failed in
call to 'qla2x00_callback': function not considered for inlining
drivers/scsi/qla2xxx/qla_os.c:269: sorry, unimplemented: called from here
make[3]: *** [drivers/scsi/qla2xxx/qla_os.o] Erreur 1
make[2]: *** [drivers/scsi/qla2xxx] Erreur 2
make[1]: *** [drivers/scsi] Erreur 2
make: *** [drivers] Erreur 2

Est ce dû au compilateur ? ...


- Je ne tiens pas vraiment à revenir à un vieux compilateur, peux on
faire cohabiter le 3.4.1 avec le 2.95.3 ?


Oui, mais je doute que ce soit obligé d'avoir un 2.95.
Quelle est ta distribution?


C'est une madrake 10 communauté.

Merci


Avatar
Basile Starynkevitch [news]
On 2004-11-04, Rémi wrote:
Rakotomandimby Mihamina wrote:

On Thu, 04 Nov 2004 13:52:15 +0100, Rémi wrote:

Salut,


Salut,

J'ai fait une mise à jour avec un noyau précompilé 2.6.8.1,
et depuis j'ai des soucis de gravure. Il semble que
le 2.6.9 corrige ce problème, mais cette version n'existe pas
encore en version précompilé.



- Quand je fais make menuconfig, à part sélectionner
le type de processeur, quels sont les options qu'ils faut
absolument cocher pour obtenir une version équivalente à ce que
l'on aurait avec une version précompilé standard ?


Essaie de récuperer le fichier de conf du 2.6.8.1.
Meme en package kernel-sources 2.6.9 il n'existe pas ?

- J'ai lu dans la doc qu'il faut un compilateur 2.95.3,
mais j'ai une version 3.4.1, ai je des risques que cela
ne fonctionne pas ?,


Tu peux nous montrer cette doc ?


C'est marqué dans le README contenu dans les zip des sources du kernel.


Pour ma part, j'ai compilé moi-même mon noyau 2.6.9 sous Debian/Sid
avec gcc-3.3.5, et le noyau fonctionne bien. Voici mon /proc/version

Linux version 2.6.9ours () (gcc version 3.3.5
(Debian 1:3.3.5-1)) #2 Tue Oct 19 18:42:36 CEST 2004

Ca fait longtemps que je compile mes noyaux avec un gcc-3.x et ca fait
longtemps que je n'ai pas de problème. Il est vrai que j'utilise
toujours un noyau récent (dès que www.kernel.org en annonce un, je le
compile génèralement dans les 2 semaines qui viennent) compilé par
le compilateur usuel (donc récent) de Debian/Sid

AMHA, la compilation d'un noyau 2.6.x par un gcc-2.95.x est une
légende urbaine (mais ça a du être vrai avant, avec les noyaux 2.2 ou
peut-être 2.4)

On peut aussi compiler un noyau 2.4 avec tinycc 0.9.21 - voir
www.tinycc.org et http://fabrice.bellard.free.fr/tcc/tccboot.html

Cordialement

--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net
aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net
8, rue de la Faïencerie, 92340 Bourg La Reine, France



Avatar
Rakotomandimby Mihamina
On Thu, 04 Nov 2004 18:02:55 +0000, Basile Starynkevitch [news] wrote:
AMHA, la compilation d'un noyau 2.6.x par un gcc-2.95.x est une
légende urbaine


Je pense aussi.
--
ASPO Infogérance - http://aspo.rktmb.org/activites/infogerance
Unofficial FAQ fcolc - http://faq.fcolc.eu.org/
Linux User Group sur Orléans et alentours.
Tél: + 33 2 38 76 43 65 (France)

Avatar
Rakotomandimby Mihamina
http://lkml.org/lkml/2004/9/19/114

--
ASPO Infogérance - http://aspo.rktmb.org/activites/infogerance
Unofficial FAQ fcolc - http://faq.fcolc.eu.org/
Linux User Group sur Orléans et alentours.
Tél: + 33 2 38 76 43 65 (France)
Avatar
Basile Starynkevitch [news]
J'avais écrit que la compilation d'un noyau 2.6.x par un gcc-2.95.y
est une légende urbaine,

On 2004-11-04, Rakotomandimby Mihamina wrote:
http://lkml.org/lkml/2004/9/19/114


Certes, mais il s'agit de compiler par un gcc-3.4.1, qui est un peu
bogué (il y a d'autres logiciels qui ne compilent pas avec gcc 3.4.1
mais qui compilent avec gcc-3.4.2) et j'avais suggéré de compiler
linux-2.6.x* avec gcc-3.3.5 (le gcc habituel sur ma Debian/Sid)

Je ne crois pas qu'il soit nécessaire de compiler le noyau 2.6 avec un
vieux gcc-2.95.x mais c'est vrai que le README du noyau 2.6.9 précise
- Make sure you have gcc 2.95.3 available.

Mais avec google on trouve http://kerneltrap.org/node/view/4026 qui
montre que gcc-2.6.9 est compilable avec gcc-3.4.2

C'est vrai que gcc-3.4.1 est à éviter (et pas seulement pour les
noyaux; pour la petite histoire, offsetof n'y fonctionne pas avec C++,
et c'est un bogue qui est corrigé en gcc 3.4.2)

Donc formellement j'ai un peu tort (le README mentionne bian 2.95.3)
mais pratiquement on peut compiler linux 2.6.9 avec un gcc-3.3 ou
3.4. D'ailleurs, quand il y a un problème on le comprend tout de
suite.

Cordialement
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net
aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net
8, rue de la Faïencerie, 92340 Bourg La Reine, France

Avatar
no_spam
On Thu, 04 Nov 2004 19:26:06 +0000, Basile Starynkevitch [news] wrote:

[...]
Certes, mais il s'agit de compiler par un gcc-3.4.1, qui est un peu
bogué (il y a d'autres logiciels qui ne compilent pas avec gcc 3.4.1
mais qui compilent avec gcc-3.4.2) et j'avais suggéré de compiler
linux-2.6.x* avec gcc-3.3.5 (le gcc habituel sur ma Debian/Sid)
[...]

C'est vrai que gcc-3.4.1 est à éviter (et pas seulement pour les
noyaux; pour la petite histoire, offsetof n'y fonctionne pas avec C++,
et c'est un bogue qui est corrigé en gcc 3.4.2)


Il y a encore des bugs majeurs dans le 3.4.2, malheureusement.
J'ai deux exemples précis (et graves):
- il ne respecte pas (ou pas toutes) les directives d'attributs de section
ce qui fait que certains programmes compilent parfaitement mais crashent
ou se comportent de façon incohérentes.
- il gère mal les dépendances entre variables lors de l'optimisation.
J'ai du code (propriétaire, je ne peux pas le montrer) qui est du genre:
ma_fonction ()
{
int i;

i = 0;
.... le reste du code ...
}
Tous les gcc 3.4 me génèrent une warning "i might be used uninitialized
in function ma_fonction" ce qui veut dire qu'en optimisant il a déplacé
du code qui utilise i avant son initialisation, ce qui est un gros bug !
Les premiers gcc 3 avaient déjà des bugs de ce genre.

Il vaut mieux donc rester au 3.3 pour l'instant.

D'ailleurs, quand il y a un problème on le comprend tout de suite.


Pas forcément. J'ai des exemples d'une instruction mal générée dans le
kernel qui ne plantaient que dans un module précis et un cas précis...
Les bugs de compilateur peuvent être très vicieux et incroyablement
chiants à découvrir.

Avatar
Nicolas Michel
Rémi writes:

Salut,

J'ai fait une mise à jour avec un noyau précompilé 2.6.8.1,
et depuis j'ai des soucis de gravure. Il semble que
le 2.6.9 corrige ce problème, mais cette version n'existe pas
encore en version précompilé.

Questions :

- Quand je fais make menuconfig, à part sélectionner
le type de processeur, quels sont les options qu'ils faut
absolument cocher pour obtenir une version équivalente à ce que
l'on aurait avec une version précompilé standard ?


Récupères le .config de ta 2.6.8.1, tu le met dans tes sources
et tu fais un "make oldconfig", ça te garantit que ta config vas
rester "comme avant".

- J'ai lu dans la doc qu'il faut un compilateur 2.95.3,
mais j'ai une version 3.4.1, ai je des risques que cela
ne fonctionne pas ?,


Le compilateur 3.4.1 vas marcher, mais M. Linus force la compatibilité
ascendente en exigeant que le compilo officiel reste le 2.95.3.

--
Nicolas, qui sort d'un cours sur la compilation de noyaux et qui a bien
retennu sa leçon :)

Avatar
Qing Liu
Rémi writes:

Salut,


Bonsoir,

J'ai fait une mise à jour avec un noyau précompilé 2.6.8.1,


Compilé par qui ?

et depuis j'ai des soucis de gravure. Il semble que
le 2.6.9 corrige ce problème, mais cette version n'existe pas
encore en version précompilé.

Questions :

- Quand je fais make menuconfig, à part sélectionner
le type de processeur, quels sont les options qu'ils faut
absolument cocher pour obtenir une version équivalente à ce que
l'on aurait avec une version précompilé standard ?


Il n'y a pas d'options standard pour un noyau. Ça dépend
beaucoup de ce dont tu as besoin et du matériel dont tu disposes.
Les noyaux des distributions sont en général compilés avec le
maximum de support en modules. Tu peux chercher le fichier
de configuration dans sources du noyau de la distribution
ou /boot. Si ton noyau 2.6.8.1 a été compilé avec les options
qui vont bien, il existe un fichier /proc/config.gz qu'il suffit
de décompresser pour obtenir le fichier .config utilisé pour
la compilation. Enfin, dans linux-2.6.8.1/scripts/, il y a
un petit script qui permet d'extraire ces même informations
sur une image du noyau (qui se trouve dans /boot par exemple).
Ce script s'appelle extract-ikconfig. J'ai testé avec le
noyau 2.6.9, il faut faire:

$ cd /usr/src/linux-2.6.9/scripts/
$ gcc -O2 binoffset.c -o binoffset
$ cd ../
$ scripts/extract-ikconfig /boot/vmlinuz-2.6.9

(oui il est mal foutu ce script). Pour que cela marche, il faut
que le noyau soit compilé avec l'option (make menuconfig, general setup)
[*] Kernel .config support
[*] Enable access to .config through /proc/config.gz

- J'ai lu dans la doc qu'il faut un compilateur 2.95.3,
mais j'ai une version 3.4.1, ai je des risques que cela
ne fonctionne pas ?,

- Je ne tiens pas vraiment à revenir à un vieux compilateur, peux on faire
cohabiter le 3.4.1 avec le 2.95.3 ?. Comment résolvez vous
ce problème de compilateur ?.


C'est bien sûr faisable (j'ai vu plusieurs distributions qui
viennent avec deux compilateurs), mais c'est un peu chi*t à faire
soi-même. A éviter si on peut faire autrement.

--
Liu