Heim > System-Tutorial > LINUX > Entdecken Sie die Geheimnisse der Linux-Kernelmodule

Entdecken Sie die Geheimnisse der Linux-Kernelmodule

WBOY
Freigeben: 2024-02-14 17:10:17
nach vorne
756 Leute haben es durchsucht

Im Linux-Betriebssystem ist der Kernel der Kernteil, der die Interaktion zwischen Computerhardware und -software steuert. Das Kernelmodul ist ein wichtiges Konzept im Kernel. Es kann zur Laufzeit dynamisch in den Kernel geladen werden und erweitert so die Funktionalität des Kernels. In diesem Artikel befassen wir uns eingehend mit der Funktionsweise und dem Aufbau von Linux-Kernelmodulen und erklären, wie Sie eigene Module schreiben.

Modularer Aufbau des Linux-Kernels

1. Linux-Kernel-Design: Einzelkern, modular (dynamisches Laden und Entladen)

(1) Linux: Single-Kernel-Design, nutzt jedoch vollständig die Vorteile des Mikrokernel-Systemdesigns und führt einen modularen Mechanismus in den Kernel ein; (2) Komponenten des Kernels:
Kernel: Kernelkern, normalerweise im bzImage-Format, normalerweise im Verzeichnis /boot mit dem Namen vmlinuz-VERSION-release; Diese Datei wird nach dem Systemstart nicht mehr verwendet, da sie zur einfacheren Verwaltung in den Speicher geladen und unter /boot abgelegt wurde
Kernelobjekt: Kernelmodul, im Allgemeinen in /lib/modules/VERSION-release/
platziert Das Kernelmodul und die Kernel-Kernversion müssen unbedingt übereinstimmen

2. Kernelmodul: Kompilierungsauswahlmodus

[ ]: N, diesen Teil nicht kompilieren

[M]: Modul, modular kompiliert, kann temporär geladen werden, belegt Speicherplatz, belegt keinen Kernel-Speicherplatz

[*]: Y, in den Kernel-Kern kompiliert, kann direkt aufgerufen werden

3.ramdisk: Hilfsdatei, nicht erforderlich, es hängt davon ab, ob der Kernel das Gerät, auf dem sich rootfs befindet, direkt ansteuern kann

ramdisk: Eine vereinfachte Version des Root-Dateisystems. Die verfügbaren Treiber sind wie folgt:

Zielgerätetreiber, z. B. SCSI-Gerätetreiber

Logischer Gerätetreiber, z. B. LVM-Gerätetreiber;
Dateisystem, z. B. xfs-Dateisystem;

Befehle zur Erfassung und Verwaltung von Kernelmodulinformationen

1.ldd: Bibliotheksdateien drucken, von denen Binäranwendungen abhängig sind – Abhängigkeiten von gemeinsam genutzten Bibliotheken drucken

Format: ldd [OPTION]… DATEI… Anzeige:

1) Name der abhängigen Bibliotheksdatei => Pfad der abhängigen Bibliotheksdatei (entsprechend dem symbolischen Link-Zuordnungspunkt zum Laden des Speichers)

2) Zugang zur gesamten Systemaufrufbibliothek

linux-vdso.so.1 => (0x00007fff293fe000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0228073000)
Nach dem Login kopieren


2.uname: Kernel-Informationserfassung – Systeminformationen druckenEntdecken Sie die Geheimnisse der Linux-Kernelmodule

Format: uname [OPTION]… uname -a: Alle Kernel-Informationen anzeigen

uname -v: Die kompilierte Versionsnummer des Kernels

uname -r: Kernel-Versionsnummer
uname -n: Hostname



Entdecken Sie die Geheimnisse der Linux-Kernelmodule3.lsmod: Kernelmodule auflisten

Der angezeigte Kernel stammt von /proc/modules Name des Moduls, Größe, Häufigkeit der Zitierungen und wovon es zitiert wird



Entdecken Sie die Geheimnisse der Linux-Kernelmodule4.modinfo-Befehl: Detaillierte Informationen zum angegebenen Modul anzeigen

Format: modinfo [-F Feld] [-k Kernel] [Modulname|Dateiname…] -k Kernel: Um die Modulinformationen auf einem anderen Kernel abzufragen, wenn mehrere Kernel nebeneinander existieren -F-Feld: Zeigt nur Informationen zum angegebenen Feld an -n: Dateipfad anzeigen;

Zeigen Sie relevante Informationen an, indem Sie die Originaldaten der Datei /lib/modules/#######/* lesen



Inhalt anzeigen: Dateiname, Protokoll, Beschreibung, Autor, Alias, für RHEL gültige Versionsnummer, abhängige Module, Signatureinheit, Signatur, Verschlüsselungsalgorithmus

Entdecken Sie die Geheimnisse der Linux-Kernelmodule

5.modprobe: realisiert das Laden und Entladen von Modulen und mountet auch abhängige ModuleEntdecken Sie die Geheimnisse der Linux-Kernelmodule

Format: modprobe [-r] Modulname Dynamisches Laden von Modulen: modprobe module_name Dynamische Deinstallation: modprobe -r Modulname

