Forum Linux.noyau Compiler un module

Posté par  .
Étiquettes : aucune
0
30
mai
2007
Bonjour,
J'ai des sources pour le driver de carte Raid Adaptec. J'ai lu les conseils pour les compiler afin de faire un module (.ko) mais il y a quelque chose qui doit m'échapper car cela ne marche pas.
J'ai essayé sous Gentoo, mais si quelqu'un c'est faire la manipulation sous un autre système d'exploitation (sauf windows rhel, et suse) cela ne pose pas de problème.
Voici la notice :
The kernel has to be configured
-------------------------------

Make sure that your kernel is configured. If you do not
have .config file in your kernel root, then your kernel is
not configured. If you have that file but you're unsure if
your kernel is configured, then run "make oldconfig".

You need a configuration file in order to configure the
kernel. You get one by manually configuring the kernel
("make menuconfig") or by copying a provided one from your
vendor/distributor or by getting the one currently used by
your running kenrel.

The latter two choices work as follows: copy the config file
of your desire from configs/ directory to . and rename it
".config". Then run "make oldconfig". Or you can copy
/proc/config.gz (if present, not all kernels support this)
to . and then unzip it using gunzip(1) and then rename it to
".config". Then run "make oldconfig".
-----------------------
C'est pour la configuration du noyau, j'ai fais la commande : emerge gentoo-source pour télécharger les sources du noyau. Puis j'ai copier le .config dans le répertoire ou j'avais mes sources (drv_linux).
Déjà il y a une chose que je ne comprend pas bien c'est si je dois dans mon cas configurer le noyau ? Je pense que non, et le make menuconfig me servirais à rien puisque le module n'est pas par défaut dans le noyau.

Puis pour les noyaux 2.6 :
cd <driver source directory>
mv Makefile Makefile.2_4
mv Makefile.2_6 Makefile
make -C /usr/src/linux M=`pwd`

The driver will be "adp94xx.ko".

To insert it into the kernel, do:

insmod adp94xx.ko

J'ai fait les commandes mv (je n'ai pas bien compris l'utilité) puis j'ai essayé de faire la commande make et là :
No rule to make target 'usr/src/....' Stop
Je me suis documenté, cette commande make devrait me compiler un fichier ko en prenant en compte toutes les dépendances que les fichiers ont besoins (juste ?)

Je me suis alors dis qu'il fallait peut être compilé les sources .c avant, j'ai alors essayé cette commande :
gcc -DMODULE -D__KERNEL__ -O6 -c adp94xx_sata.c
Mais là le compilateur me renvoi un grand nombre d'erreur.
Je suis allé voir du côté du source c
Et je pense que d'apres les appels des fichiers je dois mettre mon source à un endroit spécifique, mais j'ai regardé si je possédé bien tout les fichiers c et il s'avere que non .

Si quelqu'un pouvait m'éclairer , car là je suis complétement perdu

