So erstellen Sie eine Website oder ein Blog im Jahr 2020 - Kostenlose und einfache Anleitung zum Erstellen einer Website

Linux-Kernel-Änderung: Neue Systemaufrufe hinzufügen

Wenn die Notwendigkeit besteht, ein leistungsstarkes und zuverlässiges Linux-basiertes System zu erstellen (sei es zur Aufrechterhaltung von Systemprozessen oder zum Webhosting usw.), ist es erforderlich, den Systemkernel so zu konfigurieren, dass das gesamte System funktioniert. effizienter und zuverlässiger.

DarĂĽber hinaus wird der Linux-Kernel-Konfigurationsprozess durch die VerfĂĽgbarkeit von Linux-Code vereinfacht, sodass jeder den Linux-Kernel-Quellcode herunterladen und verwenden kann.

In diesem Beitrag helfen wir Ihnen, einige allgemeine Aspekte der Konfiguration des Linux-Kernels und das HinzufĂĽgen eines neuen Systemaufrufs zu verstehen. Wir werden sehen.

Konfigurierbare Kernel-Parameter

Der Linux-Systemkernel wurde so entwickelt, dass er ganz einfach an die erforderlichen Betriebsbedingungen und die Hardwareumgebung angepasst werden kann (so ziemlich wie alles andere in UNIX- und Linux-Systemen).

Darüber hinaus ermöglicht Ihnen die Flexibilität von Linux, den Kernel so zu konfigurieren, dass Systemadministratoren Parameter jederzeit ändern können.

Um diese Aufgabe zu erfüllen, gibt es eine spezielle Schnittstelle, die Datenkanäle zwischen dem Kernel und Programmen auf Benutzerebene unterstützt. Über diese Kanäle werden Anweisungen zum Festlegen von Werten für Kernel-Parameter gesendet.

1. Installieren Sie die erforderlichen Pakete

Zunächst müssen Sie sicherstellen, dass Ihr System über alle erforderlichen Pakete zum Erstellen des Kernels verfügt. Andernfalls müssen Sie die fehlenden installieren.

FĂĽhren Sie dazu den Befehl aus:

sudo apt install libncurses-dev libncurses dwarves build-essential gcc bc bison flex libssl-dev libelf-dev
2. Kernel-Quellen beziehen

Die besten Quellen erhalten Sie von der Website Ihres Distributionskits (falls verfügbar) oder von der offiziellen Website des Kernels: kernel.org. Wählen Sie also eine Version aus, gehen Sie zu kernel.org und laden Sie die erforderlichen Tarball-Quellen herunter.

Die von der offiziellen Website erhaltene Datei muss entpackt werden. Gehen Sie dazu zu Ihrem Downloads-Ordner und führen Sie den Befehl „unzip“ aus :

cd ~ / Downloads(the folder you downloaded the archive to) / tar xvf linux *

Also brauchst du Gehen Sie in den Ordner mit den entpackten Kernel-Quellen. FĂĽr Version 5.14.14 sieht der Befehl folgendermaĂźen aus:

cd linux-5.13.7/
3. Aktuelle Kernkonfiguration

Nehmen Sie die aktuelle Kernel-Konfiguration und verwenden Sie sie als Grundlage für die Erstellung einer neuen. Sie können solche Einstellungen mit dem folgenden Befehl wiederherstellen:

zcat /proc/config.gz > .config

Die Kernelkonfiguration ist befindet sich im Ordner /boot in einer Datei namens und Kernelversion. Um die Konfigurationsdatei in den Quellordner zu kopieren, fĂĽhren Sie den folgenden Befehl aus:

cp /boot/config-(version)-generic .config
4. Automatische Konfiguration

Die resultierende Konfiguration muss auf den aktuellen Kernel-Status aktualisiert werden. Neuere Kernel-Versionen fĂĽgen normalerweise neue Optionen hinzu, die in der Kernel-Konfiguration Ihrer Distribution noch nicht verfĂĽgbar sind.

Er Mit dem Befehl localmodulesconfig kann dieser Prozess optimiert werden. da dies der einfachste Weg ist, einen Linux-Kernel für Ihre Hardware zu erstellen. Überprüft, welche Kernelmodule derzeit geladen sind, und lässt nur diese Module aktiviert, während alle anderen deaktiviert bleiben.

Um das Skript „localmodulesconfig“ auszuführen, verwenden Sie den folgenden Befehl:

make localmodulesconfig

Erstellen eines Systemaufrufs

Ă–ffnen Sie also ein Befehlsterminal und verwenden Sie das Nano-Editor, erstellen Sie eine neue Typ-C-Datei so was:

nano exp.c 

Schreiben Sie nun im Editor alle folgenden C-Codes:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(int argc, char *argv[]) {
printf("PID of somefile.r = %d\n", getpid());
Char *args[] = {"First", "Second", "Third", Null};
execv("./justfile", args);
return 0;
}

Sobald dies erledigt ist, wird Ihre Hauptfunktion erstellt. Hier zeigt Printf die String-Daten und die Prozess-PID der Datei an.

Wir haben also eine Reihe von Argumenten.[] Zeichentypen mit einigen Werten darin. Der Systemaufruf exec wird verwendet, um den Dateinamen und das vorherige einzeilige Array als Argument zu verwenden. Erstellen Sie mit dem Nano-Editor eine weitere C-Datei.

Geben Sie darin den Code ein:

#include<stdio.h> 
#include<unistd.h>
#include<stdlib.h>
int main(int argc, char *argv[]) {
printf("Pid of justfile.r = %d\n", getpid());
return 0;
}

Kompilieren wir nun beide Dateien mit der GNU-Compiler-Sammlung:

gcc –o somefile somefile.r
gcc –o justfile justfile.r

Wenn wir die Datei ausführen, generiert sie die erste Druckanweisung der Datei und beide Druckzeilen, wie Sie unten sehen können:

./somefile
PID of somefile.r = 2602
PID of justfile.r = 2602