[linux k2.6] Comment gérer le chargement auto d'un .ko

Comment gérer le chargement auto d'un .ko [linux k2.6] - Linux et OS Alternatifs

Marsh Posté le 07-10-2005 à 14:59:00    

Bonjour à tous.
 
J'ai interfacé des caméras usb à l'aide d'un module usb, que je génère sous la forme d'un fichier monmodule.ko.
Si je fais "insmod monmodule.ko", il se lance bien et tout fonctionne.
 
Je souhaiterai faire en sorte que le module ne soit chargé que si le device correspondant est pluggué. Je crois que cela est possible avec ce nouveau kernel (2.6) mais je n'ai pas réussi à trouver la solution.
 
J'ai gunzippé mon fichier en monmodule.ko.gz, je l'ai copié dans /lib/modules/2.6.8.1-12mdk/kernel/drivers/usb/misc/ et j'ai essayé de rebooté (avec le device pluggué au PC), cela ne fonctionne pas.
J'ai en plus rajouté les lignes correspondant à mon device (IdProd et IdVend) dans les fichiers /etc/hotplug/usb.usermap et dans lib/modules/2.4.20-8/modules.usbmap mais cela ne fonctionne toujours pas.
 
Est-ce que je dois copier le fichier .ko.gz ailleurs ? Est-ce que je dois configurer d'autres ficheirs ? Est-ce nécessaire d'éditer les fichiers usb.usermap et modules.usbmap ?
Je suis un peu perdu donc si certains d'entre vous connaissent la solution ...
 
Merci d'avance.

Reply

Marsh Posté le 07-10-2005 à 14:59:00   

Reply

Marsh Posté le 07-10-2005 à 16:52:25    

J'avance un peu ...
J'ai viré les lignes dans usb.usermap et modules.usbmap mais j'ai laissé le fichier monmodule.ko.gz dans  /lib/modules/2.6.8.1-12mdk/kernel/drivers/usb/misc/.
 
J'ai lancé, sous root, la comande depmode, ce qui a pour effet d'ajouter dans le fichier /lib/modules/2.6.8.1-12mdk/modules.dep, la ligne :
/lib/modules/2.6.8.1-12mdk/kernel/drivers/usb/misc/monmodule.ko.gz: /lib/modules/2.6.8.1-12mdk/kernel/drivers/usb/core/usbcore.ko.gz
 
Je reboote la machine et la, super, mon module est bien lancé à l'initialisation. Mon problème est maintenant que le module, lors de son appel à usb_register_dev, me crée un fichier /dev/myname. Fichier qui est ensuite ouvert/fermé/écrit/lu lors de la communication avec le device.
 
Le souci, c'est que les droits d'accès sur ce fichiers sont rw uniquement pour root, et pas pour les autres utilisateurs.
 
J'utilisais auparavant la commande :  
mknod -m 666 /dev/myname c 180 0, qui elle donnait les bons droits d'accès,  
 
... mais comment faire pour que mon module donne tout seul les bons droits ... ??? Est-ce une option de la fonction usb_register_dev() ???
 
Merci encore d'avance :D


Message édité par allawos le 07-10-2005 à 16:55:03
Reply

Marsh Posté le 07-10-2005 à 17:05:14    

Bon OK, manifestement, il faut mettre la bonne valeur à l'attribut  mode du usb_classe_driver ... reste plus qu'à trouver quel flag permet de spécifier 666 ...

Reply

Marsh Posté le 07-10-2005 à 17:14:07    

Je comprend pas :( ... j'ai mis ca dans le mode de mon usb_class_driver :
S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
Ce qui, si je comprend bien donne les droits en lecture/ecriture à tout le monde ... et ca change rien au niveau de mon /dev/myname ...
 
... personne a une idée ???

Reply

Marsh Posté le 07-10-2005 à 18:22:40    

pour créer les fichiers dans /dev quand la caméra est branchée et attribuer les bons droits, regarde du coté de udev et /etc/udev
 
pour charger le module au démarrage, place le dans /etc/modprobe.preload
 
pour autocharger le module au branchement, devfs le faisait mais je sais pas si udev peut le faire (surement mais j'en sais pas plus)


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 08-10-2005 à 16:25:59    

udev ne le peut ps, mais hotplug peut s'en chargé.
 
lors que tu branches le devices, le noyau et/ou hotplug consulte la table de pci id, cela entraine une action de hotplug si cela correspond qui peut se charger de charger le module.


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

Marsh Posté le 10-10-2005 à 09:43:49    

Pourtant ce que je lis sur udev semble correspondre ... pour que le node /dev/myname soit créé si le device est pluggué.
Je jetterai un oeuil à hotplug quand m^eme ... merci bien !
 
...mais du coup, je vais reposer ma question, car mon problème se situe plus au niveau du node /dev/myname, qui est généré automatiquement lorsque le module est lancé.
Je n'arrive pas à faire en sorte que les droits d'accès sur ce fichier soient corrects ... :(


Message édité par allawos le 10-10-2005 à 12:56:12
Reply

Marsh Posté le 10-10-2005 à 18:10:19    

les droits d'accès se conf au niveau de udev. cf /etc/udev/rules.d/


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

Marsh Posté le 11-10-2005 à 09:51:52    

Euh ... les droits d'accès du node /dev/mydevice ... créé automatiquement par le module ... se configurent au niveau de udev ????
 
Parcequ'en fait j'ai laissé tomber l'idée de charger le module uniquement lorsque le device est pluggué,
mais j'aurais voulu pouvoir utiliser le node qu'il créé automatiquement : /dev/mydevice
...donc en lui filant les bons droits.
J'ai reposé ma question ici :
http://forum.hardware.fr/hardwaref [...] -1.htm#bas
 
... est-ce que c'est nécessaire de passer par udev pour ca ?

Reply

Marsh Posté le 11-10-2005 à 16:33:09    

tu peux donner des droits par défaut lorsque tu charge le module, mais souvent udev passe derrière et applique ses propres droits si le device correspond à un des devices qu'il gère ( au niveau de la classe, etc ... )


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

Marsh Posté le 11-10-2005 à 16:33:09   

Reply

Marsh Posté le 13-10-2005 à 10:08:35    

OK, merci pour toutes ces infos, comme je l'ai dit dans l'autre post, j'ai effectivement pu, en configuratant /etc/udev/permissions.d/ ... , forcer udev à me créer le device avec les bons droits !

Reply

Sujets relatifs:

Leave a Replay

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