[résolu][Linux][MODULE]Pb installation module 'maison'

Pb installation module 'maison' [résolu][Linux][MODULE] - Linux et OS Alternatifs

Marsh Posté le 19-05-2005 à 09:41:05    

Bonjour,
 
Pour un kernel 2.6 (Mandriva 10.1), j'ai écrit le module minimum suivant


/* com_driver.c  
   pour noyau 2.6  
*/
#include <linux/module.h>
#include <linux/kernel.h>
 
MODULE_DESCRIPTION("com driver k2.6" );
MODULE_AUTHOR("E.D." );
MODULE_LICENSE("BSD" );
 
int __init init_module (void)
{
   printk( KERN_ALERT "Module com init\n" );
   
   /* 0=OK other=KO */
   return 0;
}
 
void __exit cleanup_module (void)
{
   printk( KERN_ALERT "Module com exit\n" );
}


Le make file est nommé 'Makefile' (important, car 'makefile' n'est pas reconnu). Il contient une ligne :


obj-m += com.o


La ligne de commande (script 'm') est


make -C /usr/src/linux SUBDIRS=$PWD modules


le lien '/usr/src/linux' pointe sur '/usr/src/linux-2.6.8.1-24mdk'
 
Le résultat de la compilation semble correct:


[edelahaye@localhost com]$ ./m
make: Entering directory `/usr/src/linux-2.6.8.1-24mdk'
  CC [M]  /home/edelahaye/c-dev/drv/com/com.o
  Building modules, stage 2.
  MODPOST
  CC      /home/edelahaye/c-dev/drv/com/com.mod.o
  LD [M]  /home/edelahaye/c-dev/drv/com/com.ko
make: Leaving directory `/usr/src/linux-2.6.8.1-24mdk'
[edelahaye@localhost com]$


Je passe ensuite en root pour charger le module .ko


edelahaye@localhost com]$ su
Password:
[root@localhost com]# dir
com.c  com.ko  com.mod.c  com.mod.o  com.o  m  Makefile
[root@localhost com]# insmod com.ko
insmod: error inserting 'com.ko': -1 Invalid module format
[root@localhost com]# exit
exit
[edelahaye@localhost com]$


Problème.
Le fichier var/log/messages indique:


<...>
May 19 09:29:23 localhost kernel: com: version magic '2.6.8.1-24mdk 686 gcc-3.4' should be '2.6.8.1-12mdk 686 gcc-3.4'
<...>


Il y aurait une légère incompatibilité de version...
Le binaire du noyau et les fichiers sources du kernel viennent des CD Mandrake 10.1 'Official'...
 
Comment résoudre ce problème ? Recompiler le noyau ?
 
Merci de m'avoir lu jusqu'au bout.
 
Emmanuel


Message édité par Emmanuel Delahaye le 04-06-2005 à 11:11:45

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-05-2005 à 09:41:05   

Reply

Marsh Posté le 19-05-2005 à 14:02:16    

Emmanuel Delahaye a écrit :

Bonjour,
 
Pour un kernel 2.6 (Mandriva 10.1), j'ai écrit le module minimum suivant


/* com_driver.c  
   pour noyau 2.6  
*/
#include <linux/module.h>
#include <linux/kernel.h>
 
MODULE_DESCRIPTION("com driver k2.6" );
MODULE_AUTHOR("E.D." );
MODULE_LICENSE("BSD" );
 
int __init init_module (void)
{
   printk( KERN_ALERT "Module com init\n" );
   
   /* 0=OK other=KO */
   return 0;
}
 
void __exit cleanup_module (void)
{
   printk( KERN_ALERT "Module com exit\n" );
}


Le make file est nommé 'Makefile' (important, car 'makefile' n'est pas reconnu). Il contient une ligne :


obj-m += com.o


La ligne de commande (script 'm') est


make -C /usr/src/linux SUBDIRS=$PWD modules


le lien '/usr/src/linux' pointe sur '/usr/src/linux-2.6.8.1-24mdk'
 
Le résultat de la compilation semble correct:


[edelahaye@localhost com]$ ./m
make: Entering directory `/usr/src/linux-2.6.8.1-24mdk'
  CC [M]  /home/edelahaye/c-dev/drv/com/com.o
  Building modules, stage 2.
  MODPOST
  CC      /home/edelahaye/c-dev/drv/com/com.mod.o
  LD [M]  /home/edelahaye/c-dev/drv/com/com.ko
make: Leaving directory `/usr/src/linux-2.6.8.1-24mdk'
[edelahaye@localhost com]$


Je passe ensuite en root pour charger le module .ko


edelahaye@localhost com]$ su
Password:
[root@localhost com]# dir
com.c  com.ko  com.mod.c  com.mod.o  com.o  m  Makefile
[root@localhost com]# insmod com.ko
insmod: error inserting 'com.ko': -1 Invalid module format
[root@localhost com]# exit
exit
[edelahaye@localhost com]$


