IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Insérer un module dans un noyau Linux


Sujet :

Linux

  1. #1
    Membre à l'essai Avatar de VS7EVEN
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Insérer un module dans un noyau Linux
    Bonjour à tous,

    Voilà j'ai suivi le (très bon ) tuto pour écrire et insérer un module dans un noyau linux :
    http://broux.developpez.com/articles/c/driver-c-linux/

    Au point "2.3. Méthodes open et release" du tuto, il y a un code d'exemple que j'arrive à compiler mais voilà lorsque je l'insère avec insmod il me retourne :
    insmod: error inserting 'module.o': -1 Invalid module format

    J'ai donc essayé une recompilation de mon noyau et lorsque je boote sur mon noyau recompilé et que j'insère mon module, tout se passe bien.

    Mes questions sont :

    Le message d'erreur vient-il du fait que je dois être sur mon noyau recompilé pour insérer le module ?

    Est il possible d'insérer un module à chaud sans recompiler son noyau ?

    Merci et bonne soirée

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je pense qu'il y a une incompatibilité soit, entre le compilateur utilisé pour compiler le noyau et celui pour compiler le module, soit entre la version des fichiers d'entête du noyau et la vraie version du noyau.

    Oui, on peut rajouter des modules à chaud.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai Avatar de VS7EVEN
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Ce que je trouve bizarre si cela viens d'une incompatibilité, c'est pour quand j'insère le module du point "1.2. Chargement et déchargement de module" du tuto je n'ai aucun soucis ?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Oui, mais si c'est une incompatibilité niveau du compilateur (je ne suis pas sur, j'ai déjà dit), alors la recompilation du noyau utilise le compilateur avec celui que vous utilisez pour la compilation du module.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre à l'essai Avatar de VS7EVEN
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    J'ai trouvé mon problème,

    Il y a un problème lors de l'attribution du majeur.

    J'ai remplacé la ligne "ret = register_chrdev(major, "mydriver", &fops);" par "register_chrdev(major, "mydriver", &fops);".

    En clair je retire l'assignation dans le ret de la valeur de retour de unregister_chrdev();

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/07/2015, 20h14
  2. [AC-2010] Insérer un module dans une BD récursivement
    Par Lawlyeth dans le forum Access
    Réponses: 0
    Dernier message: 04/06/2015, 16h09
  3. Date dans le Noyau Linux
    Par 3logy dans le forum Administration système
    Réponses: 2
    Dernier message: 30/12/2010, 01h56
  4. [VBA-E] Insérer du code dans un module
    Par cafeine dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/05/2007, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo