Skip to topic | Skip to bottom
Home
Minfo06
Minfo06.TpAsy2r1.3 - 18 Nov 2006 - 17:44 - GuillaumeChazaraintopic end

Start of topic | Skip to actions

Rappels TP précédent

1. Si vous n'avez pas de qemu et qemu-img installés, exécutez la commande ln -s ~cg052805/bin/qemu{,-img} ~/bin/

2. Si vous n'avez pas l'image de la machine virtuelle, exécutez la commande bunzip2 -c ~cg052805/TPLinux/centos-3.8.bz2 > /var/tmp/centos-3.8

3. Pour vous faciliter la création des images COW, ln -s ~cg052805/bin/newimage ~/bin/ puis lancez la commande newimage en lui précisant le chemin de l'image COW à créer. Pour des raisons de performance (NFS), il est conseiller de mettre l'image COW sur /tmp ou /var/tmp plutôt que sur votre compte.

4. Pour simplifier l'accès à votre compte dans la machine virtuelle, ln -s ~cg052805/bin/myqemu ~/bin/, puis lancez qemu en utilisant la commande myqemu. Vous n'aurez plus qu'à exécuter /mount_account dans la machine virtuelle, répondre yes puis entrer votre mot de passe et votre compte sera visible sous /home/$LOGIN.

Paramètres et version d'un module

1. Créez un module asy_tp2_param qui accepte un paramètre entier n et une chaîne de caractères et faites en sorte qu'il affiche n fois la chaîne de caractères lors de son chargement dans le noyau. Testez ce module.

2. Faites en sorte que le module précédent se charge à l'aide de la commande modprobe. Quand vous avez trouvé les opérations qui le permettent, ajoutez une cible install à votre makefile de façon à automatiser la procédure.

3. Modifiez la configuration du système de sorte que lors de son chargement avec la commande modprobe, le module ne soit plus chargé avec les valeurs par défaut de ses paramètres, mais avec d'autres valeurs de ces deux paramètres. Et testez que tout cela fonctionne correctement.

4. Ajoutez au module précédent les instructions qui lui interdisent de se charger si la version du noyau est inférieure à 2.4.30 et testez qu'il refuse bien de se charger. Modifiez-le maintenant pour qu'il ne se charge que si le noyau est un noyau 2.4.

5. Complétez-le maintenant avec ce qu'il faut pour que la commande modinfo retourne des informations utiles à propos de votre module.

Dépendances entre modules

1. Créez un module hello.o qui :

  • Affiche son nom lors de son chargement
  • Affiche son nom lors de son déchargement
  • Offre un service print_hello() qui consiste à afficher la chaîne "Hello, "

2. Créez un module world.o qui :

  • est dépendant du module hello.o
  • lors de son chargement :
    • affiche son nom
    • utilise le service print_hello()
    • affiche ="world !"
  • lors de son déchargement : * affiche son nom

3. Installez les modules précédents de façon que le chargement du second provoque automatique le chargement du premier. Et vérifiez que ça fonctionne bien.

4. Ajoutez deux services (start et stop) au module hello, l'un permettant d'augmenter son compteur de référence, et l'autre de le dimminuer. Créez ensuite deux modules supplémentaires starter.o et stopper.o, qui font chacun appel à l'un des deux services précédents. Vous vérifierez ensuite que pour que le module hello.o puisse être déchargé, il faut avoir chargé puis déchargé autant de fois le module starter.o que le module stopper.o :

  • Exemple de séquence sans échec :
modprobe world.o
modprobe starter.o
modprobe stopper.o
modprobe -r world.o starter.o stopper.o
  • Exemple de séquence qui doit échouer :
modprobe world.o
modprobe starter.o
modprobe -r world.o starter.o

Afficher la liste des modules

Ecrivez un module lsmod.o qui affiche la liste de tous les modules chargés dans le noyau. Attention, comme expliqué en cours, pour écrire ce module vous aurez besoin d'un symbole du noyau qui n'est pas directement accessible à partir d'un module : module_list. Comme il n'est pas question pour l'instant de modifier le noyau, vous opterez pour la méthode "sale" présentée en cours (recherche du symbole dans le fichier System.map ). Les plus courageux d'entre-vous pourront chercher une solution afin d'automatiser la récupération de ce symbole lors de la compilation, à l'aide du makefile.

-- GuillaumeChazarain - 04 Oct 2006
to top


You are here: Minfo06 > TpAsy2

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback