Comment gérer le chargement auto d'un .ko [linux k2.6] - Linux et OS Alternatifs
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
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 ...
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 ???
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)
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.
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 ...
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/
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 ?
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 ... )
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 !
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.