[Expliqué]Pourquoi doit-on compiler son driver?

Pourquoi doit-on compiler son driver? [Expliqué] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 26-12-2006 à 19:14:59    

Bonjour,
 
J'ai récupéré une carte 3com (3c996b-t) à base de chipset Broadcom (bcm5700).
Sur le site de 3com, un driver est disponible sous license GNU GPL:
http://www.3com.com/products/en_US [...] order=desc
 
Après décompression, plusieurs versions disponibles dans Server/Linux/Driver celle que j'utilise est:
bcm5700-8.2.18.tar.gz
 
Lorsque j'essaie de le compiler, voici ce que j'obtiens:
 
homer:~/bcm5700-8.2.18/src# make
make -C  SUBDIRS=/root/bcm5700-8.2.18/src modules
make: *** SUBDIRS=/root/bcm5700-8.2.18/src: Aucun fichier ou répertoire de ce type. Arrêt.
make: *** [default] Erreur 2
homer:~/bcm5700-8.2.18/src#
 
Pourquoi doit-on compiler son propre driver(si ce-dernier n'est pas déjà inclus dans le noyau), ne pourrait-on pas récupérer une version précompilée pour son architecture?
 
Il doit manifestement y avoir une bonne raison qui m'échappe...
 
Merci d'avance pour votre aide  :hello:


Message édité par kryzantem le 29-12-2006 à 22:49:04
Reply

Marsh Posté le 26-12-2006 à 19:14:59   

Reply

Marsh Posté le 26-12-2006 à 21:08:25    

pas d'idée?

Reply

Marsh Posté le 26-12-2006 à 21:16:05    

Ca par contre c'est laid :
 
homer:~/bcm5700-8.2.18/src# make
make -C  SUBDIRS=/root/bcm5700-8.2.18/src modules


Message édité par alien conspiracy le 26-12-2006 à 21:16:28
Reply

Marsh Posté le 26-12-2006 à 21:16:59    

Sinon le driver n'est pas inclus directement dans ta distrib ?

Reply

Marsh Posté le 26-12-2006 à 21:25:53    

non, le driver n'est pas inclu dans le noyau(2.6.18).
Qu'est ce qu'il devrait y avoir comme répertoire dans SUBDIRS à la place?

Reply

Marsh Posté le 26-12-2006 à 21:49:19    

Tu  es loggués en root c'est ca que j'ai voulu faire remarquer.  
 
C'est quoi ta distribution ?

Reply

Marsh Posté le 26-12-2006 à 23:30:34    

Tout d'abord merci pour tes réponses.
 
Je ne suis pas dans ma session graphique habituelle et je n'utilise pas la session root comme session de tous les jours. Cependant, vu que je dois faire une tâche nécessitant des droits systèmes,(ajout du driver compilé dans /lib/modules/...etc...), je suis bien obligé d'opérer en tant que root..
 
Ma distribution c'est Debian Sarge.
 
Sinon pour mon problème, j'ai trouvé, il me manquait des sources (paquets kernel-headers + kernel-source correspondants à mon noyau)
Ca me paraît une abomination maintenant que j'ai compris le processus de compilation et tout et tout...  ;)  
 
Sinon je ne sais toujours pas pourquoi on ne trouve que des sources de drivers sur internet et jamais de version pré-compilé(exception faite des drivers propriétaires naturellement :)).
Je ne suis pas en train de dire que ce serait mieux bien au contraire mais je me mets à la place du novice qui n'a jamais entendu parler de compilation(je reconnais que j'éxagère un peu car linux et novice généralement ça fait pas bon ménage) et qui veut quelque chose de fonctionnel et de rapide à mettre en oeuvre.
"Mais c'est pas long de compiler un driver, pis en plus c'est adapté à son système?" me direz-vous; maintenant que je l'ai fait, je me rends compte que c'est clair que c'est pas spécialement long certes, sauf kan on sé pa comment ki fo faire  :pt1cable:  
 
:d
 
j'attends vos réactions :hello:

Message cité 2 fois
Message édité par kryzantem le 26-12-2006 à 23:40:25
Reply

Marsh Posté le 26-12-2006 à 23:55:31    