Merci
  • # i2o ?

    Posté par  . Évalué à 2.

    lors de mon énorme échange de mail concernant le driver dpt_i2o avec le développeur du driver linux de chez Adaptec, j'ai appris que toutes les nouvelles cartes raid adaptec supportaient (du moins c'était en cours) le driver i2o.

    as-tu été voir dans la section i2o des modules pour activer le i2o ?
    sinon, t'as la partie sata ou scsi/low level driver des modules de périf, tu as p'tet un truc intégré de base pour ta carte scsi, Adaptec étant nettement plus enclin à fournir des sources au kernel linux que l'est par exemple nvidia concernant ses pupuces graphiques :)
    • [^] # Re: i2o ?

      Posté par  . Évalué à 1.

      Merci pour ta réponse, mais le module i2o se charge par défaut, et ne peut remplacer le driver adp94xx. Pour les modules inclus j'ai testé le aacraid et le aic94xx mais aucun des deux marches, si j'ai bien compris aacraid est bien un driver mais pour une autre carte, aic94xx est un firmware

      Tu as pu envoyer des emails à adaptec car tu as payé une adhésion ou c'était gratuit ??

      Mathieu
      • [^] # Re: i2o ?

        Posté par  . Évalué à 2.

        j'me suis renseigné sur ma carte dans les archives de la ML du kernel, et je suis tombé sur l'adresse du mainteneur de dpt_i2o.

        il s'appelle Marc Salyzyn, et son mail c'est simplement mark_salyzyn@ adaptec POINT com

        foila :)
        • [^] # Re: i2o ?

          Posté par  . Évalué à 1.

          Merci pour l'info pense tu qu'il pourra m'aider sur ce sujet, et de plus que je n'ai pas adhérer à un abonnement (s'élevant à 70¤ :p) ?

          Mathieu
  • # re i2o

    Posté par  . Évalué à 1.

    Merci pour ta réponse, mais i2o est chargé au démarrage, mais ça ne remplace pas le driver adp94xx.
    J'ai essayé comme module inclus le aacraid et l'aic94xx
    le premier est un driver pour une autre carte, et l'autre est le firmware pour ma carte.

    Tu as pu envoyé un email à adaptec car tu as payé l'adhésion ou c'était gratuit.

    Mathieu
  • # .

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

    1) Est-ce que le lien vers tes sources du noyau est bien présent ?
    Tu devrait avoir un lien /usr/src/linux -> linux-2.6.20-gentoo-r4 à la version près.

    2) Si tu es sous gentoo, je m'étonne que tu n'ai pas un noyau configuré. Amha, à la compilation de ton driver, il y a surement un bout de code qui va aller vérifier si /usr/src/linux/.config (i.e. la config du noyau courant) contient les bonnes options.

    3) La magouille avec les makefiles, c'est que le makefile par défaut doit être pour les noyaux 2.4 et comme tu utilise un 2.6, ça n'utilise pas les mêmes fichiers makefile.

    Maintenant, j'aimerai bien voir d'un peu plus près ton message d'erreur à la compile.

    Bonne chance.

    Adhérer à l'April, ça vous tente ?

    • [^] # Re: .

      Posté par  . Évalué à 1.

      Bonjour,

      Pour ce qui est du 1) ma version actuellement installé est la 2.6.17-gentoo-r7 et la version des sources obtenues est : 2.6.19-gentoo-r5.

      Pour le 2) le .config justement je le copie depuis /usr/src/linux-2.6.19-gentoo-r5/.config vers /root/drv_linux (répertoire ou il ya les sources?) et je lance un ./config ?

      Pour la 3) Pour les version 2.6 il préconise dans la docs ce que j'ai mis plus haut, mais la manipulation ne marche pas.

      Mon message d'erreur quand j'essaye de faire la commande :
      make -C /usr/src/linux M=`pwd` depuis le répertoire /usr/src/linux/drivers/scsi/adp94xx
      -----------------
      make : Entering directory '/usr/src/linux-2.6.19-gentoo-r5'
      scripts /Makefile.build:17: /usr/src/linux-2.6.19-gentoo-r5/pwd/Makefile: No such file or directory
      make[1] : *** No rule to make target '/usr/src/linux-2.6.19-gentoo-r5/pwd/Makefile'. Stop.
      make: *** [_module_pwd] Error 2
      make: Leaving directory '/usr/src/linux-2.6.19-gentoo-r5'
      -----------------

      Merci pour la réponse

      Mathieu
  • # et sinon, quand même

    Posté par  . Évalué à 2.

    dis, juste pour rire, ton controleur raid, ca serait pas un SAS AIC-94xx ?

    parce que bon...
    < > Adaptec AIC94xx SAS/SATA support

    et aussi
    CONFIG_SCSI_AIC94XX:

    This driver supports Adaptec's SAS/SATA 3Gb/s 64 bit PCI-X
    AIC94xx chip based host adapters.

    Symbol: SCSI_AIC94XX [=n]
    Prompt: Adaptec AIC94xx SAS/SATA support
    ___Defined at drivers/scsi/aic94xx/Kconfig:27
    ___Depends on: SCSI!=n && PCI
    ___Location:
    ______-> Device Drivers
    _________-> SCSI device support
    ____________-> SCSI low-level drivers
    ___Selects: SCSI_SAS_LIBSAS && FW_LOADER



    (bon, les balises proposées ici sont vraiment pas suffisantes :'()
    • [^] # Re: et sinon, quand même

      Posté par  . Évalué à 1.

      Bonjour,
      Si c'est une adaptec aic 9405w, mais j'ai du mal à comprendre à quoi correspond le code que tu as mis?

      Merci pour la réponse
      Désolé d'être un noob

      Mathieu
      • [^] # Re: et sinon, quand même

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

        Ça veut dire que tu n'a pas a t'embêter avec un driver externe, ta carte est supportée par le noyau. Il faut seulement que tu active son support.

        Ton noyau actuel est le 2.6.17. Laisse tomber le nouveau boyau, sauf si tu as envie de changer ;-).
        Vérifie par un ls -l /usr/src/ que tu as bien un lien /usr/src/linux -> /usr/src/linux-2.6.17-gentoo-r7, c'est important.

        Ensuite, il faut activer ton module à la compilation :
        cd /usr/src/linux
        make menu config

        Parcours le menu :
        -> Device Drivers
        ---> SCSI device support
        -----> SCSI low-level drivers

        Et active (avec y ou m, selon que tu veuille un module ou un driver en dur dans le noyau) le champ Adaptec AIC94xx SAS/SATA support

        Ensuite, quitte tout ça en sauvegardant, maintenant il faut compiler ...
        Si tu as fait des modules :
        make modules && make modules_install

        Si tu as fait un noyau dur :
        make && cp arch/i386/boot/bzImage /boot/nomDuNoyauDejaPresent (PS : une sauvegarde de l'ancien noyau n'est certainement pas superflu ...)

        Si tu as fait un mix des deux (options en dur plus en module), tape les deux ligne ;-)

        Ensuite, si tu as fait des modules, charge les : modprobe aic94xx (a voir, je n'ai pas les sources du noyau sous la main)

        Si tu as fait des options en dur, reboote sur le bon noyau.

        Ceci pourra te soutenir dans ta quête ... : http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?part=(...)

        Adhérer à l'April, ça vous tente ?

        • [^] # Re: et sinon, quand même

          Posté par  . Évalué à 2.

          petits ajouts :

          make menuconfig (en un mot)
          le kernel utilisé pour vérifier si ya un driver intégré est le 2.6.21-r2 (~x86), p'tet qu'il est pas encore dans le kernel gentoo de la version x86 stable
          • [^] # Re: et sinon, quand même

            Posté par  . Évalué à 1.

            Merci nicodache, je vais essayé ça demain, vu que j'ai oublié mon cable SATA chez moi. Une petite question supplémentaire, nous pouvons créer un livecd depuis un noyau ?

            Mathieu
          • [^] # Re: et sinon, quand même

            Posté par  . Évalué à 1.

            Merci nicodache, je vais essayé ça demain, vu que j'ai oublié mon cable SATA chez moi. Une petite question supplémentaire, nous pouvons créer un livecd depuis un noyau ?

            Mathieu
            • [^] # Re: et sinon, quand même

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

              non, il y a plus de travail que ça ...

              En revanche, il est tout à fait possible de créer un live CD/USB depuis une gentoo, mais ça demande quand même des compétences. Commence par bien maîtriser gentoo (ou tout autre GNU/linux ...) sur une config standard.

              Autrement, ... http://fr.gentoo-wiki.com/HOWTO_Cr%C3%A9er_un_LiveCD_ou_une_(...)

              PS : merci nicodache pour la coquille ... j'ai mal relu. En même temps, je n'utilise pas gentoo au travail, et je n'ai pas les sources du noyau sur moi ...

              PPS : Pour les gens qui souhaitent découvrir gentoo, il y a le 2 juin une journée spéciale organisée entre Parinux et GentooMuch ... voir http://linuxfr.org/2007/05/29/22554.html

              Adhérer à l'April, ça vous tente ?

              • [^] # Re: et sinon, quand même

                Posté par  . Évalué à 1.

                ok Merci François Poulain (désolé je n'avais pas vu que c'était toi qui avais envoyé tout les postes avant. J'esserais de configurer ce noyau, directement sur le serveur. Cela aurait été avec plaisir d'allé à la journée spéciale gentoo mais ça se tient encore à paris :s

                Merci pour tout, je vous tiens informé sur mon avancement
                • [^] # Re: et sinon, quand même

                  Posté par  . Évalué à 1.

                  Bon pour l'instant j'ai abandonné un peu la gentoo, car quand j'ai installé la gentoo sur le serveur ibm directement relié en sata sans passé par la carte controleur, il y a toujours le problème de la carte graphique, j'ai essayé de faire un emerge --sync, et il n'arrive pas à se synchroniser avec les serveurs, ni même à télécharger les sources avec emerge gentoo-sources, donc pas de possibilité de faire un make menuconfig.
                  De plus sur une version qui marchait je ne suis pas arrivé à faire chargé les modules nécessaires au démarrage, et je ne peux les ajouter en modprobe.

                  Bref beaucoup de problèmes et le délais est assez court, j'essaye de faire tourné ma plateforme LAMP avec la Redhat, et ce n'est pas gagné ...

                  Merci des réponses en tout cas.

Suivre le flux des commentaires

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