[Debian] Probleme avec 'make modules'

Fermé
duedos Messages postés 8 Date d'inscription mercredi 14 juin 2006 Statut Membre Dernière intervention 18 décembre 2006 - 8 nov. 2006 à 11:40
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 16 mai 2007 à 14:13
Bonjour a tous
J'essaie tant bien que mal d'installer les drivers d'une carte Diva Server sous linux Debian kernel 2.4.27. Ainsi, depusi le repertoire ou se situe les sources je lance un ./Build, mais une erreur survient :

ERROR :        Failed to call 'make modules'
MISSING:      make modules


Je ne sais pas quoi faire pour reussir a installer ces drivers, donc si quelqu'un pouvait m'aider et m'expliquer ce que je peux faire pour pallier a cette absence...
Merci d'avance
A voir également:

19 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
15 mai 2007 à 10:45
Vérifie au préalable que "make" est installé :
(mando@aldur) (~) $ which make
/usr/bin/make

Tout ce qui suit est à faire en root (ou précédé d'un sudo si tu utilises une ubuntu). Si make n'est pas installé, mets-le. Sous debian et dérivés (ubuntu, knoppix...) :
aptitude install make

Si quand tu tentes de compiler ton module, il te dit que la cible modules manque, c'est soit :
1- qu'il manque les kernels headers,
2- qu'il manque un lien symbolique vers tes kernels headers.

1) Si tu n'as pas compilé ton propre noyau, commence par installer les headers de ton noyau : sous debian et dérivés :
aptitude install linux-headers-`uname -r`

2) Crée si nécessaire ensuite les deux liens symboliques suivants :
ln -s /usr/src/linux-headers-`uname -r` /usr/src/linux
ln -s /usr/src/linux-headers-`uname -r` /lib/modules/`uname -r`/build/

A partir de là la compilation de ton module devrait marcher...

Bonne chance
1
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
15 mai 2007 à 11:21
Que donnent
updatedb
locate devfs_fs_kernel.h

Fais tu ta compilation en root ? As tu créé le lien symbolique /usr/src/linux comme je t'ai dit ?
ln -s /le/repertoire/de/tes/sources/de/noyau /usr/src/linux

A priori /le/repertoire/de/tes/sources/de/noyau doit être le répertoire /usr/src/linux-sources-`uname -r`

A noter que tu n'es absolument pas obligé d'utiliser les sources de noyau fournies par debian, et encore moins la version actuellement utilisée par debian. En particulier, tu peux tout à fait prendre la dernière version de noyau sur https://www.kernel.org/

Enfin, plutôt que d'utiliser make menuconfig, puisque tu es sous debian, utilises la commande make-kpkg qui est beaucoup plus pratique. Elle te permet de mettre ton noyau dans un paquet debian, de mettre à jour ton grub etc...

http://lea-linux.org/cached/index/Kernel-kernel_debian.html

Une fois ton noyau compilé et installé (avec dpkg -i), reboote dessus mais surtout, garde ton noyau actuel au cas où tu aurais oublié des choses importantes dans ton make menuconfig. En particulier il se peut que le noyau que tu compiles de boote pas s'il manque des fonctionnalités "vitales".

Bonne chance
1
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
9 nov. 2006 à 20:58
Tu as installé make ?
which make

Dans ton Makefile il y a bien une cible modules ?
grep -nri modules Makefile

Bonne chance
0
jauneorange
14 mai 2007 à 14:05
Bonjour, je suis confronté au même problème et je souhaiterais savoir si une personne a déja réussi à compiler les drivers pour Diva server sous linux.

Si oui, pourrait il m'aider.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jauneorange
15 mai 2007 à 11:06
Salut à toi merci de m'avoir répondu.

Alors make est installé, c'est sur. Et pour être plus précis je vais te dire ce que j'ai fais.

Je suis sous la ETCH qui est passé en version stable donc j'ai la version 2.6.18-4-686. Et donc comme il était dit sur le site eicon pour l'installer et la compilation du driver DIVA SERVER pour linux; il faut télécharger le kernel source qui correspond à ma version de mon noyaux.
Pour cela j'ai fais un apt-get install linux-source-2.6.18, qui correspond à ma version du noyau. Je suis allé sous /usr/src/. Fais un tar xjf linuxXXX. Püis j'ai crée un lien symbolique linux vers ce dossier. Ensuite je suis allé dans le dossier symbolique.
Saisie cette commande => make meneconfig => selectionner les options voulues pour la compilation du driver DIVA SERVER => make


Au final j'obtiens ce message d'erreur lors de la compilation.