kryzantem a écrit :

Tout d'abord merci pour tes réponses.
 
Je ne suis pas dans ma session graphique habituelle et je n'utilise pas la session root comme session de tous les jours. Cependant, vu que je dois faire une tâche nécessitant des droits systèmes,(ajout du driver compilé dans /lib/modules/...etc...), je suis bien obligé d'opérer en tant que root..
 
Ma distribution c'est Debian Sarge.
 
Sinon pour mon problème, j'ai trouvé, il me manquait des sources (paquets kernel-headers + kernel-source correspondants à mon noyau)
Ca me paraît une abomination maintenant que j'ai compris le processus de compilation et tout et tout...  ;)  
 
Sinon je ne sais toujours pas pourquoi on ne trouve que des sources de drivers sur internet et jamais de version pré-compilé(exception faite des drivers propriétaires naturellement :)).
Je ne suis pas en train de dire que ce serait mieux bien au contraire mais je me mets à la place du novice qui n'a jamais entendu parler de compilation(je reconnais que j'éxagère un peu car linux et novice généralement ça fait pas bon ménage) et qui veut quelque chose de fonctionnel et de rapide à mettre en oeuvre.
"Mais c'est pas long de compiler un driver, pis en plus c'est adapté à son système?" me direz-vous; maintenant que je l'ai fait, je me rends compte que c'est clair que c'est pas spécialement long certes, sauf kan on sé pa comment ki fo faire  :pt1cable:  
 
:d
 
j'attends vos réactions :hello:

Pour un novice tu n'a pas choisi la meilleur distrib, tu ne t'es pas bien renseigner avant de choisir. Et si  on ne trouve pas de driver précompilé  c'est parcqu'il faudrait en faire un pour chaque version de noyau, et plus généralement les dévéloppeurs fournissent les sources et c'est aux dévéloppeurs de la distrib de fournir les paquets précompiler pour leur distrib.

Reply

Marsh Posté le 26-12-2006 à 23:56:34    

Pour le Root renseigne toi sur l'utilisation de su (et j'insiste parcque  ce logguer dans une session graphique comme root c'est le mal).

Reply

Marsh Posté le 27-12-2006 à 08:43:31    

heuu bcm5700 c'est pas remplacé par tg3 :heink:

Reply

Marsh Posté le 27-12-2006 à 08:43:31   

Reply

Marsh Posté le 27-12-2006 à 10:03:48    

Sinon une solution, au moins d'attente, peut être de passer par ndiswrapper, si ça marche.
Ce n'est pas très "propre", mais ça permet de patienter le temps de compiler le vrai driver.
Chez moi je l'utilise pour une carte Wifi linksys qui n'est pas supportée, et ça marche nickel en 24h/24.

Reply

Marsh Posté le 27-12-2006 à 11:57:13    

alien cons piracy>

kryzantem a écrit :

Tout d'abord merci pour tes réponses.
Je ne suis pas dans ma session graphique habituelle et je n'utilise pas la session root comme session de tous les jours. Cependant, vu que je dois faire une tâche nécessitant des droits systèmes,(ajout du driver compilé dans /lib/modules/...etc...), je suis bien obligé d'opérer en tant que root..


 
Je passe déjà par su.
Pour info, c'est pas parce que j'ai eu quelques problèmes pour compiler que je suis novice.
En effet, Debian fait bien les choses et on ne doit pas souvent recompiler ses propres pilotes car la plupart sont inclus sous formes de modules du noyau pré-compilé.
 

M300A a écrit :

heuu bcm5700 c'est pas remplacé par tg3 :heink:


C'est fort possible; maintenant que t'en parles je vois dans la liste de mes modules qu'il y en a un qui s'appelle tg3, si ça se trouve le pilote était présent dans le noyau mais n'a pas été chargé automatiquement...?? Je n'avais rien à compiler, c'est juste que le pilote n'était pas charger automatiquement.
D'ailleurs comment LINUX sait quels pilotes charger sachant que certains le sont automatiquement au démarrage MAIS n'apparaissent pas dans /etc/modules.. là encore j'ai besoin de vos lumières...
 
 

ph75 a écrit :

