Que signifie le module Linux ?

WBOY
Libérer: 2022-03-04 11:20:55
original
2959 Les gens l'ont consulté

Sous Linux, un module est un moyen d'ajouter des pilotes de périphériques, des systèmes de fichiers et d'autres composants au noyau Linux. Il s'agit d'un ensemble de fonctions et de types de données qui peuvent être compilés en tant que programme indépendant, via des méthodes statiques ou dynamiques. Chargé dans l'espace du noyau.

Que signifie le module Linux ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Que signifie le module Linux ?

Module est une méthode qui peut ajouter des pilotes de périphériques, des systèmes de fichiers et d'autres composants au noyau Linux. Il ne nécessite pas de recompilation du noyau ni de redémarrage du système. Pour le noyau, il doit gérer le chargement et le déchargement des modules ainsi que les dépendances entre les modules. Parce que le module s'exécute dans l'espace du noyau, le module doit utiliser les fonctions fournies par le noyau. Nous pouvons également utiliser le module pour appeler la fonction du noyau correspondante, qui est une méthode de programmation en mode noyau. L'essence d'un fichier de module est un fichier binaire déplaçable, généralement sous la forme de *.ko.

Les modules Linux peuvent être chargés dans l'espace du noyau via des méthodes statiques ou dynamiques. Le chargement statique fait référence au chargement pendant le processus de démarrage du noyau ; le chargement dynamique fait référence au chargement à tout moment pendant l'exécution du noyau. Lorsqu'un module est chargé dans le noyau, il devient partie intégrante du code du noyau. Lorsqu'un module est chargé dans le système, le système modifie la table des symboles dans le noyau et ajoute les ressources et les symboles fournis par le module nouvellement chargé à la table des symboles du noyau pour faciliter la communication entre les modules.

Utilisation des modules

Composition des modules

Le module du noyau Linux se compose principalement des parties suivantes :

Fonction de chargement du module (obligatoire) : lors du chargement du module du noyau via la commande insmod, la fonction de chargement du module sera automatiquement Exécution du noyau pour terminer le travail d'initialisation lié à ce module ;

Fonction de déchargement du module (obligatoire) : Lorsque le module est déchargé via la commande rmmod, la fonction de déchargement du module sera automatiquement exécutée par le noyau, complétant la fonction opposée au module. fonction de chargement ;

Autorisation du module Déclaration de licence (obligatoire) : L'instruction de licence du module (LICENSE) décrit les autorisations du module du noyau. Si LICENSE n'est pas déclarée, le module recevra un avertissement indiquant que le noyau est contaminé lorsque le module est chargé. .

Paramètres du module (facultatif) : les paramètres du module sont des valeurs qui peuvent être transmises au module lors de son chargement, qui correspondent elles-mêmes aux variables globales à l'intérieur du module ;

Symboles d'exportation du module (facultatif) : les modules du noyau peuvent exporter des symboles ; (symbole, correspondant à une fonction ou une variable), afin que d'autres modules puissent utiliser des variables ou des fonctions dans ce module

Auteur du module et autre déclaration d'informations (facultatif).

Exemple de module :

//内核头文件
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
//加载函数
static int __init init_hello_module(void){
    //内核打印函数,linux系统使用dmesg命令可以查看打印信息
    printk(KERN_INFO "Hello World\n");
    return 0;
}
//卸载函数
static void __exit exit_hello_module(void){
    printk(KERN_INFO "Exit the Hello world Module!\n");
}
module_init(init_hello_module);
module_exit(exit_hello_module);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Eric");
MODULE_VERSION("v0.1");
MODULE_DESCRIPTION("TEST FOR MODULE");
Copier après la connexion

Makefile correspondant au module :

#Makefile
obj-m:=hello.o
KERNELBUILD:=/lib/modules/$(shell uname -r)/build
all:
    make -C $(KERNELBUILD) M=$(shell pwd) modules
clean:
    make -C $(KERNELBUILD) M=$(shell pwd) clean
Copier après la connexion

Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal