OVH Cloud OVH Cloud

[2.6.5] invalid module format

3 réponses
Avatar
David Coulm
Bonjour,

J'ai installé une debian en suivant le (génial :-)) guide d'Alexis De
Lattre¹ à la lettre, en partant de woody, avec installation du noyau²
2.6.5, reboot, puis passage en Sid. Jusque là, tout s'est bien passé,
et arrivé à la page 120 du guide, j'écoutais (enfin :-)) un fichier son
sans problème. Tout ça pour dire, que j'ai vraiment suivi toutes les
étapes du guide

Le problème est arrivé lorsque j'ai voulu installer le driver nvidia
propriétaire (x86-33.6). Malgré l'utilisation de la commande "export
IGNORE_CC_MISMATCH=yes" (apparemment parce que le noyau et le driver
sont compilés avec une version de gcc différente, due au passage en
sid), j'obtiens une erreur "invalid module format" lors de l'insertion
du module (testé à la main).

Pour pallier à cela, je recompile le noyau avec le nouveau gcc en
re-suivant la doc² d'Alexis, je reboote et plus aucun modules ne
veulent se charger, bien que le système se lance.
Les logs sont remplis de messages "disagrees about version of symbol
struct_module". Bien évidemment, sans module, plus d'accès au réseau.

Le message d'erreur me suggère que les modules n'ont pas l'air d'être
dans le bon format, mais ayant recompilé le noyau et les modules, je ne
vois pas pourquoi ca cloche.

Comment pourrai-je faire pour remettre le système à l'endroit ?

¹http://people.via.ecp.fr/~alexis/formation-linux/
²http://people.via.ecp.fr/~alexis/formation-linux/compil-noyau.htm

--
Cyberdivad

3 réponses

Avatar
Schott
On Wed, 12 May 2004 19:51:17 +0200, David Coulm wrote:

Les logs sont remplis de messages "disagrees about version of symbol
struct_module". Bien évidemment, sans module, plus d'accès au réseau.

Le message d'erreur me suggère que les modules n'ont pas l'air d'être
dans le bon format, mais ayant recompilé le noyau et les modules, je ne
vois pas pourquoi ca cloche.

Comment pourrai-je faire pour remettre le système à l'endroit ?


A preimère vue, les modules que tu tentes de charger ne sont pas le
modules compilés avec les sources du noyau 2.6.5, d'où ces messages.

Les modules étant des morceaux de noyau, il est impératif que ceux-ci
proviennent des mêmes sources, et dans le cas de sources externes (ce qui
est le cas du module nvidia par exemple) que les headers du noyau lors de
la compilation soient bien celui du 2.6.5 (en clair,
/usr/src/linux/include doit pointer vers les include de ce noyau).

As-tu fait un depmod -a? Peux-tu citer un message d'erreur en entier pour
aider?

Pour info, le IGNORE_CC_MISMATCH permet de bypasser la vérification de
version entre le compilateur utilisé pour compiler le noyau et celui
utilisé pour compiler le driver nvidia, dans ton cas, puisque tu as
compilé le noyau toi-même, tu ne devrais pas avoir à utiliser ce
contournement.

Tshaw
Schott
FLLC canal hystérique

Avatar
David Coulm
Le Mercredi 12 Mai 2004 21:14, Schott (), a
écrit dans le message
:

Les logs sont remplis de messages "disagrees about version of symbol
struct_module". Bien évidemment, sans module, plus d'accès au réseau.

Le message d'erreur me suggère que les modules n'ont pas l'air d'être
dans le bon format, mais ayant recompilé le noyau et les modules, je
ne vois pas pourquoi ca cloche.

Comment pourrai-je faire pour remettre le système à l'endroit ?


A preimère vue, les modules que tu tentes de charger ne sont pas le
modules compilés avec les sources du noyau 2.6.5, d'où ces messages.


Et bien, j'ai compilé le noyau et les modules à la main, il ne devrait
donc pas y avoir de problème de ce côté là, non ?

