[Fédora] .ko et module
Résolu/Fermé
skarsnick
Messages postés
79
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
17 décembre 2009
-
26 mars 2007 à 10:16
cb - 18 avril 2008 à 20:25
cb - 18 avril 2008 à 20:25
A voir également:
- [Fédora] .ko et module
- Persistence module - Forum logiciel systeme
- 1mo en ko ✓ - Forum Matériel & Système
- Hkcmd module ✓ - Forum Virus
- Question : 1mo = 1024 Ko ? ✓ - Forum Disque dur / SSD
- 1 mo combien de ko ✓ - Forum Matériel & Système
4 réponses
mamiemando
Messages postés
33433
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 décembre 2024
7 809
26 mars 2007 à 16:35
26 mars 2007 à 16:35
Bon alors déjà le C n'est pas un script car c'est compilé et pas interprété. Concrètement ça veut dire que le code source est lu par un compilateur qui génère un exécutable et le programme en lui même est dès lors complètement indépendant du code source (contrairement par exemple à un script shell).
Ensuite un .ko est en fait un module, c'est à dire un morceau de kernel que l'on peut charger ou décharger a priori à volonté (voir les commandes modprobe, insmod, rmmod, et lsmod). Vois un module comme un driver (par exemple tu peux avoir un module qui sert à controler ta carte wifi, un autre le "bip" de ta carte mère etc...). Chaque module ne peut être chargé que si ça version correspond à celle du noyau sur lequel tu as démarré. Pour voir ta version de kernel :
Exemple :
Celà signifie que là je ne peux charger que des noyaux pour un noyau 2.6.15-1-686-smp. Les modules correspondants sont dans /lib/modules/2.6.15-1-686-smp/
Quand tu utilises la commande modprobe (qui sert à charger un module), il va automatiquement piocher dans le répertoire associé à ton noyau, contrairement à la commande insmod. Tu peux ensuite vérifier que le module est chargé correctement avec la commande
Pour plus d'informations tape dans une console :
Enfin la ligne dont tu parles dans le makefile sert uniquement à créer les .ko dans le bon répertoire lors de la compilation. Bien sûr la compilation, l'insertion, la suppression de module ne peuvent être faits qu'en root.
Bonne chance
Ensuite un .ko est en fait un module, c'est à dire un morceau de kernel que l'on peut charger ou décharger a priori à volonté (voir les commandes modprobe, insmod, rmmod, et lsmod). Vois un module comme un driver (par exemple tu peux avoir un module qui sert à controler ta carte wifi, un autre le "bip" de ta carte mère etc...). Chaque module ne peut être chargé que si ça version correspond à celle du noyau sur lequel tu as démarré. Pour voir ta version de kernel :
uname -a
Exemple :
(mando@cobo) (~) $ uname -a Linux cobo 2.6.15-1-686-smp #2 SMP Mon Mar 6 15:34:50 UTC 2006 i686 GNU/Linux
Celà signifie que là je ne peux charger que des noyaux pour un noyau 2.6.15-1-686-smp. Les modules correspondants sont dans /lib/modules/2.6.15-1-686-smp/
Quand tu utilises la commande modprobe (qui sert à charger un module), il va automatiquement piocher dans le répertoire associé à ton noyau, contrairement à la commande insmod. Tu peux ensuite vérifier que le module est chargé correctement avec la commande
lsmod
Pour plus d'informations tape dans une console :
man rmmod man lsmod man modprobe man insmod
Enfin la ligne dont tu parles dans le makefile sert uniquement à créer les .ko dans le bon répertoire lors de la compilation. Bien sûr la compilation, l'insertion, la suppression de module ne peuvent être faits qu'en root.
Bonne chance
Bonjour,
j'écris un script pour insérer automatiquement le fichier driver (insmod *.ko) mais avant ça, je voulais créer un test pour voir si celui-ci existe déjà afin d'éviter le message "déjà existant...". Cependant, je n'arrive pas à faire ce test avec lsmod...
Si vous avez une idée pour compléter mon script... car google n'est pas mon ami sur ce coup là :(
#!/bin/sh
echo -n "Nom du driver"
read Name
if # A compléter pour tester si le driver est déjà inséré
then
echo "Driver déjà inséré"
else
echo "Insertion du driver"
insmod c Name 250 0
fi
j'écris un script pour insérer automatiquement le fichier driver (insmod *.ko) mais avant ça, je voulais créer un test pour voir si celui-ci existe déjà afin d'éviter le message "déjà existant...". Cependant, je n'arrive pas à faire ce test avec lsmod...
Si vous avez une idée pour compléter mon script... car google n'est pas mon ami sur ce coup là :(
#!/bin/sh
echo -n "Nom du driver"
read Name
if # A compléter pour tester si le driver est déjà inséré
then
echo "Driver déjà inséré"
else
echo "Insertion du driver"
insmod c Name 250 0
fi
mamiemando
Messages postés
33433
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 décembre 2024
7 809
7 avril 2008 à 16:23
7 avril 2008 à 16:23
if [ `lsmod | grep nom_du_module | wc -l` -ge 1 ] ; then echo "déjà inséré"; fi
Bonne chance
Je n'étais vraiment pas loin au apostrophes près :( j'ai du mal avec les " et les ', il faudra que je révise tout ça...
Sinon, j'ai remarqué que lorsqu'on insère un fichier mon_module-driver.ko, il apparait sous la forme mon_module_driver dans le lsmod, donc en adaptant légèrement, ça marche nickel !
Un grand merci à toi ;)
Sinon, j'ai remarqué que lorsqu'on insère un fichier mon_module-driver.ko, il apparait sous la forme mon_module_driver dans le lsmod, donc en adaptant légèrement, ça marche nickel !
Un grand merci à toi ;)
mamiemando
Messages postés
33433
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 décembre 2024
7 809
14 avril 2008 à 10:49
14 avril 2008 à 10:49
Les " ... " et les ' ... ' c'est pareil. L'avantage c'est des "..." c'est qu'on peut mettre des ' dans la chaîne entre "..." sans avoir à taper \'.
Par contre les ` ... ` ça veut dire tout autre chose : ça signifie récupérer le résultat de la commande entre ` ... `
Bonne continuation
Par contre les ` ... ` ça veut dire tout autre chose : ça signifie récupérer le résultat de la commande entre ` ... `
Bonne continuation