Module du noyau «Hello World»

Module du noyau «Hello World»
Ceci est l'article pour la personne qui commence juste par les modules du noyau Linux. Nous utiliserons l'exemple d'exemple de code pour ce module et le makefile à utiliser pour compiler le module du noyau. Plus tard, nous passerons par les étapes pour exécuter le module du noyau et afficher la sortie du module «Hello World».

Module «Hello World»:

Il s'agit d'un module de noyau simple, qui, lorsqu'il est inséré sur le noyau Linux, imprimera le message comme «Hello World». Et en le supprimant, il imprimera le message comme «Bye Bye World!". Ce sont les deux fonctions que nous soutiendrons dans le module de noyau «Hello World».

Exemple d'exemple de code pour le module du noyau:

#inclure
#inclure
#inclure
Module_license ("gpl");
Module_description ("Hello World!");
statique int __init hello_init (void)

printk (kern_info "Hello world \ n");
retour 0;

statique void __exit hello_exit (void)

printk (kern_info "bye bye world \ n");

module_init (hello_init);
module_exit (hello_exit);

Échantillon de makefile pour compiler le module du noyau:

OBJ-M = Hello-World.o
tous:
Make -c / lib / modules / $ (shell uname -r) / build / m = $ (pwd) modules
faire le ménage:
faire -c / lib / modules / $ (shell uname -r) / build m = $ (pwd) propre

Étapes pour compiler le module du noyau:

Copiez les deux extraits de code ci-dessus dans le même répertoire de l'hôte de construction ci-dessous:

Sushilrathore-2: ~ / Hello-world $ ls
Bonjour le monde.c Makefile
Sushilrathore-2: ~ / Hello-World $

Exécutez la commande Make comme indiqué ci-dessous et nous verrons les journaux comme ci-dessous:

Sushilrathore-2: ~ / Hello-world $ make
faire -c / lib / modules / 4.15.0-163 générique / build / m = / home / cienauser / Hello-world modules
Make [1]: Entrer le répertoire '/ usr / src / linux-headers-4.15.0-163-Générique '
CC [M] / Home / Cienauser / Hello-World / Hello-World.o
Modules de construction, étape 2.
Modules modpost 1
CC / Home / Cienauser / Hello-World / Hello-World.mod.o
Ld [m] / home / cienauser / hello-world / hello-world.ko
Make [1]: Laisser le répertoire '/ usr / src / linux-headers-4.15.0-163-Générique '
Sushilrathore-2: ~ / Hello-World $

À partir des journaux ci-dessus, nous pouvons voir que nous avons exécuté la commande de Make et que nous obtiendrons des fichiers créés dans le même répertoire où nous avons C et Makefile. "Bonjour le monde.ko "est le fichier que nous devrions regarder. Ceci est le fichier d'objet du noyau. Ceci est le module que nous insérerons dans le noyau Linux.

Étapes pour ajouter le module Hello-World au noyau Linux:

La commande INSMOD peut être utilisée pour insérer le module du noyau sur le noyau Linux. Ce qui suit est le journal qui montre le processus d'utilisation de l'insmod.

Sushilrathore-2: ~ / Hello-world $ sudo insmod Hello-world.ko
Sushilrathore-2: ~ / Hello-World $

Étapes pour voir le message imprimé par Hello-World:

«DMESG» est que la commande peut être utilisée pour voir la sortie du module Hello World Kernel. Ce qui suit est le journal qui montre le processus d'utilisation de la commande DMESG.

Sushilrathore-2: ~ / Hello-World $ sudo dmesg | grep -i bonjour
[10500712.434672] Bonjour le monde
Sushilrathore-2: ~ / Hello-World $

Ci-dessus est le processus d'ajout de module de noyau dynamiquement. Il est compilé en dehors de l'image du noyau et à l'exécution est ajouté à l'image du noyau. De cette façon, pendant que le noyau fonctionne, nous pouvons élargir la fonctionnalité du noyau.

Linux fournit cette façon d'extenser les fonctions du noyau sans faire tomber le système. L'utilisateur doit être très prudent lors de l'écriture de tels modules. Lors du déchargement du module du noyau, l'utilisateur doit libérer soigneusement toutes les ressources qui ont été allouées lorsque le module a été chargé.

HELLO WORLD Le module peut également être ajouté dans le cadre de l'image du noyau. Si l'utilisateur souhaite ajouter l'application Hello World dans le cadre de l'image du noyau.

Les étapes suivantes peuvent être suivies pour y parvenir:

  1. Identifiez le chemin dans l'arbre du noyau où cela doit être ajouté.
  2. Modifiez le Kconfig pour introduire le nouveau module.
  3. Modifiez le makefile pour ajouter le nouveau module.
  4. Mettez à jour le fichier de configuration si le module sera ajouté en fonction d'un fichier de configuration.

Comment compiler le module qui a été ajouté dans ces 4 étapes.

Le noyau Makefile définit les «modules» comme une cible de construction qui peut être utilisée pour construire tous les modules du noyau Linux. Une fois que l'utilisateur émet les «modules de fabrication», notre module Hello World / New est également compilé et nous obtenons le .Fichier KO du module.

Cette façon de compilation est facile lorsque nous avons besoin de construire le noyau complet et notre module que nous voulons ajouter dans le système en tant que module chargé.

Conclusion

Nous avons discuté du module de noyau World Simple Hellod et différentes façons de compiler le module.

Nous avons également discuté des moyens d'ajouter le module au noyau Linux. Nous avons également fait référence à l'exemple de code et de makefile pour la compilation. De plus, nous avons démontré les concepts avec les journaux expérimentaux.