Les modules étant des morceaux de noyau, il est impératif que ceux-ci
proviennent des mêmes sources, et dans le cas de sources externes (ce
qui est le cas du module nvidia par exemple) que les headers du noyau
lors de la compilation soient bien celui du 2.6.5 (en clair,
/usr/src/linux/include doit pointer vers les include de ce noyau).


# ls -al /usr/src
lrwxrwxrwx 1 david src linux -> linux-2.6.5/

Linux 2.6.5 étant le répertoire du noyau que j'ai téléchargé et compilé.
La méthode que j'ai utilisée est celle dans le guide d'Alexis, à la
virgule près :-)

As-tu fait un depmod -a?


Je crois que c'est fait au boot, mais je l'ai fait à la main pour voir :
idem

Peux-tu citer un message d'erreur en entier
pour aider?


Si je tente d'insérer le module d ma carte réseau :
# modprobe 3c59x
3c59x: disagrees about version of symbol struct_module
FATAL: Error inserting 3c59x
(/lib/modules/2.6.5/kernel/drivers/net/3c59x.ko): Invalid module format

extraits de dmesg :
[..]
EXT3-fr: mounted filesystem with ordered data mode
nls_base: disagrees aboutversion of symbol struct_module
fat: disagrees about version of symbol struct_module
[et ainsi de suite pour un paquet de modules jusqu'à fin de dmesg]

Rien de notable avant, en tout cas pas de ERR ou error ou warning, rien
que le blabla habitudl du matériel détecté&configuré.

Pour info, le IGNORE_CC_MISMATCH permet de bypasser la vérification de
version entre le compilateur utilisé pour compiler le noyau et celui
utilisé pour compiler le driver nvidia, dans ton cas, puisque tu as
compilé le noyau toi-même, tu ne devrais pas avoir à utiliser ce
contournement.


Dans le guide d'Alexis, on compile le noyau 2.6.5 en étant en woody,
puis se fait le passage en Sid (et changement de gcc).

Le problème est apparu en fait avec le passage en Sid (tout fonctionnait
bien après la compil du noyau+reboot et avant ce passage). Je pense que
la compilation du pilote nvidia a révélé ce problème, que j'ai accentué
en recompilant le noyau encore une fois après le passage en Sid en
pensant bien faire.

Si on suit la doc d'Alexis, l'ordre des opérations est :
- compilation noyau
- reboot
- tests son, clé usb, etc. (tout ok)
- passage en Sid
- install X puis Nvidia : mise au jour du problème
- recompil noyau (pensant régler le problème qui serait du à la
différence de version de gcc) : ok
- reboot : le problème atteint tous les modules

Après furetage sur google, j'ai vérifié ma version de module-init-tools
et de modutils : apt-get me dit que j'ai la version la plus récente.

L'ancien noyau fonctionne encore (sauf le réseau ?!), je peux
éventuellement installer des paquets si besoin en passant par une clé
usb.

--
Cyberdivad


Avatar
David Coulm
Le Mercredi 12 Mai 2004 21:54, David Coulm (), a
écrit dans le message <40a282a1$0$31948$ :

Les logs sont remplis de messages "disagrees about version of symbol
struct_module". Bien évidemment, sans module, plus d'accès au
réseau.

Le message d'erreur me suggère que les modules n'ont pas l'air
d'être dans le bon format, mais ayant recompilé le noyau et les
modules, je ne vois pas pourquoi ca cloche.

Comment pourrai-je faire pour remettre le système à l'endroit ?



Dans le guide d'Alexis, on compile le noyau 2.6.5 en étant en woody,
puis se fait le passage en Sid (et changement de gcc).

Le problème est apparu en fait avec le passage en Sid (tout
fonctionnait bien après la compil du noyau+reboot et avant ce
passage). Je pense que la compilation du pilote nvidia a révélé ce
problème, que j'ai accentué en recompilant le noyau encore une fois
après le passage en Sid en pensant bien faire.


Pour info, j'ai résolu le problème en récupérant le paquet
kernel-image-2.6.5 et ses dépendances (initrd-tools, etc.), et tout
fonctionne correctements (tous mes noyaux). Il devait donc me manquer
quelquechose pour que le noyau 2.6.5 soit bien géré.

--
Cyberdivad