Was bedeutet Linux-Modul?

WBOY
Freigeben: 2022-03-04 11:20:55
Original
2955 Leute haben es durchsucht

In Linux ist ein Modul eine Möglichkeit, Gerätetreiber, Dateisysteme und andere Komponenten zum Linux-Kernel hinzuzufügen. Es handelt sich um eine Sammlung von Funktionen und Datentypen, die als unabhängiges Programm entweder durch statische oder dynamische Methoden kompiliert werden können. In den Kernelraum geladen.

Was bedeutet Linux-Modul?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.

Was bedeutet Linux-Modul?

Modul ist eine Methode, die Gerätetreiber, Dateisysteme und andere Komponenten zum Linux-Kernel hinzufügen kann. Es ist keine Neukompilierung des Kernels oder ein Neustart des Systems erforderlich. Der Kernel muss sich mit dem Laden und Entladen von Modulen und den Abhängigkeiten zwischen Modulen befassen. Da das Modul im Kernel-Bereich ausgeführt wird, muss das Modul die vom Kernel bereitgestellten Funktionen verwenden. Wir können das Modul auch zum Aufrufen der entsprechenden Kernel-Funktion verwenden, einer Methode der Kernel-Modus-Programmierung. Der Kern einer Moduldatei ist eine verschiebbare Binärdatei, normalerweise in der Form *.ko.

Linux-Module können durch statische oder dynamische Methoden in den Kernelraum geladen werden. Statisches Laden bezieht sich auf das Laden während des Kernel-Startvorgangs; dynamisches Laden bezieht sich auf das Laden zu jedem Zeitpunkt, während der Kernel ausgeführt wird. Wenn ein Modul in den Kernel geladen wird, wird es Teil des Kernel-Codes. Wenn ein Modul in das System geladen wird, ändert das System die Symboltabelle im Kernel und fügt die vom neu geladenen Modul bereitgestellten Ressourcen und Symbole zur Kernel-Symboltabelle hinzu, um die Kommunikation zwischen Modulen zu erleichtern.

Verwendung von Modulen

Zusammensetzung von Modulen

Das Linux-Kernelmodul besteht hauptsächlich aus den folgenden Teilen:

Modulladefunktion (erforderlich): Beim Laden des Kernelmoduls über den Befehl insmod wird die Ladefunktion des Moduls automatisch aktiviert Kernel-Ausführung, um die mit diesem Modul verbundene Initialisierungsarbeit abzuschließen;

Funktion zum Entladen des Moduls (erforderlich): Wenn das Modul über den Befehl rmmod entladen wird, wird die Entladefunktion des Moduls automatisch vom Kernel ausgeführt, wodurch die entgegengesetzte Funktion zum Modul ausgeführt wird Ladefunktion;

Modulberechtigungslizenzerklärung (erforderlich): Die Modullizenzerklärung (LICENSE) beschreibt die Berechtigungen des Kernelmoduls. Wenn LICENSE nicht deklariert ist, erhält das Modul beim Laden des Moduls eine Warnung, dass der Kernel kontaminiert ist .

Modulparameter (optional): Modulparameter sind Werte, die beim Laden an das Modul übergeben werden können, was wiederum globalen Variablen innerhalb des Moduls entspricht;

Modulexportsymbole (optional): Kernelmodule können Symbole exportieren (Symbol, entsprechend einer Funktion oder Variable), damit andere Module Variablen oder Funktionen in diesem Modul verwenden können

Modulautor und andere Informationsdeklaration (optional).

Beispiel für ein Modul:

//内核头文件
#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");
Nach dem Login kopieren

Makefile entsprechend dem Modul:

#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
Nach dem Login kopieren

Verwandte Empfehlungen: „Linux Video Tutorial

Das obige ist der detaillierte Inhalt vonWas bedeutet Linux-Modul?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage