Forum Linux.mandriva spca5xx recompilation de module

Posté par  .
Étiquettes : aucune
0
18
jan.
2007
Pour utiliser une webcam de marque mal identifiée j'ai récupéré un driver

spca5xx

depuis

http://www.redhat.com/archives/rhl-list/2005-April/msg04332.(...)

grâce à des indications glanées ici (merci aux John Doe et Baud123). J'ai regardé le README, il faut compiler le module, en effet. J'essaie de comprendre, j'essaie de lancer des lignes de commande avec

insmod ... make install ...

Mais en fait je suis vraiment dépassé en jouant dans cette division qui n'est pas la mienne. La pédagogie de la barre haute, c'est bien, mais là je patauge. J'indique que je débute, et qu'il me manque donc à chaque fois des étapes. Avant de lancer telle ou telle commande, par exemple :

insmod -f./le_module

ne faut-il pas s'être au préalable placé dans un répertoire approprié, ou avoir fait une opération préparatrice ?
  • # insmod

    Posté par  . Évalué à 1.

    as tu correctement compilé le module ?

    sinon en général cela peut être : (en root)

    ./configure
    make
    make install

    ensuite, (toujours en root) :

    modprobe nom_du_module
    ou alors :

    insmod /chemincompletdumodule/sousrepertoireetc/nom_du_module

    tant pour l'un que pour l'autre, il n'y a pas à être dans un répertoire en particulier. L'opération préparatrice, c'est la compilation...

    Il faut également que tu aies les sources et les bibliothèques pour ton noyau.

    Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

    • [^] # dkms-spca

      Posté par  . Évalué à 2.

      Puisque tu es sous mandriva, urpmi dkms-spca5xx devrait suffire ...

      Si tu préfère l'installeur graphique, fait une recherche sur spca.

      FFF
      • [^] # Re: dkms-spca

        Posté par  . Évalué à 1.

        Voilà un renseignement qui semble probant ; j'ai essyé cette commande, 11 dépendances m'ontété proposées au choix, arbitrairement j'ai opté pour la 11, et l'installation s'est lancée, jusqu'à ceci :


        Creating symlink /var/lib/dkms/spca5xx/0.57.00/source ->
        /usr/src/spca5xx-0.57.00

        DKMS: add Completed.

        Error! Your kernel source for kernel 2.6.12-12mdk-i686-up-4GB cannot be found at
        /lib/modules/2.6.12-12mdk-i686-up-4GB/build or /lib/modules/2.6.12-12mdk-i686-up-4GB/source.
        You can use the --kernelsourcedir option to tell DKMS where it's located.

        Error! Could not locate spca5xx.ko.gz for module spca5xx in the DKMS tree.
        You must run a dkms build for kernel 2.6.12-12mdk-i686-up-4GB (i586) first.


        Là, ça redevient très abstrait pour moi ; j'ai essayé --kernelsourcedir : cela donne "command not found". FFF, toi qui parais bien éclairé, vois-tu où est le problème et surtout comment y répondre.
        • [^] # Re: dkms-spca

          Posté par  . Évalué à 3.

          installe les sources de ton noyau, elles sont nécessaires pour pouvoir compiler un module.
    • [^] # Re: insmod

      Posté par  . Évalué à 1.

      Question de débutant : "il faut que tu aies les sources et les bibliothèques pour ton noyau", ça veut dire quoi ? Qu'il faut que je les aie localisées ? extraites de quelque part ? que j'y ajoute quelque chose ?...
      • [^] # Re: insmod

        Posté par  . Évalué à 2.

        dans le centre de contrôle de mandrake, il y a sans doute une application pour installer automatiquement des programmes depuis des dépôts internet. Il faut que tu cherches dedans ce qui concerne le noyau : ses sources, et ses "headers", cela permet de compiler des modules additionnels.

        Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

      • [^] # Re: insmod

        Posté par  (site web personnel) . Évalué à 2.

        Sous Mandriva, le kernel s'appelle kernel-2.6.x. Les sources du kernel s'appellent kernel-source-2.6.x.

        Hop, on cherche la liste des paquetages qui commencent par kernel-2.6 ou kernel-source-2.6 (regarde la page de man de urpmq -y):
        [liberforce@donald]$ urpmq -y kernel | egrep "^(kernel|kernel-source)-2.6"
        kernel-2.6.17.5mdv
        kernel-2.6.17.6mdv
        kernel-2.6.17.8mdv
        kernel-source-2.6.17.5mdv
        kernel-source-2.6.17.6mdv
        kernel-source-2.6.17.8mdv


        On cherche ensuite le nom du module dkms à installer... On sait que c'est le pilote spca-quelquechose...
        [liberforce@donald]$ urpmq -y spca
        dkms-spca5xx
        spca5xx-kernel-2.6.17-2mdvlegacy


        Ah tiens, il y a aussi un kernel spécial qui intègre le pilote déjà compilé pour les machines un peu vieilles. Bon, nous ce qui nous intéresse c'est dkms-spca5xx.

        Tu installes le dernier kernel, les sources correspondant à la même version, ainsi que le module dkms qu'on a vu :
        urpmi kernel-2.6.17.8mdv kernel-source-2.6.17.8mdv dkms-spca5xx

        Tu redémarres pour utiliser le nouveau kernel. Ça devrait être bon...
        • [^] # Re: insmod

          Posté par  (site web personnel) . Évalué à 2.

          Ah, zut, je t'ai donnée ça en croyant que tu utilisais une mandriva 2007. D'après ta version de kernel, c'est plutôt la 2006. L4esprit est exactement le même, la version du kernel et des sources à installer sera juste différente.
          • [^] # Re: insmod

            Posté par  . Évalué à 1.

            Cher Liberforce

            Ce matin, je trouve tes messages, alors que je me bagarre depuis une dizaine de jours pour me sortir de cette affaire de module... Ce qui m'a conduit à l'épineuse compilation du noyau. Ce doit être formateur de galérer ! Tes indications semblaient devoir me libérer, et je méditais déjà le message de remerciements : je suivis donc ton chemin. Avec la mandriva 2006 ça donne la version du noyau 2.6.12-27 ; bref je lance toutes les commandes et ça roule ! Petite ou grande erreur ? Au lieu de redémarrer, j'ai arrêté le système ; depuis à chaque fois que je démarre j'ai l'ordinateur qui se lance et qui bascule normalement sur le système; pingouin, rebours des 9 secondes, écran noir avec :

            BIOS Data check successful

            et la deuxième ligne qui saute avant même que je ne réussisse à la lire, ça quitte le système, on revient sur l'ordinateur qui rebascule sur le système et le cycle se répète.
            Impossible de voir l'opération de boot se poursuivre ! Sur l'écran d'ouverture du système (avec le pingouin et le compteur de secondes), il y a ces deux indications :

            Failsafe
            2612-27

            Il semble donc que le noyau ait été recompilé, mais avec perte des modules nécessaires au boot. C'est vraiment la panade ! Y a-t-il une voie de sortie ou faut-il faire une réinstallation intégrale ?
            • [^] # Re: insmod

              Posté par  (site web personnel) . Évalué à 2.

              Hum, c'est bizarre, tu devrais avoir une entrée "linux" en plus de failsafe et 2612-27. En fait elle redirige juste vers le dernier noyau installé (ou le plus récent, je ne sais pas).

              Quand tu as cet écran qui est affiché par LILO (le Linux loader), choisis avec les flèches du clavier "2612-27", et appuis sur entrée. Tu démarreras sur le noyau 2.6.12-27.

              Ensuite j'ai du mal à comprendre ce qui ce passe réellement d'après tes explications... C'est pas très clair tout ça, mais c'est normal, tu n'as pas encore les mots pour décrire les éléments que tu vois. Ça s'acquiert avec un peu de pratique.

              Si l'ordinateur redémarre tout de même en boucle, j'ai bien peur que la réinstallation soit la voie la plus simple... Une occasion pour passer à la Mandriva 2007 peut être.

              Sache en tout ca que tu n'as pas à recompiler ton noyau (je ne crois pas que tu l'ais fait d'ailleurs). Tout au plus tu as dû compiler un module qui est utilisé par ton noyau, mais comme je te l'ai dit, ce n'est normalement pas nécessaire. Ensuite, redémarrer ou arrêter la machine revient au même, pas de risque à ce sujet.

              Juste une question, tu te trouves dans quel coin ? France, région parisienne ? Si tu es intéressé par un coup de fil un de ces soir, envoie moi un message à liberforce fr st , avec ton n° de tel fixe (je suis dégroupé total, je peux pas appeler gratos sur des portables). J'essaierai de voir ce que je peux faire, c'est plus facile de vive voix.
              @+
              • [^] # Re: insmod

                Posté par  . Évalué à 1.

                Il y a bien aussi "Linux" ; je viens d'essayer ta manip, ça ne donne rien. Je vis à La Rochelle, dégroupé également. Ta messagerie pour t'envoyer mon numéro j'ai pas saisi. Voici la mienne si tu veux qu'on établisse le contact téléphonique de moi à toi : ch.hagen@free.fr
                A plus !
  • # Pour les bases, consulte :

    Posté par  . Évalué à 2.

    http://casteyde.christian.free.fr/system/linux/guide/online/(...)

    En particulier les parties
    5.3. Pages de manuel
    5.4. Opérations de base sur les répertoires
    5.5. Notions sur les chemins Unix
    7.1. Notions de base
    7.1.1. Définition des termes
  • # à lire en premiet

    Posté par  . Évalué à 2.

    les fichiers README et INSTALL (dans l'ordre) fournis avec le driver (ou autre) qui se respecte.

    Dans notre cas:
    1- vérifier que le gcc qui est installé est celui qui a servi à compiler le noyau qu'on utilise (uname -a)
    2- ./configure &&make && sudo make install
    3- modprobe spca5xx
    4- on regarde si ça a fait quelquechose: tail /var/log/messages
    5- vlc et on ouvre un périphérique de capture
    (et ne pas oublier de placer l'utilisateur dans le groupe video, de se reconnecter pour que celà prenne effet)
    • [^] # Re: à lire en premiet

      Posté par  . Évalué à 1.

      Petite précision pour un vrai débutant peu imaginatif : "gcc" cela signifie ?
      • [^] # Re: à lire en premiet

        Posté par  (site web personnel) . Évalué à 2.

        GNU C Compiler: le compilateur C du projet GNU.
        Ça a dérivé en GNU Compiler Collection, car gcc sait gérer d'autres langages que le C à présent.
    • [^] # Re: à lire en premiet

      Posté par  . Évalué à 1.

      J'ai repris les choses dans l'ordre mais je me heurte à de sérieuses difficultés. Dans le README, j'ai ceci :

      Before trying to compile the driver, ensure that you've configured your
      kernel, and updated the dependencies:
      'make [config|menuconfig|xconfig]; make dep'.

      mais cette commande ne me donne rien, ou plutôt ceci :

      make: *** Pas de règle pour fabriquer la cible « [config ». Arrêt.
      bash: menuconfig: command not found
      bash: xconfig]: command not found

      Puis j'ai :

      Make sure, when compiling the driver, you use the same version of compiler as
      was used to compile your kernel. Not doing so can create incompatible binaries.

      Ouais je veux bien mais comment je fais pour m'en assurer ? Ensuite, cela ça m'échappe carrément :

      As root, check the output of lsmod for videodev.

      Dans l' INSTALL, on a :

      Module compile outside the kernel tree but need the source of your running
      kernel installed and configured.
      be sure your kernel include usb and v4l stuff

      Kernel 2.6.x
      make clean
      make
      if all goes right as root :
      make install

      To test please use the command line spcaview tool.
      You need libsdl installed with the header from your distro or goto http://www.libsdl.org

      Voilà ce que me donne 'make clean' :

      make clean
      make: *** Pas de règle pour fabriquer la cible « clean ». Arrêt.

      Ce point 'To test please use the command line spcaview tool.', je ne le comprends pas non plus. Comme je l'ai déjà écrit, je ne joue pas dans ma division avec cette affaire de webcam, de module et de compilation. Mais je compte persévérer, surtout avec de l'aide...
      • [^] # quelques pistes

        Posté par  . Évalué à 1.

        gcc est le compilateur (consulte http://fr.wikipedia.org/wiki/Compilateur )

        Avant de compiler un module, découvre la compilation du noyau.
        Un problème à la fois !

        Installe tous les outils pour développer (gcc, binutils .. ) et les sources du noyau. Ensuite, dans un terminal, place toi dans le répertoire des sources. Souvent il faut taper :
        cd /usr/src/linux

        Je ne connais pas ta distribution. Il te faudra adapter le chemin.


        La ligne ci-dessous permet de configurer son noyau :
        make [config|menuconfig|xconfig]; make dep

        Cela signifie que tu dois ensuite lancer l'une l'une des 3 lignes ci-dessous :

        make config ; make dep

        make menuconfig; make dep

        make xconfig; make dep


        Consulte la documentation citée et lorsque tu auras compilé un noyau fonctionnel, tu pourras ensuite compiler un module.
        • [^] # Re: quelques pistes

          Posté par  . Évalué à 1.

          Je le répète et ce n'est pas une coquetterie : je débute, non seulement sous Linux, Mandriva 2006, mais surtout en informatique... Donc, merci pour les pages de Wikipédia, ça permet de comprendre les concepts. Mais ça ne résout pas les problèmes de manipulation ! Tu me dis :

          'Installe tous les outils pour développer (gcc, binutils .. ) et les sources du noyau.'

          Comprends pas ; les "installer" ? mais d'où vers où ?
          • [^] # Re: quelques pistes

            Posté par  . Évalué à 1.

            aïe.
            je pense qu'à ce stade il serait hélas plus rapide/simple de changer de webcam... (sans vouloir être médisant)
      • [^] # Re: à lire en premiet

        Posté par  . Évalué à 2.

        tu peux passer le chapitre sur la compilation du noyau (je suppose que mandriva à paramétré le module v4l (video for linux) dans son noyau.

        Déjà, il te faut les sources de ton noyau: utilise urpmi pour les installer (uname -a pour savoir quelle version installer)
        ensuite tu pourras compiler le module puisque c'est un prérequis.

        Ouais je veux bien mais comment je fais pour m'en assurer ?

        cat /proc/version te donnera la version de gcc utilisé pour compiler ton noyau, ensuite tu fais un gcc --version et tu vérifies l'égalité entre les 2 versions. S'il y a différence, il te faudra soit recompiler le noyau soit réinstaller le gcc utilisé pour compiler le noyau.

        Ensuite, cela ça m'échappe carrément :
        As root, check the output of lsmod for videodev.

        sudo modprobe videodev
        et vérifie les dernières lignes de /var/log/messages

        Au fait, gcc est bien installé oui...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.