drivers/isdn/capi/capi.c:42:35: error: linux/devfs_fs_kernel.h: Aucun fichier ou répertoire de ce type
drivers/isdn/capi/capi.c: In function ‘capi_init’:
drivers/isdn/capi/capi.c:1513: warning: implicit declaration of function ‘devfs_mk_cdev’
drivers/isdn/capi/capi.c: In function ‘capi_exit’:
drivers/isdn/capi/capi.c:1545: warning: implicit declaration of function ‘devfs_remove’


Concernant ta question sur les hearders j'ai pas isntallé les hearders. Je vais essayer pour voir.

En tout cas je te remercie de ton soutien, je me sens bcp moins seul !!! lol !!!
0
jauneorange
15 mai 2007 à 11:33
updatedb
locate devfs_fs_kernel.h => ca donne rien.

J'ai essayé de faire tes liens symbolique vers les hearders mais c'est pire qu'avant car la compilation s'arrête au tout début.

J'ai suivi le tuto qui est sur le site de eicon pour compiler les drivers DIVA SERVER for Linux. Ils disent de télécharger les kernels sources, pui s de créer un lien symbolique linux vers ce kernel source. Et se rendre dans le dossier ou on a téléchargé les drivers et faire ./Build.

Cette commande me retourne cette erreur :
drivers/isdn/capi/capi.c:42:35: error: linux/devfs_fs_kernel.h: Aucun fichier ou répertoire de ce type
drivers/isdn/capi/capi.c: In function ‘capi_init’:
drivers/isdn/capi/capi.c:1513: warning: implicit declaration of function ‘devfs_mk_cdev’
drivers/isdn/capi/capi.c: In function ‘capi_exit’:
drivers/isdn/capi/capi.c:1545: warning: implicit declaration of function ‘devfs_remove’

Je suis en root et j'ai crée un lien symbolique comme tu as dit. Je te tiens au courant du déroulement.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
15 mai 2007 à 14:12
Bon je t'explique le concept. Le module que tu essayes de compiler fait appel à des fonctions du noyau. Concrètement un noyau est écrit en C et comporte :
- des fichiers "déclaratifs" appelés headers (.h), qui donnent les fonctions implémentées dans le noyau. Cet ensemble de fichier correspond au paquet linux-headers.
- des fichiers de sources écrit en langage C (fichiers .c) qui implémentent ces fonctions. La paquet linux-sources comprend cet ensemble de fichiers et les headers. Il est donc a priori inutile d'installer le paquet linux-header si tu as déjà le paquet linux-sources.

