{"id":747065,"date":"2023-10-15T11:38:03","date_gmt":"2023-10-15T17:38:03","guid":{"rendered":"https:\/\/blogging-techies.com\/sw\/linux-kernel-modifiering-lagg-till-nya-systemanrop\/"},"modified":"2023-10-15T11:38:03","modified_gmt":"2023-10-15T17:38:03","slug":"linux-kernel-modifiering-lagg-till-nya-systemanrop","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/sw\/linux-kernel-modifiering-lagg-till-nya-systemanrop\/","title":{"rendered":"Linux Kernel Modifiering: L\u00e4gg till nya systemanrop"},"content":{"rendered":"<p>N\u00e4r behovet uppst\u00e5r f\u00f6r att skapa ett kraftfullt och p\u00e5litligt Linuxbaserat system (vare sig det \u00e4r f\u00f6r att underh\u00e5lla systemprocesser eller webbhotell etc.), d\u00e5 blir det n\u00f6dv\u00e4ndigt att konfigurera systemk\u00e4rnan p\u00e5 ett s\u00e5dant s\u00e4tt att hela systemet fungerar.  mer effektivt och tillf\u00f6rlitligt.<\/p>\n<p>Dessutom f\u00f6renklas konfigurationsprocessen f\u00f6r Linux-k\u00e4rnan genom tillg\u00e5ngen p\u00e5 Linux-kod, s\u00e5 vem som helst kan ladda ner Linux-k\u00e4rnans k\u00e4llkod och anv\u00e4nda den.<\/p>\n<p>I det h\u00e4r inl\u00e4gget hj\u00e4lper vi dig att f\u00f6rst\u00e5 n\u00e5gra allm\u00e4nna aspekter av att konfigurera Linux-k\u00e4rnan och hur du l\u00e4gger till ett nytt systemanrop.  Vi f\u00e5r se.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Konfigurerbara_karnparametrar\"><\/span>Konfigurerbara k\u00e4rnparametrar<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Linux-systemk\u00e4rnan har utvecklats p\u00e5 ett s\u00e5dant s\u00e4tt att det \u00e4r ganska enkelt att anpassa den efter de n\u00f6dv\u00e4ndiga driftsf\u00f6rh\u00e5llandena och h\u00e5rdvarumilj\u00f6n (ungef\u00e4r som allt annat i UNIX- och Linux-system).<\/p>\n<p>    Dessutom till\u00e5ter Linuxs flexibilitet dig att konfigurera dess k\u00e4rna s\u00e5 att systemadministrat\u00f6rer kan \u00e4ndra parametrar n\u00e4r som helst.<\/p>\n<p>F\u00f6r att utf\u00f6ra denna uppgift finns det ett speciellt gr\u00e4nssnitt som st\u00f6der datakanaler mellan k\u00e4rnan och program p\u00e5 anv\u00e4ndarniv\u00e5.  Det \u00e4r genom dessa kanaler som instruktioner f\u00f6r inst\u00e4llning av v\u00e4rden f\u00f6r k\u00e4rnparametrar skickas.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"1_Installera_nodvandiga_paket\"><\/span>1. Installera n\u00f6dv\u00e4ndiga paket <span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>F\u00f6rst m\u00e5ste du se till att ditt system har alla n\u00f6dv\u00e4ndiga paket f\u00f6r att bygga k\u00e4rnan.  Annars m\u00e5ste du installera de saknade.<\/p>\n<p>F\u00f6r att g\u00f6ra detta, k\u00f6r kommandot:<\/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><span class=\"ez-toc-section\" id=\"2_Skaffa_karnkallor\"><\/span>2. Skaffa k\u00e4rnk\u00e4llor<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>De b\u00e4sta k\u00e4llorna erh\u00e5lls fr\u00e5n din distributionskitsida (om tillg\u00e4nglig) eller fr\u00e5n k\u00e4rnans officiella webbplats: <a target=\"_blank\" href=\"https:\/\/www.kernel.org\/\" rel=\"noopener nofollow\">kernel.org<\/a>.  S\u00e5 v\u00e4lj en version, g\u00e5 till kernel.org och ladda ner de n\u00f6dv\u00e4ndiga tarball-k\u00e4llorna.<\/p>\n<p>Filen som erh\u00e5lls fr\u00e5n den officiella webbplatsen m\u00e5ste packas upp.  F\u00f6r att g\u00f6ra detta, g\u00e5 till din <strong>nedladdningsmappen och k\u00f6r kommandot unzip<\/strong> :<\/p>\n<pre name=\"code\" class=\"bash\">cd ~ \/ Downloads(the folder you downloaded the archive to) \/ tar xvf linux *<\/pre>\n<p>S\u00e5 du beh\u00f6ver <strong>g\u00e5 till mappen med de uppackade k\u00e4rnk\u00e4llorna<\/strong>.  F\u00f6r version 5.14.14 kommer kommandot att se ut s\u00e5 h\u00e4r:<\/p>\n<pre name=\"code\" class=\"bash\">cd linux-5.13.7\/<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"3_Aktuell_karnkonfiguration\"><\/span>3. Aktuell k\u00e4rnkonfiguration<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Ta den nuvarande k\u00e4rnkonfigurationen och anv\u00e4nd den som grund f\u00f6r att bygga en ny.  Du kan \u00e5terst\u00e4lla s\u00e5dana inst\u00e4llningar med kommandot:<\/p>\n<pre name=\"code\" class=\"bash\">zcat \/proc\/config.gz &amp;gt; .config<\/pre>\n<p>K\u00e4rnkonfigurationen \u00e4r <strong>finns i \/boot-mappen, i en fil som heter <\/strong> och k\u00e4rnversion.  F\u00f6r att kopiera konfigurationsfilen till k\u00e4llmappen, k\u00f6r f\u00f6ljande kommando:<\/p>\n<pre name=\"code\" class=\"bash\">cp \/boot\/config-(version)-generic .config<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"4_Automatisk_konfiguration\"><\/span>4. Automatisk konfiguration<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Den resulterande konfigurationen m\u00e5ste uppdateras till det aktuella k\u00e4rntillst\u00e5ndet.  Nyare k\u00e4rnversioner l\u00e4gger vanligtvis till nya alternativ som inte redan \u00e4r tillg\u00e4ngliga i din distributions k\u00e4rnkonfiguration.<\/p>\n<p>han <strong>Kommandot localmodulesconfig kan anv\u00e4ndas f\u00f6r att optimera denna process.<\/strong> eftersom det \u00e4r det enklaste s\u00e4ttet att skapa en Linux-k\u00e4rna f\u00f6r din h\u00e5rdvara.  Kontrollerar vilka k\u00e4rnmoduler som f\u00f6r n\u00e4rvarande \u00e4r inl\u00e4sta och l\u00e4mnar endast dessa moduler aktiverade, samtidigt som alla andra \u00e4r inaktiverade.<\/p>\n<p>F\u00f6r att k\u00f6ra skriptet localmodulesconfig, anv\u00e4nd f\u00f6ljande kommando:<\/p>\n<pre name=\"code\" class=\"bash\">make localmodulesconfig<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Skapa_ett_systemsamtal\"><\/span>Skapa ett systemsamtal<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>S\u00e5 \u00f6ppna en kommandoterminal och anv\u00e4nd <strong>nano editor, skapa en ny typ C-fil<\/strong> s\u00e5 h\u00e4r:<\/p>\n<pre name=\"code\" class=\"bash\">nano exp.c <\/pre>\n<p>Skriv nu alla f\u00f6ljande C-koder i editorn:<\/p>\n<pre name=\"code\" class=\"bash\">#include&amp;lt;stdio.h&amp;gt;\r\n#include&amp;lt;unistd.h&amp;gt;\r\n#include&amp;lt;stdlib.h&amp;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>N\u00e4r detta \u00e4r gjort kommer din huvudfunktion att skapas.  H\u00e4r visar Printf filens str\u00e4ngdata och process-PID.<\/p>\n<p>S\u00e5 vi har en rad argument.[] teckentyper med vissa v\u00e4rden i dem.  Exec-systemanropet anv\u00e4nds f\u00f6r att ta filnamnet och den f\u00f6reg\u00e5ende enradsmatrisen som ett argument.  Skapa ytterligare en c-fil med nanoredigeraren.<\/p>\n<p>Ange koden i den:<\/p>\n<pre name=\"code\" class=\"bash\">#include&amp;lt;stdio.h&amp;gt; \r\n#include&amp;lt;unistd.h&amp;gt;\r\n#include&amp;lt;stdlib.h&amp;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>L\u00e5t oss nu kompilera b\u00e5da filerna med hj\u00e4lp av GNU-kompilatorsamlingen:<\/p>\n<pre name=\"code\" class=\"bash\">gcc \u2013o somefile somefile.r\r\ngcc \u2013o justfile justfile.r<\/pre>\n<p>N\u00e4r vi k\u00f6r filen genererar den den f\u00f6rsta utskriftssatsen f\u00f6r filen och b\u00e5da utskriftsraderna, som du kan se nedan:<\/p>\n<pre name=\"code\" class=\"bash\">.\/somefile\r\nPID of somefile.r = 2602\r\nPID of justfile.r = 2602<\/pre>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/sw\/linux-kernel-modifiering-lagg-till-nya-systemanrop\/#Konfigurerbara_karnparametrar\" >Konfigurerbara k\u00e4rnparametrar<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/sw\/linux-kernel-modifiering-lagg-till-nya-systemanrop\/#1_Installera_nodvandiga_paket\" >1. Installera n\u00f6dv\u00e4ndiga paket<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/sw\/linux-kernel-modifiering-lagg-till-nya-systemanrop\/#2_Skaffa_karnkallor\" >2. Skaffa k\u00e4rnk\u00e4llor<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogging-techies.com\/sw\/linux-kernel-modifiering-lagg-till-nya-systemanrop\/#3_Aktuell_karnkonfiguration\" >3. Aktuell k\u00e4rnkonfiguration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogging-techies.com\/sw\/linux-kernel-modifiering-lagg-till-nya-systemanrop\/#4_Automatisk_konfiguration\" >4. Automatisk konfiguration<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogging-techies.com\/sw\/linux-kernel-modifiering-lagg-till-nya-systemanrop\/#Skapa_ett_systemsamtal\" >Skapa ett systemsamtal<\/a><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>N\u00e4r behovet uppst\u00e5r f\u00f6r att skapa ett kraftfullt och p\u00e5litligt Linuxbaserat system (vare sig det \u00e4r f\u00f6r att underh\u00e5lla systemprocesser eller webbhotell etc.), d\u00e5 blir det n\u00f6dv\u00e4ndigt att konfigurera systemk\u00e4rnan p\u00e5 ett s\u00e5dant s\u00e4tt att hela systemet fungerar. mer effektivt och tillf\u00f6rlitligt. Dessutom f\u00f6renklas konfigurationsprocessen f\u00f6r Linux-k\u00e4rnan genom tillg\u00e5ngen p\u00e5 Linux-kod, s\u00e5 vem som helst [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":747066,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/blogging-techies.com\/wp-content\/uploads\/2023\/06\/8-1.jpg","fifu_image_alt":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-747065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggar"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/747065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/comments?post=747065"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/747065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media\/747066"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media?parent=747065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/categories?post=747065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/tags?post=747065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}