Problème.
Le fichier var/log/messages indique:


<...>
May 19 09:29:23 localhost kernel: com: version magic '2.6.8.1-24mdk 686 gcc-3.4' should be '2.6.8.1-12mdk 686 gcc-3.4'
<...>


Il y aurait une légère incompatibilité de version...
Le binaire du noyau et les fichiers sources du kernel viennent des CD Mandrake 10.1 'Official'...
 
Comment résoudre ce problème ? Recompiler le noyau ?
 
Merci de m'avoir lu jusqu'au bout.
 
Emmanuel


 
bah là je crois que c'est clair : '2.6.8.1-24mdk 686 gcc-3.4' should be '2.6.8.1-12mdk 686 gcc-3.4' tu tournes avec un 2.6.8.1-12mdk et t'as choppés les sources du 2.6.8.1-24mdk...(comment ça totologie?).
 
2 solutions : tu cherches le noyau de révision 24 (ou les sources de révision 12)...
tu recompiles le 24 à partir des sources...  
 
ou alors... un truc qui marcherait avec un 2.4 (pas sur avec un 2.6) dans linux/include/linux/version.h tu changes le

Code :
  1. #define UTS_RELEASE

mais je ne garantie pas que le version magic est calculé à partir de ça...
 
PS : juste pour vérifier que donne

Code :
  1. uname -a

et

Code :
  1. modinfo ./ton_module.ko

?
PS : essaye aussi de forcer :

Code :
  1. insmod -f


Message édité par xouille38 le 19-05-2005 à 14:05:06
Reply

Marsh Posté le 19-05-2005 à 16:04:20    

xouille38 a écrit :

2 solutions : tu cherches le noyau de révision 24 (ou les sources de révision 12)...
tu recompiles le 24 à partir des sources...


 
Ok, c'est clair. Merci.

Citation :

PS : juste pour vérifier que donne

Code :
  1. uname -a




[edelahaye@localhost app_com01]$ uname -a
Linux localhost 2.6.8.1-12mdk #1 Fri Oct 1 12:53:41 CEST 200                                        4 i686 AMD Duron(tm) Processor unknown GNU/Linux
[edelahaye@localhost app_com01]$


Citation :

et

Code :
  1. modinfo ./ton_module.ko

?



[root@localhost com]# modinfo ./com.ko
filename:       ./com.ko
description:    com driver k2.6
author:         E.D.
license:        BSD
vermagic:       2.6.8.1-24mdk 686 gcc-3.4
depends:


Citation :

PS : essaye aussi de forcer :

Code :
  1. insmod -f



Marche pas


[root@localhost com]# insmod -f ./com.ko
insmod: error inserting './com.ko': -1 Invalid module format


Je vais essayer de trouver les bons sources... Le noyau a dû être mis a jour...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-05-2005 à 16:07:56    

au contraire, ton noyau n'a pas été mis à jour (2.6.8.1-12mdk) alors que les sources l'ont été ;)  
 
tout bonnement parce que le noyau est un truc trop sensible pour être mis à jour automatiquement.
urpmi kernel et ton noyau sera à jour au prochain reboot (si tu utilises des drivers proprio, nvidia par ex, il faudra les réinstaller)


---------------
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 19-05-2005 à 16:28:52    

Mjules a écrit :

au contraire, ton noyau n'a pas été mis à jour (2.6.8.1-12mdk) alors que les sources l'ont été ;)


Exact. Je crois que mes cinq minutes d'idiotie sont épuisées!
 
Je vais à la pêche aux vieux sources...


Message édité par Emmanuel Delahaye le 19-05-2005 à 16:29:39

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 19-05-2005 à 16:33:15    

sur les CD ou dans la source Main :
ftp://ftp.proxad.net/pub/Distribu [...] k.i586.rpm


---------------
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

Sujets relatifs:

Leave a Replay

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