Quand tu compiles un noyau, tu formes un fichier binaire (l'image associée au noyau) qui découle de ces fichiers .c et .h. C'est cette fameuse image qui est utilisée lorsque tu démarres sur ledit noyau. Cette image est en fait dans le paquet linux-image.

Si tu souhaites ajouter des fonctionnalités qui ne sont pas dans le noyau debian standard tu as besoin des linux-sources et de recompiler un noyau, de préférence avec la commande make-kpkg. Si tu as juste besoin des headers (ce qui est le cas dans la grande majorité des cas) tu peux te contenter des paquets linux-headers et linux-image, ce qui évite en particulier d'avoir à recompiler un noyau.

Donc on va faire les choses dans l'ordre, à savoir commencer par compiler un nouveau noyau puisque tu sembles avoir ebsoin de choses supplémentaires
As-tu déjà fait le make-kpkg ?
Est-ce que ce nouveau noyau est bootable ?


Pour compiler un noyau ou un module, on utilise un makefile, qui s'occupe a priori de passer les bonnes options pour que tout compile correctement. En particulier une option d'include s'occupe de dire ou se trouvent les headers du style devfs_fs_kernel.h (c'est l'option -I ou -isystem de gcc).

La plupart des modules cherchent les headers dans /usr/src/linux et c'est pourquoi il est important de faire le lien /usr/src/linux.
As-tu créé ce lien ?

Si oui on peut tenter la compilation. En général il faut taper un truc du genre :
cd /le/repertoire/du/module
./configure
make
make install

L'erreur que as est un problème d'include, normalement évité par le ./configure ou le lien symbolique. Sinon il faut préciser dans le Makefile d'aller chercher dans ton répertoire de sources...

Bonne chance
0
jauneorange
15 mai 2007 à 15:25
Re, comme tu prend la peine de m'expliquer en détails je vais faire de même alors:

Objectif: Installer les drivers DIVA SERVER 4BRI PCI V2 sur Debian ETCH Stable, Noyau 2.6.18-4-686. Tout cela dans le but de l'utiliser pour mettre en place Hylafax, serveur de fax sous linux.


J'ai trouvé sur le site de eicon, Diva Server, un tuto pour installer les drivers de ce truc sous linux voici le lien:
http://www.eicon.com/support/helpweb/slnxen/hylafax.asp


1/ J'ai fais ce qu'il a été demandé c'est à dire télécharger les derniers drivers for diva server pour linux debian.


2/ Ensuite je suis passer à la compilation des drivers de DIVA SERVER pour Linux. Mais avant cela il est démandé des prérequis donc j'ai installé les paquets make, g++, module-init-tools, libncurses5, xinetd, libncurses5-dev comme prérequis. Et comme kernel source j'ai installé linux-source-2.6.18.


3/ Ensuite tar xjf linux-source-2.6.18.bz2 => ln -s /usr/src/ linux-source-2.6.18 /usr/src/linux . J’ai crée un lien symbolique linux vers linux-source-2.6.18 comme a été demandé. Donc dans le dossier /usr/src/, nous avons :

hylafax:/usr/src# ls
kernel-patches linux-source-2.6.18 linux-source-2.6.18.tar.bz2 linux


4/ Partie compilation

hylafax:/telecharger# dpkg -i divas4linux_EICON-106.10-1.deb


| Please start Eicon Diva Build Wizard |
| (cd /usr/lib/eicon/divas/src; ./Build) |
| to build and install drivers for Eicon Diva ISDN Adapters |
| - |
| Please start Eicon Diva Configuration Wizard |
| (/usr/lib/eicon/divas/Config) |
| to detect and configure all installed Eicon Diva ISDN Adapters |
| - |
| Diva HTTP Configuration Server started at port '10005' |
| To enable Web interface access please set password in the file |
| '/usr/lib/eicon/divas/httpd/login/login'



Voilà ce que j’ai eu à la fin de l’installation du driver.


5/ Compilation du driver DIVA SERVER pour Linux. Je me suis rendu /usr/lib/eicon/divas/src et tapez ./Build . A la suite de cette commande j’obtiens ce message d’erreurs.

drivers/isdn/capi/capi.c:42:35: error: linux/devfs_fs_kernel.h: Aucun fichier ou répertoire de ce type
drivers/isdn/capi/capi.c: In function ‘capi_init’:
drivers/isdn/capi/capi.c:1513: warning: implicit declaration of function ‘devfs_mk_cdev’
drivers/isdn/capi/capi.c: In function ‘capi_exit’:
drivers/isdn/capi/capi.c:1545: warning: implicit declaration of function ‘devfs_remove’



Voilà ce qu’il en est. Merci de ton aide. Je poursuis dans cette voie.
0
jauneorange
15 mai 2007 à 15:37
Voici ce que retourne la commande make kpkg dans le dossier /usr/src/linux/

scripts/kconfig/conf -s arch/i386/Kconfig
***
*** You have not yet configured your kernel!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
make[2]: *** [silentoldconfig] Erreur 1
make[1]: *** [silentoldconfig] Erreur 2
make: *** Pas de règle pour fabriquer la cible « include/config/auto.conf », nécessaire pour « include/config/kernel.release ». Arrêt.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 mai 2007 à 01:34
Pour le kernel tu es sensé faire avant le make-kpkg le fameux make menuconfig. Concrètement make menuconfig lance une interface ncurses en vue de générer dans /usr/src/linux un fichier .config (récupérable pour les compilation de kernels ultérieurs avec un make oldconfig). make-kpkg t'envoie aux pelotes car apparemment tu as sauté cette étape.

Une fois que tu arriveras à booter sur ton nouveau kernel, et si la compilation de diva plante toujours, peux-tu me donner le contenu du fichier /usr/lib/eicon/divas/src/Build (s'il n'est pas trop long). En particulier il faudrait voir si tu ne peux pas définir des répertoires d'include.

Bonne chance
0
jauneorange
16 mai 2007 à 09:08
Salut!!! Bon je peux te passer le fichier Build mais il fait plus de 1400 lignes.... mdr!!!!

Par contre après un formatage j'ai fait un make menuconfig => make => make install. J'ai eu aucune erreurs. Donc la je poursuis. Pour voir ce que ca donne.

Si tu veux le fichier ./Build y a pas de souci mais la je continue sur une autre voie je te tiens au courant.

Bye.
0
jauneorange
16 mai 2007 à 09:31
Re moi bon quand j'ai fais un make menuconfig il y avait possibilité de cocher des cases pour mon DIVA SERVER: je l'ai fais. Ensuite j'ai fais un make => make install et reboot de la machine.

Avant j'avais un message d'erreur qui disait qu'un certain fichier n'existait pas , depuis le make menuconfig qui a fonctionné on trouve ce fichier qui je pense pense à été générer.

Now quand je lance ./Build , ca plante tjs et j'ai tjs le message d'erreur suivant :( .

drivers/isdn/capi/capi.c:42:35: error: linux/devfs_fs_kernel.h: Aucun fichier ou répertoire de ce type
drivers/isdn/capi/capi.c: In function ‘capi_init’:
drivers/isdn/capi/capi.c:1513: warning: implicit declaration of function ‘devfs_mk_cdev’
drivers/isdn/capi/capi.c: In function ‘capi_exit’:
drivers/isdn/capi/capi.c:1545: warning: implicit declaration of function ‘devfs_remove’


Alors j'ai installé les headers mais y a rien dedans qui correspondant. Les fichiers qui manquent sont généré par la compilation de make menuconfig non???? ou c'est autre chose?
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 mai 2007 à 09:59
Mmmmh effectivement il n'a pas l'air d'être dans le paquet linux-headers (ou linux-sources) ou linux-sources (comprendre les sources fournies par debian). Par contre il est présent dans les noyaux disponibles sur https://www.kernel.org/

Bonne chance
0
jauneorange
16 mai 2007 à 10:18
Comment je peux faire alors? avec le kernel sur kernel.org? Faire un make menunconfig etc...c'est à dire faire la même procédure?

Si je comprend bien mon erreur, je bloque à la compilation du driver parce qu'il me manque des fichiers.

Peut etre que c'est configurable sur mon menuconfig?
0
Phiphi57 Messages postés 789 Date d'inscription samedi 26 février 2005 Statut Contributeur Dernière intervention 19 juillet 2009 295
16 mai 2007 à 10:37
Salut,

pour compiler un kernel récupéré sur kernel.org, voici la marche a suirvre à préférer pour debian :

1/ récupérer les sources et les mettre dans n'importe quel dossier a toi ...

2/ tar xvfj linux-***.tar.bz2
3/ cd linux-2.6.21 (par exemple...)
4/ make xconfig ou make menuconfig ou make oldconfig , enregistrer le fichier .config
5/ fakeroot make-kpkg clean (nettoyer, on sait jamais)
6/ fakeroot make-kpkg --revision 1 kernel-image (ou kernel_image, je ne sais plus. pour les options, man make-kpkg)
7/ passer en root et make-kpkg modules_image
8/ cd .. && ls -rtl
9/ tu dois voir 2 fichiers .deb : on installe d'abord le nouveau noyau, puis les modules dans la foulée
dpkg -i linux-image*.deb
dpkg -i toto.deb

tu peux faire les 6 premieres étapes en tant que simple utilisateur.

L'avantage de cette approche est d'installer le noyau comme un paquet, géré par apt-get et dpkg, idem pour les modules. Je suis toujours cette approche pour les driver nvidia et le noyau entre autre. Ca doit donc pouvoir aussi fonctionner pour toi ?

Phiphi
0
jauneorange
16 mai 2007 à 10:32
effectivement il est bien dans le kernel que j'ai récupéré sur le site. Mais comment je dois faire pour l'utiliser à la place du kernel source que j'ai pris par apt-get?

Je dois le mettre dans /usr/src/ puis le décompresser? Ensuite un make menuconfig => make => make install ?

Merci encore de ton aide.
0
jauneorange
16 mai 2007 à 11:03
Bon je teste ta manipulation merci de ton aide.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 mai 2007 à 14:04
Oui c'est exactement pareil qu'avec les sources de kernels que tu as récupéré par apt (make menuconfig, make-kpkg, dpkg -i etc... comme Phiphi a dit). Concrètement le paquet debian ne fait qu'installer l'équivalent du tar.gz que tu as récupéré sur kernel.org et deux trois dépendances pour compiler ton noyau dans de bonnes conditions.

Pense bien à corriger le lien /usr/src/linux en conséquence. Suis le tuto que je t'ai donné dans <5> c'est détaillé.

Ensuite tu rebootes sur ce noyau et tu compiles ton module.

Bonne chance
0
jauneorange
16 mai 2007 à 14:08
Mais avant d'aller plus loin, ai je besoin d'aller aussi loin? mdr!!

Car le tuto sur le site de eicon dit qu'ils ont besoin que du kernel source et pas du noyau recompilé. Je comprend rien.

En tout cas je vais essayer de recompiler le noyau et après recompiler les drivers DIVA SERVER.

On verra bien ce que ça donnera à la fin.

Merci de vos aides. J'apprécie.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 mai 2007 à 14:13
Bah si tu rajoutes des trucs via make menuconfig oui il faut le recompiler, bien sûr. De toute façon vu que tu utilises des headers qui ne sont pas dans le noyau fourni par debian (et donc des fonctions qui ne sont pas implémentées dans le noyau debian, cf <7>) il est clair que tu dois compiler le noyau que tu as télécharger sur kernel.org...

Bonne chance
0