Sinon une solution, au moins d'attente, peut être de passer par ndiswrapper, si ça marche.
Ce n'est pas très "propre", mais ça permet de patienter le temps de compiler le vrai driver.
Chez moi je l'utilise pour une carte Wifi linksys qui n'est pas supportée, et ça marche nickel en 24h/24.


Oui enfin je trouve dommage de ne pas profiter d'un driver disponible juste parce qu'on a des problèmes à compiler, non? Ndis Wrapper ça doit sauver pas mal de monde qui se retrouve avec une carte wifi sans driver pour linux  :)

Message cité 1 fois
Message édité par kryzantem le 27-12-2006 à 11:59:31
Reply

Marsh Posté le 27-12-2006 à 12:55:46    

kryzantem a écrit :

alien cons piracy>
 
 
Je passe déjà par su.
Pour info, c'est pas parce que j'ai eu quelques problèmes pour compiler que je suis novice.
En effet, Debian fait bien les choses et on ne doit pas souvent recompiler ses propres pilotes car la plupart sont inclus sous formes de modules du noyau pré-compilé.
 
 
C'est fort possible; maintenant que t'en parles je vois dans la liste de mes modules qu'il y en a un qui s'appelle tg3, si ça se trouve le pilote était présent dans le noyau mais n'a pas été chargé automatiquement...?? Je n'avais rien à compiler, c'est juste que le pilote n'était pas charger automatiquement.
D'ailleurs comment LINUX sait quels pilotes charger sachant que certains le sont automatiquement au démarrage MAIS n'apparaissent pas dans /etc/modules.. là encore j'ai besoin de vos lumières...
 
 
 
Oui enfin je trouve dommage de ne pas profiter d'un driver disponible juste parce qu'on a des problèmes à compiler, non? Ndis Wrapper ça doit sauver pas mal de monde qui se retrouve avec une carte wifi sans driver pour linux  :)


Oké je croyais que tu découvrais, excuse moi.  
Normalement il n'y a  que  make install qui necessite les privilèges root, c'est  pour ca que je pensais que tu avait ouvert une session graphique en root.

Reply

Marsh Posté le 27-12-2006 à 14:28:32    

pas de problèmes, en tout cas, ça m'a permis de me rendre compte que (quand t'as les bons paquets) c'est trivial de compiler et qu'un système sur mesure n'est pas une tâche inacessible après tout...
 
Merci pour tes réponses :)

Reply

Marsh Posté le 27-12-2006 à 16:45:55    

Tu t'en est sorti finalement?
 
Si c'est du broadcom net extrem etc je suis quasiment sur que le module à utiliser est tg3.
 
Si c'est plus récent tu as les modules bnx et bnx2 dans les 2.6.18.
 
Ceci dit, udev te chargera automatiquement les bons modules pour ton matos, donc si tu as tg3 de loadé...

Reply

Marsh Posté le 27-12-2006 à 18:44:04    

