Kernel -Modul Hallo Welt

Kernel -Modul Hallo Welt
Dies ist der Artikel für die Person, die gerade erst mit den Linux -Kernel -Modulen beginnt. Wir werden den Beispielcode für dieses Modul und das Makefile verwenden, um das Kernel -Modul zu kompilieren. Später werden wir die Schritte durchlaufen, um das Kernel -Modul auszuführen und die Ausgabe aus dem Modul „Hello World“ anzuzeigen.

"Hallo Welt" -Modul:

Dies ist ein einfaches Kernel -Modul, das beim Einfügen in den Linux -Kernel die Nachricht als "Hello World" druckt. Und beim Entfernen wird die Nachricht als „Tschüss -Bye -Welt“ drucken!”. Dies sind die beiden Funktionen, die wir im Kernel -Modul „Hello World“ unterstützen werden.

Beispiel -Beispielcode für Kernel -Modul:

#enthalten
#enthalten
#enthalten
Module_license ("GPL");
Module_Description ("Hallo Welt!");
statische int __init hello_init (void)

printk (kern_info "Hallo Welt \ n");
Rückkehr 0;

Statische Leere __exit hello_exit (void)

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

module_init (hello_init);
module_exit (Hello_exit);

Beispiel Makefile zum Kompilieren von Kernel -Modul:

OBJ-M = Hello-World.Ö
alle:
make -c/lib/module/$ (Shell uname -r)/build/m = $ (pwd) Module
sauber:
make -c/lib/module/$ (Shell uname -r)/bauen m = $ (pwd) sauber

Schritte zum Kompilieren des Kernel -Moduls:

Kopieren Sie beide Code -Snippet oben in das gleiche Verzeichnis im Build -Host, wie unten gezeigt:

Sushilrathore-2: ~/Hallo-Welt $ ls
Hallo Welt.C Makefile
Sushilrathore-2: ~/Hallo-Welt $

Führen Sie den unten gezeigten Befehl aus und wir werden die Protokolle wie unten sehen:

Sushilrathore-2: ~/hello world $ make
make -c/lib/module/4.15.0-163-generisch/bau/m =/home/cienauser/hello world module
Make [1]: Eingabe des Verzeichnisses '/usr/src/Linux-Header-4.15.0-163-generisch '
CC [M]/Home/Cienauser/Hello-World/Hello-World.Ö
Gebäudemodule, Stufe 2.
Modpost 1 Module
Cc/home/cienauser/hello world/hello world.Mod.Ö
Ld [m]/home/cienauser/hello world/hello world.ko
Make [1]: Verzeichnis '/usr/src/Linux-Header-4 verlassen.15.0-163-generisch '
Sushilrathore-2: ~/Hallo-Welt $

Aus den obigen Protokollen können wir sehen, dass wir den Befehl machen und einige Dateien in demselben Verzeichnis erstellt haben, in dem wir C und Makefile haben. "Hallo Welt.Ko “ist die Datei, die wir uns ansehen sollten. Dies ist die Kernel -Objektdatei. Dies ist das Modul, das wir in den Linux -Kernel einfügen werden.

Schritte zum Hinzufügen des Hello-World-Moduls zum Linux-Kernel:

InsMOD -Befehl kann verwendet werden, um das Kernel -Modul in den Linux -Kernel einzulegen. Das Folgende ist das Protokoll, das den Prozess der Verwendung des INSMOD zeigt.

Sushilrathore-2: ~/Hallo-Welt $ sudo Insmod Hallo-Welt.ko
Sushilrathore-2: ~/Hallo-Welt $

Schritte, um die von Hello-Welt gedruckte Nachricht zu sehen:

"DMESG" ist der Befehl kann verwendet werden, um die Ausgabe des Hello World -Kernel -Moduls zu sehen. Das Folgende ist das Protokoll, das den Prozess der Verwendung des DMESG -Befehls zeigt.

Sushilrathore-2: ~/Hallo-Welt $ sudo dmesg | Grep -I ich hallo
[10500712.434672] Hallo Welt
Sushilrathore-2: ~/Hallo-Welt $

Oben ist der Prozess des Hinzufügens des Kernelmoduls dynamisch hinzu. Es wird außerhalb des Kernelbildes zusammengestellt und zur Laufzeit wird dem Kernelbild hinzugefügt. Während der Kernel läuft, können wir die Funktionalität des Kernels erweitern.

Linux bietet diese Möglichkeit, die Funktionen des Kernels zu erweitern, ohne das System zu senken. Der Benutzer sollte beim Schreiben solcher Module sehr vorsichtig sein. Während des Entladens des Kernel -Modul.

Hallo Weltmodul kann auch als Teil des Kernelbildes hinzugefügt werden. Wenn der Benutzer die Hello World -Anwendung als Teil des Kernel -Images hinzufügen möchte.

Die folgenden Schritte können befolgt werden, um dies zu erreichen:

  1. Identifizieren Sie den Pfad im Kernelbaum, in dem dies hinzugefügt werden muss.
  2. Ändern Sie die KCONfig, um das neue Modul vorzustellen.
  3. Ändern Sie das Makefile, um das neue Modul hinzuzufügen.
  4. Aktualisieren Sie die Konfigurationsdatei, wenn das Modul basierend auf einer Konfigurationsdatei hinzugefügt wird.

So kompilieren Sie das Modul, das in diesen 4 Schritten hinzugefügt wurde.

Kernel Makefile definiert die „Module“ als Build -Ziel, mit dem alle Module im Linux -Kernel erstellt werden können. Sobald der Benutzer die „Module machen“ ausgibt, wird auch unser Hello World/New Modul zusammengestellt und wir erhalten die .KO -Datei des Moduls.

Diese Zusammenstellung ist einfach, wenn wir den vollständigen Kernel und unser Modul erstellen müssen, das wir im System als ladbares Modul hinzufügen möchten.

Abschluss

Wir haben das einfache Hello World -Kernel -Modul und verschiedene Möglichkeiten zum Kompilieren des Moduls besprochen.

Wir haben auch die Möglichkeiten besprochen, das Modul dem Linux -Kernel hinzuzufügen. Wir haben auch den Beispielcode und Makefile für die Zusammenstellung bezogen. Außerdem haben wir die Konzepte mit den experimentellen Protokollen demonstriert.