Hinweis: Deinstallieren Sie keine standardmäßig geladenen Module





6.depmod: – Module.dep und Map-Dateien generierenEntdecken Sie die Geheimnisse der Linux-Kernelmodule

Tool zum Generieren von Kernelmodul-Abhängigkeitsdateien und Systeminformationszuordnungsdateien;

7.insmod, rmmod: Laden und Entladen von Modulen, Modulabhängigkeiten können nicht automatisch aufgelöst werden

insmod [Dateiname] [Moduloptionen…] Dateiname: der Dateipfad der Moduldatei rmmod [Modulname]

Ramdisk-Dateiverwaltung


1.mkinitrd (CentOS 5): Ramdisk-Datei für den aktuell verwendeten Kernel neu erstellen

# mkinitrd [OPTION…] [] –with=: Zusätzlich zu den Standardmodulen, Module, die in initramfs geladen werden müssen –preload=: Die von initramfs bereitgestellten Module erfordern vorinstallierte Module Beispiel: ~]# mkinitrd /boot/initramfs-(uname -r)


2.dracut (CentOS 6/7, kompatibel mit 5): – Low-Level-Tool zum Generieren eines Initramfs-Image

#dracut [OPTION…] [ []] Beispiel: ~]# dracut /boot/initramfs-(uname -r)

Kernel-Informationsausgabe-Pseudodateisystem

1./proc: Die Ausgabeschnittstelle für Kernelstatus und statistische Informationen bietet auch eine Konfigurationsschnittstelle, /proc/sys

(1) Parameter:
Schreibgeschützt: Informationsausgabe; zum Beispiel /proc/#/, prozessbezogene Informationen
Entdecken Sie die Geheimnisse der Linux-Kernelmodule
Beschreibbar: Der Benutzer kann einen „neuen Wert“ angeben, um eine bestimmte Funktion oder Funktion des Kernels zu konfigurieren; Format: /proc/sys: net/ipv4/ip_forward entspricht net.ipv4.ip_forward

Entdecken Sie die Geheimnisse der Linux-Kernelmodule
(2) So ändern Sie Parameter 1) sysctl-Befehl
Wird speziell zum Anzeigen oder Festlegen des Werts von Parametern im Verzeichnis /proc/sys verwendet; sysctl [Optionen] [Variable[=Wert]] Ansicht: #sysctl -a; #sysctl Variable
Ändern Sie seinen Wert: # sysctl -w variable=value
2) Dateisystembefehle (cat, echo)
Überprüfen Sie: # cat /proc/sys/PATH/TO/SOME_KERNEL_FILE
Einstellung: # echo „VALUE“ > /proc/sys/PATH/TO/SOME_KERNEL_FILE
3) Konfigurationsdateien: /etc/sysctl.conf, /etc/sysctl.d/
.conf
Sofort wirksame Methode: sysctl -p [/PATH/TO/CONFIG_FILE]

(3) Wichtige Kernel-Parameter net.ipv4.ip_forward: Kernweiterleitung; vm.drop_caches:
kernel.hostname: Hostname; net.ipv4.icmp_echo_ignore_all: Alle Ping-Vorgänge ignorieren


2./sys-Verzeichnis: eingeführt nach Kernel 2.6-Version

sys-Dateisystem: Gibt die relevanten Attributinformationen jedes vom Kernel erkannten Hardwaregeräts aus und verfügt außerdem über die einstellbaren Parameter des Kernels für die Hardwareeigenschaften Durch Ändern dieser Parameter können die Arbeitseigenschaften des Hardwaregeräts angepasst werden


udev: Erstellen Sie bei Bedarf Gerätedateien für jedes Hardwaregerät, indem Sie die Hardwaregeräteinformationen im Verzeichnis /sys lesen
udev ist ein User-Space-Programm; spezielle Tools: devadmin, hotplug; Wenn udev eine Gerätedatei für ein Gerät erstellt, liest es dessen vordefinierte RegeldateiEntdecken Sie die Geheimnisse der Linux-Kernelmodule Im Allgemeinen im Verzeichnis /etc/udev/rules.d/ und im Verzeichnis /usr/lib/udev/rules.d/

Zusammenfassend lässt sich sagen, dass das Kernelmodul ein sehr wichtiger Teil des Linux-Kernels ist, der dem Kernel umfangreiche Erweiterungsfunktionen bieten und Benutzern helfen kann, sich besser an bestimmte Hardware- oder Anwendungsszenarien anzupassen. Bei der Verwendung von Kernel-Modulen müssen Sie darauf achten, die Stabilität und Sicherheit des Kernels nicht zu beeinträchtigen. Es wird empfohlen, Kernel-Module nur bei Bedarf zu verwenden und zu schreiben. Ich glaube, dass der Inhalt dieses Artikels den Lesern helfen kann, Linux-Kernelmodule besser zu verstehen und anzuwenden.

Das obige ist der detaillierte Inhalt vonEntdecken Sie die Geheimnisse der Linux-Kernelmodule. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:lxlinux.net
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