raison qui fait qu'il faut compiler les drivers : le noyau Linux n'a pas une API stabilisé ( idem pour l'ABI ). Donc il faut recompiler les modules afin qu'ils utilisent la bonne ABI. Dans le cas du changement de l'API, une recompilation ne suffit pas ( il faut modifier les sources ). De plus même pour un même noyau, utiliser une version différente de GCC pour compiler le noyau et le module peut poser problème notamment parce que gcc peut changer l'ABI.
API : http://fr.wikipedia.org/wiki/Inter [...] grammation
ABI : http://en.wikipedia.org/wiki/Appli [...] _interface
pkoi le noyau linux n'a pas une API stabilisée : http://www.kroah.com/log/linux/sta [...] sense.html


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 28-12-2006 à 15:26:58    

Dark_Schne ider> Merci pour tes précisions :jap:
 
M300A> Oui, je crois que je me suis précipité dans la compilation d'un driver bcm5700 (obsolète qui plus est)  parce que lorsque j'ai enfiché mar carte PCI, elle n'a pas été détectée...
Au bout du compte, il me semble que c'est un slot PCI défectueux qui a provoqué le problème parce tg3 est présent dans mes modules et un # rmmod tg3 entraîne la disparition de l'ethX.
De plus, une carte fonctionnelle et disposant d'un pilote adéquate ne marche pas non plus dans ce même slot..
 
Je ne sais pas s'il y a une quelconque corrélation avec le module bcm5700 mais lorsque je supprime ce dernier, j'ai un message au boot m'indiquant que bcm5700 est absent :??:...
A investiguer
 
Au final, j'aurais au pire appris des choses :)
++


Message édité par kryzantem le 28-12-2006 à 16:05:26
Reply

Marsh Posté le 18-01-2007 à 09:02:17    

M300A a écrit :

Tu t'en est sorti finalement?
 
Si c'est du broadcom net extrem etc je suis quasiment sur que le module à utiliser est tg3.
 
Si c'est plus récent tu as les modules bnx et bnx2 dans les 2.6.18.
 
Ceci dit, udev te chargera automatiquement les bons modules pour ton matos, donc si tu as tg3 de loadé...


 
 
j ai le meme probleme. j ai le pilote tg3 mais  
il ne reconnait pas la carte au boot
et un insmod tg3.o envoie des messages d errurs...vous croyez quil faut recompiler le pilote?
j ai aussi entendu parler de pb de noyau?

Reply

Marsh Posté le 21-01-2007 à 14:14:44    

Qu'as tu comme version de noyau ?
C'est tg3.ko qu'il faut charger  
/lib/modules/$(uname -r)/kernel/drivers/net/tg3.ko
 
moi aussi au premier reboot, il ne me l'a pas détecté mais comme je l'ai dis précédemment je soupçonne un problème de port PCI défectueux.
 
Regarde avec lsmod si tg3 fait partie des modules qui sont chargés


Message édité par kryzantem le 21-01-2007 à 14:15:10
Reply

Marsh Posté le 23-01-2007 à 15:22:40    

salut j ai telecharger TG3 sur broadcom et je l ai mi dans "home" sur ma machine fedora core 1
 
je lit le fichier .txt avec le fichier que j ai dl et la je suis l instruction
 
tar xvzf tg3-3.ver.tar.gz
la il me dezip le fichier si j ai bien compris parce que je debute sous linux.
 
enssuite je continu et la j ai "src make" ou est src pour fair make ??? /usr/src ??? ou c tout autre chose ?
 
bref je bloque i need help pleas merci d avance

Reply

Marsh Posté le 24-01-2007 à 11:25:52    

tu te rends dans le répertoire des sources de tg3 puis tu fais make, il faut au préalable que tu aies les paquets kernel-headers voire kernel-source de  ta distrib (correspondant donc à ton  noyau).
 
Renseignes toi sur comment compiler puis installer un driver, par exemple sur lea-linus: site très instructif pour les débutants..
:hello:

Reply

Marsh Posté le 24-01-2007 à 13:42:20    

merci j y go dessuite je pensse que l prob est la puisque qd j execute insmod tg3.o ou ok ou modprob tg3.o ok sa me dit modul introuvable
 
si vs avez d autre info je prend merci go to lea ^^

Reply

Marsh Posté le 24-01-2007 à 14:07:55    

:o  tu n'as pas été voir sur léa toi  ;)

 

il faut faire :

 

sudo modprobe tg3

 

sans extension...


Message édité par Velhcro le 24-01-2007 à 14:08:09
Reply

Marsh Posté le 24-01-2007 à 14:38:13    

Sur mon ultra-portable j'utilise Debian Etch depuis un bon bout de temps déjà et je n'ai jamais eu de problème avec le module tg3 (y compris lors de l'installation -ça devait être une beta2 de l'installateur).
 
En gros ça à fonctionné tout seul dès le départ avec un noyau version 2.6.15 + udev, et ça fonctionne toujours (heureusement  :D ) avec un 2.6.16 (oui je sais il y a le 2.6.18 sous Etch, pour l'instant je n'ai pas fait la transition).
 
Extrait d'un lscpi (info sur mon chipset broadcom utilisant tg3) :


[...]
01:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
[...]


---------------
THRAK (def.) : 1) A sudden and precise impact moving from intention, direction and commitment, in service of an aim. 2) 117 guitars almost striking the same chord simultaneously.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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