{"id":881932,"date":"2023-10-22T11:30:47","date_gmt":"2023-10-22T16:30:47","guid":{"rendered":"https:\/\/blogging-techies.com\/ge\/linux-kernel-anderung-neue-systemaufrufe-hinzufugen\/"},"modified":"2023-10-22T11:30:47","modified_gmt":"2023-10-22T16:30:47","slug":"linux-kernel-anderung-neue-systemaufrufe-hinzufugen","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/ge\/linux-kernel-anderung-neue-systemaufrufe-hinzufugen\/","title":{"rendered":"Linux-Kernel-\u00c4nderung: Neue Systemaufrufe hinzuf\u00fcgen"},"content":{"rendered":"<p>Wenn die Notwendigkeit besteht, ein leistungsstarkes und zuverl\u00e4ssiges 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\u00e4ssiger.<\/p>\n<p>Dar\u00fcber hinaus wird der Linux-Kernel-Konfigurationsprozess durch die Verf\u00fcgbarkeit von Linux-Code vereinfacht, sodass jeder den Linux-Kernel-Quellcode herunterladen und verwenden kann.<\/p>\n<p>In diesem Beitrag helfen wir Ihnen, einige allgemeine Aspekte der Konfiguration des Linux-Kernels und das Hinzuf\u00fcgen eines neuen Systemaufrufs zu verstehen.  Wir werden sehen.<\/p>\n<h4>Konfigurierbare Kernel-Parameter<\/h4>\n<p>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).<\/p>\n<p>    Dar\u00fcber hinaus erm\u00f6glicht Ihnen die Flexibilit\u00e4t von Linux, den Kernel so zu konfigurieren, dass Systemadministratoren Parameter jederzeit \u00e4ndern k\u00f6nnen.<\/p>\n<p>Um diese Aufgabe zu erf\u00fcllen, gibt es eine spezielle Schnittstelle, die Datenkan\u00e4le zwischen dem Kernel und Programmen auf Benutzerebene unterst\u00fctzt.  \u00dcber diese Kan\u00e4le werden Anweisungen zum Festlegen von Werten f\u00fcr Kernel-Parameter gesendet.<\/p>\n<h5>1. Installieren Sie die erforderlichen Pakete <\/h5>\n<p>Zun\u00e4chst m\u00fcssen Sie sicherstellen, dass Ihr System \u00fcber alle erforderlichen Pakete zum Erstellen des Kernels verf\u00fcgt.  Andernfalls m\u00fcssen Sie die fehlenden installieren.<\/p>\n<p>F\u00fchren Sie dazu den Befehl aus:<\/p>\n<pre name=\"code\" class=\"bash\">sudo apt install libncurses-dev libncurses dwarves build-essential gcc bc bison flex libssl-dev libelf-dev<\/pre>\n<h5>2. Kernel-Quellen beziehen<\/h5>\n<p>Die besten Quellen erhalten Sie von der Website Ihres Distributionskits (falls verf\u00fcgbar) oder von der offiziellen Website des Kernels: <a target=\"_blank\" href=\"https:\/\/www.kernel.org\/\" rel=\"noopener nofollow\">kernel.org<\/a>.  W\u00e4hlen Sie also eine Version aus, gehen Sie zu kernel.org und laden Sie die erforderlichen Tarball-Quellen herunter.<\/p>\n<p>Die von der offiziellen Website erhaltene Datei muss entpackt werden.  Gehen Sie dazu zu Ihrem <strong>Downloads-Ordner und f\u00fchren Sie den Befehl \u201eunzip\u201c aus<\/strong> :<\/p>\n<pre name=\"code\" class=\"bash\">cd ~ \/ Downloads(the folder you downloaded the archive to) \/ tar xvf linux *<\/pre>\n<p>Also brauchst du <strong>Gehen Sie in den Ordner mit den entpackten Kernel-Quellen<\/strong>.  F\u00fcr Version 5.14.14 sieht der Befehl folgenderma\u00dfen aus:<\/p>\n<pre name=\"code\" class=\"bash\">cd linux-5.13.7\/<\/pre>\n<h5>3. Aktuelle Kernkonfiguration<\/h5>\n<p>Nehmen Sie die aktuelle Kernel-Konfiguration und verwenden Sie sie als Grundlage f\u00fcr die Erstellung einer neuen.  Sie k\u00f6nnen solche Einstellungen mit dem folgenden Befehl wiederherstellen:<\/p>\n<pre name=\"code\" class=\"bash\">zcat \/proc\/config.gz &gt; .config<\/pre>\n<p>Die Kernelkonfiguration ist <strong>befindet sich im Ordner \/boot in einer Datei namens <\/strong> und Kernelversion.  Um die Konfigurationsdatei in den Quellordner zu kopieren, f\u00fchren Sie den folgenden Befehl aus:<\/p>\n<pre name=\"code\" class=\"bash\">cp \/boot\/config-(version)-generic .config<\/pre>\n<h5>4. Automatische Konfiguration<\/h5>\n<p>Die resultierende Konfiguration muss auf den aktuellen Kernel-Status aktualisiert werden.  Neuere Kernel-Versionen f\u00fcgen normalerweise neue Optionen hinzu, die in der Kernel-Konfiguration Ihrer Distribution noch nicht verf\u00fcgbar sind.<\/p>\n<p>Er <strong>Mit dem Befehl localmodulesconfig kann dieser Prozess optimiert werden.<\/strong> da dies der einfachste Weg ist, einen Linux-Kernel f\u00fcr Ihre Hardware zu erstellen.  \u00dcberpr\u00fcft, welche Kernelmodule derzeit geladen sind, und l\u00e4sst nur diese Module aktiviert, w\u00e4hrend alle anderen deaktiviert bleiben.<\/p>\n<p>Um das Skript \u201elocalmodulesconfig\u201c auszuf\u00fchren, verwenden Sie den folgenden Befehl:<\/p>\n<pre name=\"code\" class=\"bash\">make localmodulesconfig<\/pre>\n<h4>Erstellen eines Systemaufrufs<\/h4>\n<p>\u00d6ffnen Sie also ein Befehlsterminal und verwenden Sie das <strong>Nano-Editor, erstellen Sie eine neue Typ-C-Datei<\/strong> so was:<\/p>\n<pre name=\"code\" class=\"bash\">nano exp.c <\/pre>\n<p>Schreiben Sie nun im Editor alle folgenden C-Codes:<\/p>\n<pre name=\"code\" class=\"bash\">#include&lt;stdio.h&gt;\r\n#include&lt;unistd.h&gt;\r\n#include&lt;stdlib.h&gt;\r\nint main(int argc, char *argv[]) {\r\nprintf(\"PID of somefile.r = %d\\n\", getpid());\r\nChar *args[] = {\"First\", \"Second\", \"Third\", Null};\r\nexecv(\".\/justfile\", args);\r\nreturn 0;\r\n}<\/pre>\n<p>Sobald dies erledigt ist, wird Ihre Hauptfunktion erstellt.  Hier zeigt Printf die String-Daten und die Prozess-PID der Datei an.<\/p>\n<p>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.<\/p>\n<p>Geben Sie darin den Code ein:<\/p>\n<pre name=\"code\" class=\"bash\">#include&lt;stdio.h&gt; \r\n#include&lt;unistd.h&gt;\r\n#include&lt;stdlib.h&gt;\r\nint main(int argc, char *argv[]) {\r\nprintf(\"Pid of justfile.r = %d\\n\", getpid());\r\nreturn 0;\r\n}<\/pre>\n<p>Kompilieren wir nun beide Dateien mit der GNU-Compiler-Sammlung:<\/p>\n<pre name=\"code\" class=\"bash\">gcc \u2013o somefile somefile.r\r\ngcc \u2013o justfile justfile.r<\/pre>\n<p>Wenn wir die Datei ausf\u00fchren, generiert sie die erste Druckanweisung der Datei und beide Druckzeilen, wie Sie unten sehen k\u00f6nnen:<\/p>\n<pre name=\"code\" class=\"bash\">.\/somefile\r\nPID of somefile.r = 2602\r\nPID of justfile.r = 2602<\/pre>\n   ","protected":false},"excerpt":{"rendered":"<p>Wenn die Notwendigkeit besteht, ein leistungsstarkes und zuverl\u00e4ssiges 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\u00e4ssiger. Dar\u00fcber hinaus wird der Linux-Kernel-Konfigurationsprozess durch die Verf\u00fcgbarkeit von Linux-Code vereinfacht, sodass jeder den Linux-Kernel-Quellcode herunterladen und [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":881933,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","fifu_image_url":"https:\/\/blogging-techies.com\/wp-content\/uploads\/2023\/06\/image-768x401-1.webp","fifu_image_alt":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/posts\/881932"}],"collection":[{"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/comments?post=881932"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/posts\/881932\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/media\/881933"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/media?parent=881932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/categories?post=881932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/tags?post=881932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}