{"id":29380,"date":"2026-09-15T23:58:53","date_gmt":"2026-09-15T23:58:53","guid":{"rendered":"https:\/\/umang.pk\/2026\/09\/15\/%d9%84%db%8c%d9%86%da%a9%d8%b3-%da%a9%d8%b1%d9%86%d9%84-%d9%85%d8%a7%da%88%db%8c%d9%88%d9%84-%da%a9%db%8c%d8%b3%db%92-%d9%84%da%a9%da%be%db%8c%da%ba-%d8%ac%d9%88-%d8%ad%d9%82%db%8c%d9%82%d8%aa-%d9%85\/"},"modified":"2026-09-15T23:58:55","modified_gmt":"2026-09-15T23:58:55","slug":"%d9%84%db%8c%d9%86%da%a9%d8%b3-%da%a9%d8%b1%d9%86%d9%84-%d9%85%d8%a7%da%88%db%8c%d9%88%d9%84-%da%a9%db%8c%d8%b3%db%92-%d9%84%da%a9%da%be%db%8c%da%ba-%d8%ac%d9%88-%d8%ad%d9%82%db%8c%d9%82%d8%aa-%d9%85","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/09\/15\/%d9%84%db%8c%d9%86%da%a9%d8%b3-%da%a9%d8%b1%d9%86%d9%84-%d9%85%d8%a7%da%88%db%8c%d9%88%d9%84-%da%a9%db%8c%d8%b3%db%92-%d9%84%da%a9%da%be%db%8c%da%ba-%d8%ac%d9%88-%d8%ad%d9%82%db%8c%d9%82%d8%aa-%d9%85\/","title":{"rendered":"\u0644\u06cc\u0646\u06a9\u0633 \u06a9\u0631\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06cc\u0633\u06d2 \u0644\u06a9\u06be\u06cc\u06ba \u062c\u0648 \u062d\u0642\u06cc\u0642\u062a \u0645\u06cc\u06ba \u0628\u0646\u062a\u0627 \u06c1\u06d2\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0644\u06cc\u0646\u06a9\u0633 <code>kernel module<\/code> \u06cc\u06c1 \u06a9\u0648\u0688 \u06a9\u0627 \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u0627 \u0679\u06a9\u0691\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u067e\u0648\u0631\u06d2 \u062f\u0627\u0646\u0627 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0626\u06d2 \u0628\u063a\u06cc\u0631 \u0686\u0644\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062f\u0627\u0646\u0627 \u0645\u06cc\u06ba \u0644\u0648\u0688 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u06a9\u0627\u0641\u06cc \u0622\u0633\u0627\u0646 \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0645\u0634\u06cc\u0646 \u062c\u06cc\u0633\u06cc \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba\u060c \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627\u060c \u0628\u0631\u0622\u0645\u062f \u0634\u062f\u06c1 \u0627\u0648\u0631 \u063a\u06cc\u0631 \u062d\u0644 \u0634\u062f\u06c1 \u0639\u0644\u0627\u0645\u062a\u0648\u06ba \u0627\u0648\u0631 \u062d\u062a\u0645\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06cc \u062d\u06cc\u0631\u062a \u0627\u0646\u06af\u06cc\u0632 \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>.ko<\/code> \u06cc\u06c1 \u0627\u06cc\u06a9 \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u06cc\u0628\u0644 \u0641\u0627\u0626\u0644 \u0633\u06d2 \u0628\u0627\u0644\u06a9\u0644 \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0644\u06cc\u0646\u06a9\u0633 \u06a9\u0631\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06c1\u06d2: \u06cc\u06c1 \u0635\u0631\u0641 22 \u0644\u0627\u0626\u0646\u0648\u06ba \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u060c \u062c\u0646 \u0645\u06cc\u06ba \u0633\u06d2 7 \u0627\u06cc\u0645\u0628\u06cc\u0688\u0646\u06af\u0632 \u0627\u0648\u0631 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-c\">#include <linux>\n#include <linux>\n#include <linux>\n\nMODULE_LICENSE(\"GPL\");\nMODULE_AUTHOR(\"Chris Roy\");\nMODULE_DESCRIPTION(\"A minimal loadable kernel module\");\nMODULE_VERSION(\"0.1\");\n\nstatic int __init hello_init(void)\n{\n    pr_info(\"hello: loaded, module at %pSn\", hello_init);\n    return 0;\n}\n\nstatic void __exit hello_exit(void)\n{\n    pr_info(\"hello: unloadedn\");\n}\n\nmodule_init(hello_init);\nmodule_exit(hello_exit);\n<\/linux><\/linux><\/linux><\/code><\/pre>\n<p>\u062c\u0633 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u067e\u0631 \u0645\u06cc\u06ba \u06cc\u06c1 \u0644\u06a9\u06be \u0631\u06c1\u0627 \u06c1\u0648\u06ba \u0627\u0633\u06d2 \u0645\u0631\u062a\u0628 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 106,000 \u0628\u0627\u0626\u0679\u0633 \u06a9\u06cc \u0641\u0627\u0626\u0644 \u062a\u06cc\u0627\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0688\u06cc\u0628\u06af \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u0648 \u06c1\u0679\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0648\u06c1\u06cc \u0645\u0627\u0688\u06cc\u0648\u0644 4,864 \u0628\u0627\u0626\u0679\u0633 \u06a9\u0627 \u06c1\u0648\u06af\u0627\u06d4 \u062c\u0648 \u06a9\u0686\u06be \u0628\u0644\u0688 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u06a9\u0627 95\u066a \u06a9\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u06cc \u06a9\u0644 \u0631\u0642\u0645 \u0645\u06cc\u0631\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0645\u06cc\u06ba \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2 \u0627\u0648\u0631 \u06cc\u06c1 \u0645\u062a\u0648\u0642\u0639 \u0631\u0642\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0686\u06be \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0628\u0646\u0627\u0626\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u0642\u0627\u0645\u0627\u062a \u06c1\u06cc\u06ba\u06d4 \u0686\u0648\u0646\u06a9\u06c1 \u0688\u06cc\u0628\u06af \u0627\u0646\u0641\u0627\u0631\u0645\u06cc\u0634\u0646 \u0627\u0633 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u06a9\u0648 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0633 \u0633\u06d2 \u0635\u0627\u0631\u0641 \u0646\u06d2 \u0645\u0631\u062a\u0628 \u06a9\u06cc\u0627 \u06c1\u06d2\u060c \u06af\u06c1\u0631\u06d2 \u0646\u06cc\u0633\u0679\u0688 \u067e\u0627\u062a\u06be \u06a9\u06cc \u0642\u06cc\u0645\u062a \u0686\u06be\u0648\u0679\u06d2 \u0631\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0628\u0631\u0639\u06a9\u0633 \u0633\u06cc\u0646\u06a9\u0691\u0648\u06ba \u0628\u0627\u0626\u0679\u0633 \u0644\u06af \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u0645\u067e\u0627\u0626\u0644\u0631 \u0648\u0631\u0698\u0646 \u0627\u0648\u0631 \u06a9\u0631\u0646\u0644 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u0632 \u0632\u06cc\u0627\u062f\u06c1 \u062c\u062f\u06cc\u062f \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u062a\u0646\u0627\u0633\u0628 \u0628\u0631\u0642\u0631\u0627\u0631 \u06c1\u06d2\u06d4 \u0628\u0627\u0626\u0679\u0633 \u06a9\u06cc \u0635\u062d\u06cc\u062d \u062a\u0639\u062f\u0627\u062f \u0635\u0631\u0641 \u0627\u0633 \u0645\u0634\u06cc\u0646 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u062a\u06cc\u0627\u0631 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u06a9\u0631\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644\u0632 \u0627\u0648\u067e\u0631 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u062f\u06a9\u06be\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0627\u06a9\u06c1 \u06cc\u06c1 \u062e\u0644\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u0686\u06be\u06cc \u062c\u06af\u06c1 \u06c1\u0648\u06d4 <code>make<\/code>\u0627\u0648\u0631 \u0631\u06a9 \u062c\u0627\u0624\u06d4<\/p>\n<p>\u06cc\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0639\u0645\u06cc\u0631 \u0646\u06d2 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u06cc\u0627\u060c \u0645\u0627\u0688\u06cc\u0648\u0644 \u0646\u06d2 \u06a9\u0686\u06be \u0628\u06be\u06cc \u0645\u0641\u06cc\u062f \u0644\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u0633 \u0686\u06cc\u0632 \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06cc\u0627\u060c \u0627\u0648\u0631 2014 \u0645\u06cc\u06ba \u062c\u0648 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u062c\u06be\u06d2 \u0645\u0644\u0627 \u0648\u06c1 \u0627\u0628 \u06a9\u06cc\u0648\u06ba \u0645\u0631\u062a\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-what-you-need\">\u0622\u067e \u06a9\u0648 \u06a9\u06cc\u0627 \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2<\/h2>\n<p>\u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0686\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u06a9\u0648\u0688 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0644\u06cc\u0646\u06a9\u0633 \u0645\u0634\u06cc\u0646\u060c \u0686\u0644\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0631\u0646\u0644 \u06a9\u06d2 \u06c1\u06cc\u0688\u0631\u0632\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u06a9\u0645\u067e\u0627\u0626\u0644\u0631 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4<\/p>\n<p>Debian \u06cc\u0627 Ubuntu \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-bash\">sudo apt install build-essential linux-headers-$(uname -r)\n<\/code><\/pre>\n<p>\u0641\u06cc\u0688\u0648\u0631\u0627 \u0645\u06cc\u06ba\u060c \u0645\u0633\u0627\u0648\u06cc \u06c1\u06d2: <code>kernel-devel<\/code> \u0627\u0648\u0631 <code>kernel-headers<\/code>\u0627\u0648\u0631 \u0622\u0631\u06a9 \u0645\u06cc\u06ba <code>linux-headers<\/code> \u062f\u0627\u0646\u0627 \u0633\u06d2 \u0645\u0644\u0646\u06d2 \u0648\u0627\u0644\u0627 \u067e\u06cc\u06a9\u06cc\u062c\u06d4<\/p>\n<p>\u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u06c1\u06cc\u0688\u0631\u0632 \u0648\u06c1\u0627\u06ba \u067e\u06c1\u0646\u0686\u06cc\u06ba \u062c\u06c1\u0627\u06ba \u0622\u067e \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">ls -d \/lib\/modules\/$(uname -r)\/build\n<\/code><\/pre>\n<p>\u0648\u06c1 \u0631\u0627\u0633\u062a\u06c1 \u06c1\u06cc\u0688\u0631 \u067e\u06cc\u06a9\u062c \u06a9\u0627 \u0627\u06cc\u06a9 \u06c1\u0645 \u0622\u06c1\u0646\u06af\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0631\u0627\u0633\u062a\u06d2 \u06a9\u0627 \u063a\u0627\u0626\u0628 \u06c1\u0648\u0646\u0627 \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u0648\u062c\u0648\u06c1\u0627\u062a \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u062c\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u0627\u06cc\u06a9 \u062e\u0631\u0627\u0628\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u06c1\u06cc\u0688\u0631 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u0628\u06be\u06cc \u0646\u06c1\u06cc\u06ba \u0628\u062a\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0648 \u062f\u0648 \u0648\u062c\u0648\u06c1\u0627\u062a \u06a9\u06cc \u0628\u0646\u0627\u0621 \u067e\u0631 \u0628\u0646\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0628\u06be\u06cc \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4 \u0633\u06cc\u06a9\u06cc\u0648\u0631 \u0628\u0648\u0679 \u063a\u06cc\u0631 \u062f\u0633\u062a\u062e\u0637 \u0634\u062f\u06c1 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u06a9\u0648 \u0645\u0633\u062a\u0631\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0631\u0646\u0644 \u0644\u0627\u06a9\u0646\u06af \u0627\u0646\u06c1\u06cc\u06ba \u062e\u0641\u06cc\u06c1 \u0645\u0648\u0688 \u0645\u06cc\u06ba \u0644\u0648\u0688 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0645\u06cc\u06ba \u0633\u06d2 \u0633\u0628\u06be\u06cc \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">mokutil --sb-state\ncat \/sys\/kernel\/security\/lockdown\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba \u0645\u0634\u06cc\u0646 \u067e\u0631 \u0633\u06cc\u06a9\u06cc\u0648\u0631 \u0628\u0648\u0679 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06c1\u06d2 \u0627\u0648\u0631 \u0644\u0627\u06a9 \u0627\u067e \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u06c1\u06d2\u06d4 <code>[none] integrity confidentiality<\/code>\u0642\u0648\u0633\u06cc\u0646 \u0627\u06cc\u06a9\u0679\u0648 \u0645\u0648\u0688 \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0633\u06cc\u06a9\u06cc\u0648\u0631 \u0628\u0648\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u062c \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0645\u06cc\u06ba \u0633\u06cc\u06a9\u06cc\u0648\u0631 \u0628\u0648\u0679 \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627 \u06cc\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644 \u067e\u0631 \u062f\u0633\u062a\u062e\u0637 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06ba \u06af\u06d2\u06d4<\/p>\n<p>\u0645\u06cc\u06ba \u06a9\u0631\u0646\u0644 5.15.0-190-generic \u0627\u0648\u0631 gcc 11.4 \u06a9\u06d2 \u0633\u0627\u062a\u06be Ubuntu 22.04 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u0648\u06ba\u06d4 \u0622\u067e \u06a9\u0627 \u0648\u0631\u0698\u0646 \u0645\u062e\u062a\u0644\u0641 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u0636\u0645\u0648\u0646 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u06a9\u06c1\u0627\u06ba \u0627\u06c1\u0645\u06cc\u062a \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-smallest-module-that-works\">\u0633\u0628 \u0633\u06d2 \u0686\u06be\u0648\u0679\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u062c\u0648 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0627\u0633 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u06a9\u06d2 \u0634\u0631\u0648\u0639 \u0645\u06cc\u06ba \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648\u0688 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba: <code>hello.c<\/code>. \u0627\u0633\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062d\u0648\u0627\u0644\u06c1 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u06c1\u0627\u06ba \u062f\u0631\u062c \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">#include <linux>\n#include <linux>\n#include <linux>\n\nMODULE_LICENSE(\"GPL\");\nMODULE_AUTHOR(\"Chris Roy\");\nMODULE_DESCRIPTION(\"A minimal loadable kernel module\");\nMODULE_VERSION(\"0.1\");\n\nstatic int __init hello_init(void)\n{\n    pr_info(\"hello: loaded, module at %pSn\", hello_init);\n    return 0;\n}\n\nstatic void __exit hello_exit(void)\n{\n    pr_info(\"hello: unloadedn\");\n}\n\nmodule_init(hello_init);\nmodule_exit(hello_exit);\n<\/linux><\/linux><\/linux><\/code><\/pre>\n<p>\u0648\u06c1\u0627\u06ba \u06a9\u06cc \u0686\u0627\u0631 \u0686\u06cc\u0632\u06cc\u06ba \u0627\u0635\u0644 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><code>module_init<\/code>    \u0627\u0648\u0631 <code>module_exit<\/code> \u0627\u0646 \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u0648 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0644 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u0627\u0648\u0631 \u0627\u0646 \u0644\u0648\u0688 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0648\u06c1 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 <code>main<\/code>. \u0627\u06cc\u06a9 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u06be\u06cc \u0627\u0646\u0679\u0631\u06cc \u067e\u0648\u0627\u0626\u0646\u0679 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0633\u06d2 \u06cc\u06c1 \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u0627\u067e\u0633 \u0622\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u06c1\u06a9 \u06c1\u06d2 \u062c\u0648 \u062f\u0648 \u0645\u062e\u0635\u0648\u0635 \u0648\u0627\u0642\u0639\u0627\u062a \u067e\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u062f\u0648\u0633\u0631\u0627 \u0648\u0627\u0642\u0639\u06c1 \u0646\u06c1 \u0628\u0644\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p><code>__init<\/code>    \u0627\u0648\u0631 <code>__exit<\/code> \u0633\u06cc\u06a9\u0634\u0646 \u0645\u0627\u0631\u06a9\u0631\u06d4 <code>__init<\/code> \u0622\u067e \u0628\u0648\u0679 \u0644\u0627\u06af \u0645\u06cc\u06ba &quot;\u063a\u06cc\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0634\u062f\u06c1 \u06a9\u0631\u0646\u0644 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0648 \u062c\u0627\u0631\u06cc \u06a9\u0631\u06cc\u06ba&#8221; \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u06a9\u0631\u0646\u0644 \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u06a9\u0648\u0688 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0686\u0644\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0648 \u0622\u0632\u0627\u062f \u06a9\u0631 \u062f\u06d2 \u06af\u0627\u06d4 <code>__exit<\/code> \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u0645\u0637\u0644\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u06c1\u06d2 \u062c\u0628 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0648 \u0628\u0627\u0644\u06a9\u0644 \u0628\u06be\u06cc \u0627\u062a\u0627\u0631\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<p><code>MODULE_LICENSE(\"GPL\")<\/code>    \u06cc\u06c1 \u06a9\u0648\u0626\u06cc \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06a9\u0631\u0646\u0644 \u0644\u0648\u0688 \u06a9\u06d2 \u0648\u0642\u062a \u0627\u0633 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0645\u0627\u0688\u06cc\u0648\u0644 \u062c\u0648 \u06a9\u06c1 \u063a\u06cc\u0631 GPL \u0644\u0627\u0626\u0633\u0646\u0633 \u06a9\u0627 \u0627\u0639\u0644\u0627\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0646\u0634\u0627\u0646 \u0632\u062f \u0639\u0644\u0627\u0645\u062a\u0648\u06ba \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u0633\u06d2 \u0627\u0646\u06a9\u0627\u0631 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>EXPORT_SYMBOL_GPL<\/code>\u06cc\u06c1 \u0633\u0628 \u0633\u06d2 \u062f\u0644\u0686\u0633\u067e \u0686\u06cc\u0632 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0645\u06cc\u06a9\u0631\u0648 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0686\u06be\u0648\u0691 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u062f\u0627\u0646\u0627 \u062e\u0648\u062f \u06a9\u0648 \u0622\u0644\u0648\u062f\u06c1 \u06a9\u0631 \u062f\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0634\u06a9\u0627\u06cc\u0627\u062a \u062f\u0631\u062c \u06a9\u0631 \u0644\u06d2 \u06af\u0627\u06d4<\/p>\n<p><code>pr_info<\/code>    \u06a9\u06cc \u062c\u062f\u06cc\u062f \u06c1\u062c\u06d2 \u06c1\u06d2\u06d4 <code>printk(KERN_INFO ...)<\/code>. \u06cc\u06c1 \u0679\u0631\u0645\u06cc\u0646\u0644 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u06a9\u0631\u0646\u0644 \u0631\u0650\u0646\u06af \u0628\u0641\u0631 \u06a9\u0648 \u0644\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u06cc\u06c1 \u067e\u06c1\u0644\u06cc \u0628\u0627\u0631 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u06a9\u06c1 <code>MODULE_AUTHOR<\/code>, <code>MODULE_DESCRIPTION<\/code>\u0627\u0648\u0631 <code>MODULE_VERSION<\/code> \u0645\u06cc\u06a9\u0631\u0648 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u06c1\u06cc\u06ba\u060c \u0627\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0628\u0627\u0644\u0622\u062e\u0631 <code>modinfo<\/code> \u067e\u0691\u06be\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u0633\u06d2 \u0627\u0633\u06cc \u0637\u0631\u062d \u0686\u06be\u0648\u0691 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0627\u0633 \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u067e\u0631\u06cc\u0634\u0627\u0646\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06af\u06cc\u060c \u0644\u06cc\u06a9\u0646 \u062d\u0627\u0644\u06cc\u06c1 \u062f\u0627\u0646\u0627 \u0622\u067e \u06a9\u0648 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u06a9\u0648\u062a\u0627\u06c1\u06cc \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062e\u0628\u0631\u062f\u0627\u0631 \u06a9\u0631\u06d2 \u06af\u0627\u06d4 <code>MODULE_DESCRIPTION<\/code>\u0634\u0631\u0648\u0639 \u0633\u06d2 \u062a\u06cc\u0646\u0648\u06ba \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u06c1\u06cc \u0648\u062c\u06c1 \u06a9\u0627\u0641\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-makefile-is-stranger-than-it-looks\">\u0645\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0646\u0638\u0631 \u0622\u0646\u06d2 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u062c\u0646\u0628\u06cc \u06c1\u06d2\u06d4<\/h2>\n<pre><code class=\"language-makefile\">obj-m += hello.o\n\nall:\n\tmake -C \/lib\/modules\/$(shell uname -r)\/build M=$(PWD) modules\n\nclean:\n\tmake -C \/lib\/modules\/$(shell uname -r)\/build M=$(PWD) clean\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0645\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u06cc \u0637\u0631\u062d \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0633 \u0645\u06cc\u06ba \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0645\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 <code>obj-m += hello.o<\/code> \u06cc\u06c1 \u0645\u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u062c\u0633\u06d2 \u0622\u067e \u0646\u06d2 \u0627\u06cc\u062c\u0627\u062f \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0627\u0639\u0644\u0627\u0645\u06cc\u06c1 \u06c1\u06d2 \u062c\u0633\u06d2 kbuild \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u067e\u0691\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u06a9\u0631\u0646\u0644 \u06a9\u0627 \u0627\u067e\u0646\u0627 \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>make -C<\/code> \u0644\u0627\u0626\u0646 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc\u0632 \u06a9\u0648 \u06a9\u0631\u0646\u0644 \u06c1\u06cc\u0688\u0631 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u06c1\u0627\u06ba \u06a9\u0631\u0646\u0644 \u06a9\u0627 \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u0686\u0644\u0627\u062a\u06cc \u06c1\u06d2\u060c \u06af\u0632\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2: <code>M=$(PWD)<\/code> &quot;\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0627 \u0630\u0631\u06cc\u0639\u06c1 \u06cc\u06c1\u0627\u06ba \u06c1\u06d2\u06d4&#8221; \u0645\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0627\u06cc\u06a9 \u067e\u062a\u0644\u0627 \u0631\u06cc\u067e\u0631 \u06c1\u06d2 \u062c\u0648 \u06a9\u0627\u0645 \u06a9\u0648 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u06d2 \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u062a\u06a9 \u067e\u06c1\u0646\u0686\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u0622\u067e \u0646\u06d2 \u0646\u06c1\u06cc\u06ba \u0644\u06a9\u06be\u0627 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0622\u0633\u0627\u0646\u06cc \u0633\u06d2 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<p>\u0627\u0646 \u0628\u0627\u0644\u0648\u0627\u0633\u0637\u06c1 \u0648\u062c\u0648\u06c1\u0627\u062a \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u0627\u0646 \u0637\u0631\u06cc\u0642\u0648\u06ba \u0633\u06d2 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u062c\u0648 \u06a9\u0648\u0688 \u0633\u06d2 \u063a\u06cc\u0631 \u0645\u062a\u0639\u0644\u0642 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u06a9\u0631\u0646\u0644 \u06c1\u06cc\u0688\u0631 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0627\u0633 \u0637\u0631\u062d \u0645\u0631\u062a\u0628 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0637\u0631\u062d \u06cc\u06c1 libc \u06c1\u06cc\u0688\u0631 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0645\u0631\u062a\u0628 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u06cc\u06ba \u062c\u06be\u0646\u0688\u0648\u06ba \u0627\u0648\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0641\u0627\u0626\u0644 \u0633\u06d2 \u06a9\u0631\u0646\u0644 \u0628\u0644\u0688 \u0686\u0644\u0627 \u0631\u06c1\u0627 \u06c1\u0648\u06ba\u06d4<\/p>\n<h2 id=\"heading-what-the-build-actually-did\">\u062a\u0639\u0645\u06cc\u0631 \u0646\u06d2 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06a9\u06cc\u0627<\/h2>\n<p>\u0686\u0644\u0627\u0626\u06cc\u06ba <code>make<\/code> \u0627\u0633\u06d2 \u0646\u06c1 \u0686\u06be\u0648\u0691\u06cc\u06ba \u0627\u0648\u0631 \u0622\u0624\u0679 \u067e\u0679 \u067e\u0691\u06be\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-text\">make -C \/lib\/modules\/5.15.0-190-generic\/build M=\/home\/chris\/lkm modules\nmake[1]: Entering directory '\/usr\/src\/linux-headers-5.15.0-190-generic'\n  CC [M]  \/home\/chris\/lkm\/hello.o\n  MODPOST \/home\/chris\/lkm\/Module.symvers\n  CC [M]  \/home\/chris\/lkm\/hello.mod.o\n  LD [M]  \/home\/chris\/lkm\/hello.ko\n  BTF [M] \/home\/chris\/lkm\/hello.ko\nSkipping BTF generation for \/home\/chris\/lkm\/hello.ko due to unavailability of vmlinux\n<\/code><\/pre>\n<p>\u067e\u0627\u0646\u0686 \u0645\u0631\u0627\u062d\u0644 \u0645\u06cc\u06ba \u0633\u06d2 \u0635\u0631\u0641 \u067e\u06c1\u0644\u0627 \u0645\u0631\u062d\u0644\u06c1 \u0645\u062a\u0648\u0642\u0639 \u062a\u0627\u0644\u06cc\u0641 \u06c1\u06d2\u06d4<\/p>\n<p><code>CC [M] hello.o<\/code>    \u0645\u0627\u062e\u0630 \u0645\u0631\u062a\u0628 \u06a9\u0631\u06cc\u06ba\u06d4 \u0639\u0627\u0645<\/p>\n<p><code>MODPOST<\/code>    \u06cc\u06c1 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0627\u06cc\u06a9 \u0642\u062f\u0645 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062d\u0648\u0627\u0644\u06c1 \u0634\u062f\u06c1 \u0644\u06cc\u06a9\u0646 \u063a\u06cc\u0631 \u0645\u062a\u0639\u06cc\u0646\u06c1 \u0639\u0644\u0627\u0645\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u0626\u06d2 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0628\u0631\u0622\u0645\u062f \u0634\u062f\u06c1 \u062f\u0627\u0646\u0627 \u06a9\u06d2 \u0633\u0645\u0628\u0644 \u0679\u06cc\u0628\u0644 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u06c1\u0631 \u0639\u0644\u0627\u0645\u062a \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u06af\u0631 \u06cc\u06c1 \u062f\u0627\u0646\u0627 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u06af\u0626\u06cc \u06a9\u0648\u0626\u06cc \u0686\u06cc\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u0646\u0627\u06a9\u0627\u0645 \u0628\u0646\u0627 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u06be\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba <code>hello.mod.c<\/code>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc \u0633\u06cc \u06af\u0644\u0648 \u0641\u0627\u0626\u0644 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0627 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>CC [M] hello.mod.o<\/code>    \u0645\u0631\u062a\u0628 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u06af\u0644\u0648 \u0628\u0646\u0627\u0626\u06cc\u06ba <code>LD [M]<\/code> \u06c1\u0645 \u0622\u062e\u0631 \u0645\u06cc\u06ba \u0627\u0633\u06d2 \u0627\u0639\u062a\u0631\u0627\u0636 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062c\u0648\u0691\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>.ko<\/code>.<\/p>\n<p><code>BTF [M]<\/code>    \u0679\u0631\u06cc\u06a9\u0646\u06af \u0679\u0648\u0644 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0642\u0633\u0645 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0646\u0633\u0644\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u0686\u0648\u0646\u06a9\u06c1 BTF \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u063a\u06cc\u0631 \u06a9\u0645\u067e\u0631\u06cc\u0633\u0688 \u0641\u0627\u0626\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u06c1\u0645 \u0646\u06d2 \u0627\u0633\u06d2 \u06cc\u06c1\u0627\u06ba \u0686\u06be\u0648\u0691 \u062f\u06cc\u0627 \u06c1\u06d2\u06d4 <code>vmlinux<\/code> \u0627\u0645\u06cc\u062c\u0632 \u0627\u0648\u0631 \u0627\u0648\u0628\u0646\u0679\u0648 \u0627\u0633\u06d2 \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0641\u0631\u0627\u06c1\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0639\u0645\u06cc\u0631 \u0627\u0646\u062a\u0628\u0627\u06c1 \u0627\u0648\u0631 \u062c\u0627\u0631\u06cc \u06c1\u06d2. \u06cc\u06c1 \u062f\u0631\u0633\u062a \u06c1\u06d2\u06d4 BTF \u0645\u0641\u06cc\u062f \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0636\u0631\u0648\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-whats-inside-a-ko-file\">.ko \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <code>.ko<\/code> \u06cc\u06c1 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 ELF \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u06a9\u0631\u0646\u0644 \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u062d\u0635\u06d2 \u0634\u0627\u0645\u0644 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u067e\u0631 \u0627\u06cc\u06a9 \u0646\u0638\u0631 \u0688\u0627\u0644\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">modinfo .\/hello.ko\n<\/code><\/pre>\n<pre><code class=\"language-text\">version:        0.1\ndescription:    A minimal loadable kernel module\nauthor:         Chris Roy\nlicense:        GPL\nsrcversion:     39D86510C9FF65D797EAF90\ndepends:        \nretpoline:      Y\nname:           hello\nvermagic:       5.15.0-190-generic SMP mod_unload modversions\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0633\u0628 \u0627\u06cc\u06a9 ELF \u0633\u06cc\u06a9\u0634\u0646 \u0645\u06cc\u06ba \u06c1\u06d2 \u0627\u0648\u0631 null-separated strings \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0645\u062d\u0641\u0648\u0638 \u06c1\u06d2\u06d4 \u0622\u067e \u0641\u0627\u0626\u0644 \u0633\u06d2 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u067e\u0691\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">objcopy -O binary --only-section=.modinfo hello.ko \/dev\/stdout | tr '\u0000' 'n'\n<\/code><\/pre>\n<p>\u0622\u0626\u06cc\u06d2 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0646\u0645\u0628\u0631\u0648\u06ba \u067e\u0631 \u0648\u0627\u067e\u0633 \u062c\u0627\u0626\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0688\u0633\u06a9 \u067e\u0631 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 106,000 \u0628\u0627\u0626\u0679\u0633 \u06a9\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">ls -l hello.ko\ncp hello.ko \/tmp\/ && strip --strip-debug \/tmp\/hello.ko && ls -l \/tmp\/hello.ko\n<\/code><\/pre>\n<pre><code class=\"language-text\">105984  hello.ko\n  4864  \/tmp\/hello.ko\n<\/code><\/pre>\n<p>\u0627\u0635\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644 5KB \u0633\u06d2 \u06a9\u0645 \u06c1\u06d2\u06d4 \u0628\u0627\u0642\u06cc \u0633\u0628 \u06a9\u0686\u06be DWARF \u0688\u06cc\u0628\u06af \u0627\u0646\u0641\u0627\u0631\u0645\u06cc\u0634\u0646 \u06c1\u06d2 \u062c\u0633\u06d2 \u0628\u0644\u0688 \u0646\u06d2 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06d2 \u0679\u0648\u0644\u0632 \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba: <code>crash<\/code> \u0627\u0648\u0631 <code>gdb<\/code> \u0627\u06af\u0631 \u0622\u067e \u06af\u06be\u0628\u0631\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0622\u067e \u06a9\u0648\u0688 \u06a9\u0648 \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a\u060c \u062f\u0627\u0646\u0627 \u0688\u06cc\u0628\u06af \u0633\u06cc\u06a9\u0634\u0646 \u06a9\u0648 \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u06cc \u0642\u06cc\u0645\u062a \u0628\u0691\u06cc \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc \u062a\u0639\u062f\u0627\u062f \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-your-hello-world-already-depends-on-three-things\">\u0622\u067e \u06a9\u06cc \u06c1\u06cc\u0644\u0648 \u0648\u0631\u0644\u0688 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u062a\u06cc\u0646 \u0686\u06cc\u0632\u0648\u06ba \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2:<\/h2>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062d\u0635\u06c1 \u06c1\u06d2 \u062c\u0648 \u06a9\u0627\u0634 \u06a9\u0633\u06cc \u0646\u06d2 \u0645\u062c\u06be\u06d2 \u067e\u06c1\u0644\u06d2 \u062f\u06a9\u06be\u0627\u06cc\u0627 \u06c1\u0648\u062a\u0627\u06d4 \u062f\u0627\u0646\u0627 \u0633\u06d2 \u067e\u0648\u0686\u06be\u06cc\u06ba \u06a9\u06c1 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u0648 \u06a9\u06cc\u0627 \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">nm -u hello.ko\n<\/code><\/pre>\n<pre><code class=\"language-text\">U __fentry__\nU _printk\nU __x86_return_thunk\n<\/code><\/pre>\n<p><code>U<\/code>    \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u063a\u06cc\u0631 \u0645\u062a\u0639\u06cc\u0646\u06c1\u06d4 \u06cc\u06c1 \u0648\u06c1 \u0639\u0644\u0627\u0645\u062a\u06cc\u06ba \u06c1\u06cc\u06ba \u062c\u0646 \u06a9\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u06c1 \u0639\u0644\u0627\u0645\u062a\u06cc\u06ba \u062c\u0648 \u062f\u0627\u0646\u0627 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u06d2 \u0648\u0642\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<p><code>_printk<\/code>    \u0622\u067e \u0648\u0636\u0627\u062d\u062a \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06a9\u06cc\u0648\u0646\u06a9\u06c1 <code>pr_info<\/code> \u0627\u0633 \u067e\u0631 \u067e\u06be\u06cc\u0644\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>__fentry__<\/code>    \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06a9\u0631\u0646\u0644 \u0641\u0646\u06a9\u0634\u0646 \u0679\u0631\u06cc\u0633\u0646\u06af \u0633\u067e\u0648\u0631\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u06cc\u06c1 \u0627\u06cc\u06a9 \u06a9\u0627\u0644 \u06c1\u06d2 \u062c\u0633\u06d2 \u06a9\u0645\u067e\u0627\u0626\u0644\u0631 \u06c1\u0631 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0627\u0648\u067e\u0631 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0631 \u0641\u0646\u06a9\u0634\u0646 \u062c\u0648 \u0622\u067e \u0645\u0627\u0688\u06cc\u0648\u0644 \u0645\u06cc\u06ba \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1 \u06c1\u06a9 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0686\u0627\u06c1\u06d2 \u0627\u0633 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u0648 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4 <code>ftrace<\/code> \u0622\u067e \u0628\u0639\u062f \u0645\u06cc\u06ba \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0686\u06cc\u0632 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0645\u0631\u062a\u0628 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u067e\u0646\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u0622\u0644\u06c1 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><code>__x86_return_thunk<\/code>    \u0633\u067e\u06cc\u06a9\u0679\u0631 \u062a\u062e\u0641\u06cc\u0641. \u0645\u0631\u062a\u0628 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0646\u06d2 \u0645\u0639\u0645\u0648\u0644 \u06a9\u06cc \u0648\u0627\u067e\u0633\u06cc \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a \u06a9\u0648 \u062a\u06be\u0646\u06a9 \u06a9\u0627\u0644 \u0633\u06d2 \u0628\u062f\u0644 \u062f\u06cc\u0627\u060c \u062c\u0648 \u0642\u06cc\u0627\u0633 \u0622\u0631\u0627\u0626\u06cc \u067e\u0631 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u0633\u06d2 \u0628\u0686\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u067e\u0631 \u06a9\u0645\u0632\u0648\u0631\u06cc \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062a\u062e\u0641\u06cc\u0641 \u0627\u0633 \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u06a9\u0631\u0646\u0644 \u06a9\u0648\u0688 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0642\u0637\u0639 \u0646\u0638\u0631 \u0627\u0633 \u06a9\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06c1\u06d2 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u06cc\u06c1 \u0627\u0646 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u06a9 \u0644\u0627\u0626\u0646 \u067e\u0631\u0646\u0679 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06c1\u06cc\u0644\u0648 \u0648\u0631\u0644\u0688 \u06a9\u06cc \u062a\u06cc\u0646 \u0639\u0644\u0627\u0645\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u062f\u0648 \u0645\u0634\u06cc\u0646\u0648\u06ba \u067e\u0631 \u0644\u06af\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06c1\u06cc\u06ba\u06d4 \u06a9\u0631\u0646\u0644 \u06a9\u0648\u0688 \u0644\u06a9\u06be\u0646\u0627 \u06a9\u06cc\u0633\u0627 \u06c1\u06d2 \u0627\u0633 \u06a9\u06cc \u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u0646\u0635\u0641\u0627\u0646\u06c1 \u062a\u0635\u0648\u06cc\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>MODPOST \u0646\u06d2 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u06cc\u0627 \u06a9\u06c1 \u0644\u0646\u06a9 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062a\u06cc\u0646\u0648\u06ba \u0645\u0648\u062c\u0648\u062f \u062a\u06be\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0646\u06d2 \u06a9\u0633\u06cc \u0627\u06cc\u0633\u06d2 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u06cc\u0627 \u062a\u06be\u0627 \u062c\u0633\u06d2 \u06a9\u0631\u0646\u0644 \u0646\u06d2 \u0628\u0631\u0622\u0645\u062f \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062a\u06be\u0627\u060c \u062a\u0648 \u06cc\u06c1 \u0645\u0627\u0688\u06cc\u0648\u0644 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 &quot;\u063a\u06cc\u0631 \u0645\u062a\u0639\u06cc\u0646\u06c1 \u0639\u0644\u0627\u0645\u062a&#8221; \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u062a\u0627 \u062c\u0648 \u0644\u0648\u0688 \u067e\u0631 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u062a\u0627\u06d4<\/p>\n<h2 id=\"heading-vermagic-and-why-your-module-refuses-to-load\"><code>vermagic<\/code>\u0627\u0648\u0631 \u06a9\u06cc\u0648\u06ba \u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0627\u0646\u06a9\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0627\u0633 \u0644\u0627\u0626\u0646 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062f\u06cc\u06a9\u06be\u0648 <code>modinfo<\/code>:<\/p>\n<pre><code class=\"language-text\">vermagic: 5.15.0-190-generic SMP mod_unload modversions\n<\/code><\/pre>\n<p>\u06a9\u0633\u06cc \u0628\u06be\u06cc \u0686\u06cc\u0632 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u062f\u0627\u0646\u0627 \u0627\u0633 \u0633\u0679\u0631\u0646\u06af \u06a9\u0627 \u0627\u067e\u0646\u06d2 \u0633\u0679\u0631\u0646\u06af \u0633\u06d2 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0637\u0631\u062d \u06a9\u06cc \u0645\u0645\u0627\u062b\u0644\u062a \u06a9\u0648 \u0645\u0633\u062a\u0631\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0631\u06cc\u0644\u06cc\u0632 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0686\u0627\u06c1\u06d2 \u062f\u0627\u0646\u0627 SMP \u06c1\u06d2\u060c \u0622\u06cc\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0627\u0646 \u0644\u0648\u0688\u0646\u06af \u06a9\u0648 \u0645\u0631\u062a\u0628 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0622\u06cc\u0627 \u0639\u0644\u0627\u0645\u062a \u0648\u0631\u0698\u0646 \u0622\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u06cc \u0648\u062c\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0633\u0633\u0679\u0645 \u067e\u0631 \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0648\u0633\u0631\u06d2 \u067e\u0631 \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06a9\u06cc\u0648\u06ba \u06a9\u0631\u0646\u0644 \u06a9\u0648 \u0627\u067e \u06af\u0631\u06cc\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u0646\u06a9\u0633 \u06a9\u0631\u0646\u0644 \u06a9\u06d2 \u0627\u0646\u062f\u0631 ABI \u06a9\u06d2 \u0627\u0633\u062a\u062d\u06a9\u0627\u0645 \u06a9\u06cc \u06a9\u0648\u0626\u06cc \u0636\u0645\u0627\u0646\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0631\u06cc\u0644\u06cc\u0632 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0688\u06be\u0627\u0646\u0686\u06c1 \u062a\u0628\u062f\u06cc\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u06af\u0631 \u0627\u06cc\u06a9 \u0644\u06d2 \u0622\u0624\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0631\u062a\u0628 \u06a9\u0631\u062f\u06c1 \u0645\u0627\u0688\u06cc\u0648\u0644 \u062f\u0648\u0633\u0631\u06d2 \u0644\u06d2 \u0622\u0624\u0679 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u062e\u0631\u0627\u0628 \u06a9\u0631 \u062f\u06d2 \u06af\u0627\u06d4 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0627\u0646\u06a9\u0627\u0631 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u06cc \u0686\u06cc\u0632 \u06c1\u06d2 \u062c\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062f\u0627\u0646\u0627 \u0645\u062d\u062a\u0627\u0637 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u06cc \u0648\u062c\u06c1 \u06c1\u06d2 \u06a9\u06c1 DKMS \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 VirtualBox\u060c ZFS\u060c \u06cc\u0627 NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0627\u0633 \u0637\u0631\u062d \u0633\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0626\u06d2 \u062c\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1\u0627\u06ba \u0645\u0634\u06cc\u0646 \u067e\u0631:<\/p>\n<pre><code class=\"language-bash\">modinfo vboxdrv | head -3\n<\/code><\/pre>\n<pre><code class=\"language-text\">filename:       \/lib\/modules\/5.15.0-190-generic\/updates\/dkms\/vboxdrv.ko\nversion:        6.1.50_Ubuntu r161033 (0x00320000)\nlicense:        GPL\n<\/code><\/pre>\n<p>\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0627\u0633 \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06cc\u06ba\u06d4 <code>updates\/dkms\/<\/code> \u0627\u0633 \u0633\u0691\u06a9 \u067e\u0631\u06d4 \u0688\u06cc \u06a9\u06d2 \u0627\u06cc\u0645 \u0627\u06cc\u0633 \u0633\u0648\u0631\u0633 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06c1\u0631 \u0628\u0627\u0631 \u062c\u0628 \u0646\u06cc\u0627 \u062f\u0627\u0646\u0627 \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0645\u0627\u0688\u06cc\u0648\u0644 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0646\u0627\u06af\u0632\u06cc\u0631 \u0637\u0648\u0631 \u067e\u0631 \u0628\u0631\u0645\u0627\u062c\u06cc\u06a9 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u062f\u06cc\u06a9\u06be \u0628\u06be\u0627\u0644 \u06a9\u06d2 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u06a9\u0627 \u0646\u062a\u06cc\u062c\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-passing-parameters-at-load-time\">\u0628\u0648\u062c\u06be \u067e\u0631 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u067e\u0627\u0633 \u06a9\u0631\u0646\u0627<\/h2>\n<p>\u0622\u067e \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u06cc\u0633\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u0627\u06cc\u06a9 \u06c1\u06cc \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u0648\u06d4 <code>module_param<\/code> \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u0648 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u06a9\u0631\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0644\u0648\u0688 \u06a9\u06d2 \u0648\u0642\u062a \u0627\u0646 \u06a9\u06cc \u0642\u062f\u0631\u06cc\u06ba \u0633\u06cc\u0679 \u06a9\u06cc \u062c\u0627\u0633\u06a9\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u0648 \u0628\u0637\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba\u06d4 <code>param.c<\/code> \u067e\u06c1\u0644\u0648 \u0628\u06c1 \u067e\u06c1\u0644\u0648 <code>hello.c<\/code>:<\/p>\n<pre><code class=\"language-c\">#include <linux>\n#include <linux>\n\nMODULE_LICENSE(\"GPL\");\nMODULE_DESCRIPTION(\"A module that takes parameters\");\n\nstatic char *who = \"world\";\nstatic int times = 1;\n\nmodule_param(who, charp, 0444);\nMODULE_PARM_DESC(who, \"who to greet\");\nmodule_param(times, int, 0644);\nMODULE_PARM_DESC(times, \"how many times to greet\");\n\nstatic int __init param_init(void)\n{\n    int i;\n\n    for (i = 0; i < times; i++)\n        pr_info(\"param: hello, %sn\", who);\n    return 0;\n}\n\nstatic void __exit param_exit(void)\n{\n    pr_info(\"param: unloadedn\");\n}\n\nmodule_init(param_init);\nmodule_exit(param_exit);\n<\/linux><\/linux><\/code><\/pre>\n<p>\u0641\u06c1\u0631\u0633\u062a \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u06d2 \u0627\u067e\u0646\u06cc \u0645\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-makefile\">obj-m += hello.o param.o\n<\/code><\/pre>\n<p>\u062a\u06cc\u0646 \u062f\u0644\u0627\u0626\u0644 \u0627\u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631\u060c \u0627\u0633 \u06a9\u06cc \u0642\u0633\u0645\u060c \u0627\u0648\u0631 \u0641\u0627\u0626\u0644 \u067e\u0631 \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u0633 \u0645\u062a\u063a\u06cc\u0631 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 <code>\/sys\/module\/<name>\/parameters\/<\/name><\/code>. \u0645\u0648\u0688 <code>0444<\/code> \u06cc\u06c1 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06d2 \u0627\u0648\u0631 \u0644\u0648\u0688 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 <code>0644<\/code> \u06cc\u06c1 \u0645\u0641\u06cc\u062f \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0631\u0648\u0679 \u0627\u0633 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0644\u06a9\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06d2 \u0686\u0644\u0646\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0633 \u06a9\u06cc \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u0646\u0627\u0632\u0639\u06c1 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0637\u0631\u06cc\u0642\u06c1 \u0628\u06be\u06cc \u06c1\u06d2 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0633\u06cc \u0645\u062a\u063a\u06cc\u0631 \u06a9\u0648 \u0628\u062f\u0644\u0646\u06d2 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>charp<\/code>    char \u0627\u06cc\u06a9 \u067e\u0648\u0627\u0626\u0646\u0679\u0631 \u06c1\u06d2 \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0639\u0627\u0645 \u0627\u0642\u0633\u0627\u0645 \u06c1\u06cc\u06ba: <code>int<\/code>, <code>bool<\/code>, <code>long<\/code> \u0627\u0648\u0631 <code>charp<\/code> \u0635\u0641 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 <code>module_param_array<\/code>. \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648\u0626\u06cc \u0627\u06cc\u0633\u06cc \u0642\u0633\u0645 \u067e\u0627\u0633 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u0645\u062a\u063a\u06cc\u0631 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u062a\u0648\u060c \u0628\u0639\u062f \u0645\u06cc\u06ba \u063a\u0644\u0637 \u0628\u0631\u062a\u0627\u0624 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u062a\u0639\u0645\u06cc\u0631 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4<\/p>\n<p><code>MODULE_PARM_DESC<\/code>    \u062a\u0641\u0635\u06cc\u0644 \u06a9\u0648 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u0688\u0627\u0644\u06cc\u06ba\u06d4 \u06cc\u06c1\u0627\u06ba <code>modinfo<\/code> \u0627\u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">name:           param\nparm:           who:who to greet (charp)\nparm:           times:how many times to greet (int)\n<\/code><\/pre>\n<p>\u0644\u0648\u0688 \u0679\u0627\u0626\u0645 \u067e\u0631\u060c \u0627\u0633\u06d2 \u0627\u0633 \u0637\u0631\u062d \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba: <code>name=value<\/code> \u062c\u0648\u0691\u0627:<\/p>\n<pre><code class=\"language-bash\">sudo insmod .\/param.ko who=kernel times=3\n<\/code><\/pre>\n<p>\u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0633 \u06a9\u06d2 \u0642\u0628\u0648\u0644 \u06a9\u0631\u062f\u06c1 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u067e\u0691\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u067e\u0631\u06cc\u0634\u0627\u0646 \u06a9\u0646 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0648\u062c\u06c1 \u06c1\u06d2\u06d4 <code>MODULE_PARM_DESC<\/code> \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc<\/p>\n<h2 id=\"heading-loading-it-and-where-the-output-goes\">\u0644\u0648\u0688 \u0627\u0648\u0631 \u0622\u0624\u0679 \u067e\u0679 \u0645\u0642\u0627\u0645\u0627\u062a<\/h2>\n<pre><code class=\"language-bash\">sudo insmod .\/hello.ko\nsudo dmesg | tail -2\nlsmod | grep hello\nsudo rmmod hello\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>pr_info<\/code> \u0622\u0624\u0679 \u067e\u0679 \u06a9\u0631\u0646\u0644 \u0631\u0646\u06af \u0628\u0641\u0631 \u0645\u06cc\u06ba \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 <code>dmesg<\/code> \u0627\u06af\u0631 \u0679\u0631\u0645\u06cc\u0646\u0644 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 <code>dmesg<\/code> \u06cc\u06c1 \u0628\u06d2 \u0628\u0646\u06cc\u0627\u062f \u0631\u062f \u06c1\u06d2\u06d4 <code>kernel.dmesg_restrict<\/code>\u0627\u0648\u0631 <code>sudo journalctl -k | tail<\/code> \u0627\u0633\u06cc \u067e\u06cc\u063a\u0627\u0645 \u06a9\u0648 \u062c\u0631\u06cc\u062f\u06d2 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u067e\u0691\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>%pS<\/code> \u0641\u0627\u0631\u0645\u06cc\u0679 \u0633\u0679\u0631\u0646\u06af \u0645\u06cc\u06ba\u060c \u06a9\u0631\u0646\u0644 \u067e\u0648\u0627\u0626\u0646\u0679\u0631\u0632 \u06a9\u0648 \u062e\u0627\u0645 \u067e\u062a\u0648\u06ba \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u0639\u0644\u0627\u0645\u062a\u06cc \u0646\u0627\u0645\u0648\u06ba \u0627\u0648\u0631 \u0622\u0641\u0633\u06cc\u0679 \u06a9\u06d2 \u0628\u0637\u0648\u0631 \u067e\u0631\u0646\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u06c1\u06cc\u06a9\u0633\u0627 \u0688\u06cc\u0633\u06cc\u0645\u0644 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0644\u0627\u06af \u0644\u0627\u0626\u0646 \u0633\u06d2 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06a9\u0686\u06be \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p><code>lsmod<\/code>    \u067e\u0691\u06be\u06cc\u06ba <code>\/proc\/modules<\/code> \u06cc\u06c1 \u062a\u06cc\u0646 \u06a9\u0627\u0644\u0645 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2: \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0627 \u0646\u0627\u0645\u060c \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0627 \u0633\u0627\u0626\u0632\u060c \u0627\u0648\u0631 \u0645\u0627\u0688\u06cc\u0648\u0644 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0646\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u06af\u0646\u062a\u06cc\u06d4 \u063a\u06cc\u0631 \u0635\u0641\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u06af\u0646\u062a\u06cc \u0648\u0627\u0644\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u06a9\u0648 \u0627\u062a\u0627\u0631\u0627 \u0646\u06c1\u06cc\u06ba \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4 \u06cc\u06c1 \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u0648\u062c\u06c1 \u06c1\u06d2\u06d4 <code>rmmod<\/code> \u0645\u06cc\u06ba \u0627\u0646\u06a9\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u0648\u06ba\u06d4<\/p>\n<p>\u06a9\u0633\u06cc \u0628\u06be\u06cc \u0686\u06cc\u0632 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0627\u06cc\u06a9 \u0627\u0646\u062a\u0628\u0627\u06c1 \u06c1\u06d2\u06d4 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u062c\u06af\u06c1 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u06af \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u06a9\u06d2 \u06a9\u0631\u06cc\u0634 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0627\u06c1\u0645\u060c \u06cc\u06c1\u0627\u06ba \u0645\u0648\u062c\u0648\u062f \u06a9\u06cc\u0691\u06d2 \u0622\u067e \u06a9\u06d2 \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u06a9\u0631\u06cc\u0634 \u06c1\u0648\u0646\u06d2 \u06cc\u0627 \u0622\u067e \u06a9\u06d2 \u0641\u0627\u0626\u0644 \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u062e\u0631\u0627\u0628 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u0627\u0633\u06d2 \u0648\u0631\u0686\u0648\u0626\u0644 \u0645\u0634\u06cc\u0646 \u067e\u0631 \u06a9\u0626\u06cc \u0628\u0627\u0631 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4 \u0627\u0633\u0646\u06cc\u067e \u0634\u0627\u0679 \u06a9\u06cc \u0642\u06cc\u0645\u062a \u062e\u0631\u0627\u0628 \u0688\u0633\u06a9 \u06a9\u06cc \u0642\u06cc\u0645\u062a \u0633\u06d2 \u0628\u06c1\u062a \u06a9\u0645 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-four-build-errors-and-what-they-mean\">4 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u06cc \u063a\u0644\u0637\u06cc\u0627\u06ba \u0627\u0648\u0631 \u0627\u0646 \u06a9\u0627 \u06a9\u06cc\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2\u06d4<\/h2>\n<p>\u06cc\u06c1 \u0686\u0627\u0631 \u0644\u0648\u06af \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0648\u0642\u062a \u0636\u0627\u0626\u0639 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u0686\u06be \u0645\u062e\u0635\u0648\u0635 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0622\u067e \u062c\u0627\u0646 \u0644\u06cc\u06ba \u06a9\u06c1 \u06a9\u06cc\u0627 \u067e\u0691\u06be\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>No rule to make target 'modules'. Stop.<\/code>    \u06a9\u0631\u0646\u0644 \u06c1\u06cc\u0688\u0631 \u063a\u0627\u0626\u0628 \u06c1\u06d2 \u06cc\u0627 \u0639\u0644\u0627\u0645\u062a\u06cc \u0644\u0646\u06a9 \u0627\u0633 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2: <code>\/lib\/modules\/$(uname -r)\/build<\/code> \u06a9\u06c1\u06cc\u06ba \u0628\u06be\u06cc \u06a9\u0648\u0626\u06cc \u067e\u0648\u0627\u0626\u0646\u0679 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06c1\u06cc\u0688\u0631 \u067e\u06cc\u06a9\u062c\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0686\u0644\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0631\u0646\u0644 \u0633\u06d2 \u0628\u0627\u0644\u06a9\u0644 \u0645\u0645\u0627\u062b\u0644 \u06c1\u0648\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0646\u06d2 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06d2 \u0628\u0639\u062f \u0633\u06d2 \u0631\u06cc\u0628\u0648\u0679 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u062f\u0627\u0646\u0627 \u0627\u06a9\u062b\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<p><code>ERROR: modpost: \"some_function\" [hello.ko] undefined!<\/code>    \u0622\u067e \u0646\u06d2 \u0627\u06cc\u06a9 \u0639\u0644\u0627\u0645\u062a \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u062f\u06cc\u0627 \u062c\u0648 \u062f\u0627\u0646\u0627 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0628\u0631\u0622\u0645\u062f \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1\u0627\u06ba \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0627\u0635\u0644 \u062a\u0639\u0645\u06cc\u0631 \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">ERROR: modpost: \"this_symbol_does_not_exist\" [bad.ko] undefined!\nmake[2]: *** [scripts\/Makefile.modpost:133: Module.symvers] Error 1\n<\/code><\/pre>\n<p>\u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0641\u0627\u0626\u062f\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06af\u0627\u06d4 \u0641\u0646\u06a9\u0634\u0646 \u062f\u0627\u0646\u0627 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0628\u0631\u0622\u0645\u062f \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u0627 \u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0631\u0622\u0645\u062f \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2: <code>EXPORT_SYMBOL_GPL<\/code> \u0627\u0648\u0631 \u0622\u067e \u06a9\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u063a\u06cc\u0631 GPL \u0644\u0627\u0626\u0633\u0646\u0633 \u06a9\u0627 \u0627\u0639\u0644\u0627\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba <code>grep the_symbol \/proc\/kallsyms<\/code>\u062f\u0627\u0631\u0627\u0644\u062d\u06a9\u0648\u0645\u062a \u06cc\u06c1\u0627\u06ba <code>T<\/code> \u062f\u0648\u0633\u0631\u06d2 \u06a9\u0627\u0644\u0645 \u0645\u06cc\u06ba \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0639\u0627\u0644\u0645\u06cc \u0645\u062a\u0646 \u06a9\u06cc \u0639\u0644\u0627\u0645\u062a \u06c1\u06d2\u06d4<\/p>\n<p><code>insmod: ERROR: could not insert module: Invalid module format<\/code>: \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u0631\u06c1\u06cc\u060c \u0644\u06cc\u06a9\u0646 \u0648\u0631\u0645\u062c\u06a9 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062f\u0627\u0646\u0627 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0645\u0648\u0627\u0632\u0646\u06c1 <code>modinfo .\/hello.ko | grep vermagic<\/code> \u06a9\u06d2 \u062e\u0644\u0627\u0641 <code>uname -r<\/code>. \u062f\u0631\u0633\u062a \u06c1\u06cc\u0688\u0631 \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0645\u0633\u0626\u0644\u06c1 \u062d\u0644 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<p><code>insmod: ERROR: could not insert module: Operation not permitted<\/code>: \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631\u060c \u0633\u06cc\u06a9\u06cc\u0648\u0631 \u0628\u0648\u0679 \u06cc\u0627 \u062a\u0648 \u063a\u06cc\u0631 \u062f\u0633\u062a\u062e\u0637 \u0634\u062f\u06c1 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u06a9\u0648 \u0645\u0633\u062a\u0631\u062f \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u06cc\u0627 \u0627\u0646\u06c1\u06cc\u06ba \u062e\u0641\u06cc\u06c1 \u0645\u0648\u0688 \u0645\u06cc\u06ba \u0644\u0627\u06a9 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba <code>mokutil --sb-state<\/code> \u0627\u0648\u0631 <code>cat \/sys\/kernel\/security\/lockdown<\/code> \u06cc\u06c1 \u0641\u0631\u0636 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u06a9\u0648\u0688 \u0646\u0627\u0642\u0635 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0686\u06cc\u0632\u060c \u0628\u0639\u062f \u0645\u06cc\u06ba \u0688\u06cc\u0628\u06af \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u0628\u06be\u06cc \u0633\u06cc\u06a9\u06be\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u06d2\u06d4 \u062f\u0631\u062e\u062a \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06a9\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u062f\u0627\u0646\u0627 \u0645\u06cc\u06ba \u062f\u0627\u063a\u062f\u0627\u0631 \u062c\u06be\u0646\u0688\u0627 \u0644\u06af \u062c\u0627\u0626\u06d2 \u06af\u0627\u060c \u062c\u0633\u06d2 \u0644\u0627\u06af \u0627\u0646 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0628\u0639\u062f \u0645\u06cc\u06ba \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u063a\u0644\u0637\u06cc\u0648\u06ba \u06cc\u0627 \u06af\u06be\u0628\u0631\u0627\u06c1\u0679 \u067e\u0631 \u0631\u067e\u0648\u0631\u0679 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-bash\">cat \/proc\/sys\/kernel\/tainted\n<\/code><\/pre>\n<p>\u0642\u062f\u0631 \u0627\u06cc\u06a9 \u0628\u0679 \u0645\u0627\u0633\u06a9 \u06c1\u06d2\u06d4 \u06cc\u06c1\u0627\u06ba \u0645\u0634\u06cc\u0646 4096 \u067e\u0691\u06be\u062a\u06cc \u06c1\u06d2 \u062c\u0648 \u06a9\u06c1 \u0628\u0679 12 \u06c1\u06d2\u06d4 <code>TAINT_OOT_MODULE<\/code>\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0633\u06cc \u0648\u0642\u062a \u062f\u0631\u062e\u062a \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06a9\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u0628\u0679 13 \u067e\u0691\u0648\u0633\u06cc \u0628\u0679 \u06c1\u06d2 \u062c\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0644\u0648\u06af \u0627\u0644\u062c\u06be\u0646 \u0645\u06cc\u06ba \u067e\u0691 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>TAINT_UNSIGNED_MODULE<\/code>\u0633\u06cc\u06a9\u06cc\u0648\u0631 \u0628\u0648\u0679 \u06a9\u06cc \u06cc\u06c1\u06cc \u067e\u0631\u0648\u0627\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u06a9\u0645\u0644 \u0641\u06c1\u0631\u0633\u062a \u06cc\u06c1\u0627\u06ba \u06c1\u06d2: <code>include\/linux\/panic.h<\/code> \u06a9\u0631\u0646\u0644 \u0645\u0627\u062e\u0630 \u0633\u06d2\u06d4 \u06a9\u0631\u0646\u0644 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u0622\u067e \u0633\u06d2 \u0628\u06af \u06a9\u0648 \u0635\u0627\u0641 \u062f\u0627\u0646\u0627 \u067e\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u0648 \u06a9\u06c1\u06cc\u06ba \u06af\u06d2 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u0648\u06c1 \u0627\u0633\u06d2 \u062f\u06cc\u06a9\u06be\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u0648\u06c1 \u0641\u0627\u0626\u0644 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u0626\u06d2 \u06af\u06cc \u06a9\u06c1 \u0622\u06cc\u0627 \u0627\u0646\u06c1\u0648\u06ba \u0646\u06d2 \u0628\u06af \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u0634 \u06a9\u06cc\u0627 \u06c1\u06d2 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-why-the-tutorial-you-found-doesnt-compile\">\u0645\u062c\u06be\u06d2 \u062c\u0648 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u0644\u0627 \u06c1\u06d2 \u0648\u06c1 \u0645\u0631\u062a\u0628 \u06a9\u06cc\u0648\u06ba \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0648\u06cc\u0628 \u067e\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644\u0632 \u0686\u0646\u062f \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u0633\u06d2 \u0622\u06af\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06cc\u06c1\u06cc \u0627\u06c1\u0645 \u06c1\u06d2\u06d4<\/p>\n<p><code>printk(KERN_INFO \"...\")<\/code>    \u0627\u06af\u0631\u0686\u06c1 \u06cc\u06c1 \u0627\u0628 \u0628\u06be\u06cc \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>pr_info<\/code> \u0645\u0648\u062c\u0648\u062f\u06c1 \u06c1\u062c\u06d2 \u06c1\u06d2 \u0627\u0648\u0631 \u0644\u0627\u06af \u0644\u06cc\u0648\u0644 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>init_module<\/code>    \u0627\u0648\u0631 <code>cleanup_module<\/code> \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0633\u0627\u062f\u06c1 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0646\u0627\u0645 \u067e\u0631\u0627\u0646\u06d2 \u06a9\u0646\u0648\u0646\u0634\u0646 \u062a\u06be\u06d2\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>module_init<\/code> \u0627\u0648\u0631 <code>module_exit<\/code> \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0622\u067e \u06a9\u0627 \u0627\u067e\u0646\u0627 \u0646\u0627\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u062a\u0646\u0627\u0632\u0639\u06c1 \u06a9\u06d2 \u062f\u0648\u0646\u0648\u06ba \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><code>MODULE_LICENSE<\/code>    \u0627\u0635\u0644 \u0645\u06cc\u06ba\u060c \u06cc\u06c1 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u062a\u06be\u0627. \u06cc\u06c1 \u0627\u0628 \u0635\u0631\u0641 GPL \u06a9\u06d2 \u0628\u0631\u0622\u0645\u062f \u06a9\u0631\u062f\u06c1 \u0639\u0644\u0627\u0645\u062a\u0648\u06ba \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u06cc\u06c1 \u0628\u0648\u062c\u06be \u0628\u0631\u062f\u0627\u0634\u062a \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>M=<\/code> \u062f\u0644\u0627\u0626\u0644 \u06c1\u062c\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u06d2 \u062a\u06be\u06d2\u06d4 <code>SUBDIRS=<\/code>. \u0627\u0633 \u06c1\u062c\u06d2 \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644\u0632 \u0627\u06cc\u06a9 \u063a\u06cc\u0631 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>SUBDIRS<\/code> \u06a9\u06c1\u06cc\u06ba<\/p>\n<p>\u06c1\u06cc\u0688\u0631 \u067e\u0627\u062a\u06be \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0686\u06cc\u0632 \u06a9\u0627 \u0630\u06a9\u0631 <code>\/usr\/src\/linux<\/code> \u06cc\u06c1 \u06a9\u0631\u0646\u0644 \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u06c1\u06cc\u0688\u0631 \u067e\u06cc\u06a9\u062c\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0642\u0633\u06cc\u0645 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062a\u06be\u0627\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u0627\u0641\u06cc \u067e\u0631\u0627\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0628\u0627\u0642\u06cc \u06a9\u0648 \u0628\u06be\u06cc \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0686\u06be\u0648\u0679\u06cc \u0639\u0644\u0627\u0645\u0627\u062a: <code><linux\/><\/code> \u0634\u0627\u0645\u0644 <code><linux\/><\/code> \u06a9\u0626\u06cc \u0633\u0627\u0644\u0648\u06ba \u0633\u06d2 \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0633\u0628\u0642 \u0635\u0631\u0641 \u067e\u0631\u0627\u0646\u06d2 \u06a9\u06cc \u06a9\u0627\u067e\u06cc\u0627\u06ba \u06c1\u06cc\u06ba\u060c \u0686\u0627\u06c1\u06d2 \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 \u0628\u06d2 \u0636\u0631\u0631 \u06c1\u0648\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0622\u067e \u06a9\u06d2 \u062f\u0627\u0646\u0627 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u0646\u062a\u0628\u0627\u06c1 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u06a9\u0627\u0641\u06cc \u062d\u0627\u0644\u06cc\u06c1 \u06c1\u06d2\u06d4 \u062f\u0648\u0633\u0631\u06cc \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba\u060c \u06c1\u062f\u0641 \u0634\u062f\u06c1 \u06a9\u0631\u0646\u0644 \u0648\u0631\u0698\u0646 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u067e\u06c1\u0644\u06cc \u063a\u0644\u0637\u06cc \u0645\u06cc\u06ba \u067e\u0631\u0646\u0679 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2.<\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>\u0627\u0628 \u0622\u067e \u06a9\u0631\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0628\u0644\u0688 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u0645\u0648\u0627\u062f \u06a9\u0648 \u067e\u0691\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0627\u0646 \u062a\u0645\u0627\u0645 \u0639\u0644\u0627\u0645\u062a\u0648\u06ba \u06a9\u0627 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0646 \u067e\u0631 \u06cc\u06c1 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>\u0632\u06cc\u0627\u062f\u06c1 \u0645\u0641\u06cc\u062f \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u06cc\u06c1 \u0627\u06cc\u06a9 \u062e\u0627\u0635 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u06cc\u0648\u06ba \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u0644\u0627\u067e\u062a\u06c1 <code>\/lib\/modules\/$(uname -r)\/build<\/code> \u06cc\u06c1 \u06c1\u06cc\u0688\u0631 \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4 \u0646\u0642\u0635\u0627\u0646 \u062f\u06c1 \u0639\u062f\u0645 \u0645\u0637\u0627\u0628\u0642\u062a\u06cc\u06ba \u062a\u0639\u0645\u06cc\u0631 \u0646\u0648 \u06c1\u06cc\u06ba\u06d4 MODPOST \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u063a\u06cc\u0631 \u0645\u062a\u0639\u06cc\u0646\u06c1 \u0639\u0644\u0627\u0645\u062a \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u062f\u0627\u0646\u0627 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u062f\u06c1 \u0686\u06cc\u0632 \u06a9\u0648 \u062e\u0627\u0631\u062c \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u06d2 \u06af\u0627\u060c \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634\u0648\u06ba \u06a9\u06cc \u06a9\u0648\u0626\u06cc \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u06d2 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u06d2 \u06af\u06cc\u06d4<\/p>\n<p>\u0622\u067e \u06cc\u06c1\u0627\u06ba \u0633\u06d2 \u0686\u0646\u062f \u0633\u0645\u062a \u062c\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u06cc\u06ba <code>\/proc<\/code> \u0645\u06cc\u06ba \u062f\u0627\u062e\u0644 \u06c1\u0648\u0646\u0627 <code>proc_create<\/code> \u06cc\u06c1 \u0633\u0628 \u0633\u06d2 \u0686\u06be\u0648\u0679\u06cc \u0645\u0641\u06cc\u062f \u0686\u06cc\u0632 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u06a9 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0627\u0646\u0627 \u062e\u0648\u062f \u067e\u0691\u06be\u0646\u0627 <code>Module.symvers<\/code> \u0646\u06cc\u0686\u06d2 <code>\/usr\/src\/linux-headers-$(uname -r)\/<\/code> MODPOST \u0679\u06cc\u0628\u0644 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0627\u0633 \u0633\u0633\u0679\u0645 \u0633\u06d2 26,420 \u0628\u0631\u0622\u0645\u062f \u0634\u062f\u06c1 \u0639\u0644\u0627\u0645\u062a\u06cc\u06ba \u0646\u0638\u0631 \u0622\u0626\u06cc\u06ba \u06af\u06cc \u0627\u0648\u0631 \u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u0648 \u0688\u0633\u067e\u0644\u06d2 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4 <code>EXPORT_SYMBOL<\/code> \u06cc\u0627 <code>EXPORT_SYMBOL_GPL<\/code>.<\/p>\n<p>\u06cc\u0627 \u0627\u067e\u0646\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627 \u0633\u0631\u0627\u063a \u0644\u06af\u0627\u0626\u06cc\u06ba \u062c\u0648 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1: <code>__fentry__<\/code> \u06cc\u06c1 \u0627\u06cc\u06a9 \u06c1\u06a9 \u06c1\u06d2 \u062c\u0648 \u067e\u06c1\u0644\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u0628\u0639\u062f \u0633\u06d2 \u06c1\u06cc \u06c1\u06d2\u06d4 \u0645\u0648\u062c\u0648\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 <code>ftrace<\/code> \u06cc\u06c1 \u0639\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062d\u06a9\u0645 \u06c1\u06d2\u06d4 \u0630\u06cc\u0644 \u0645\u06cc\u06ba \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06c1\u06d2\u06d4 <code>\/sys\/kernel\/tracing<\/code>\u0644\u06c1\u0630\u0627\u060c \u06cc\u06c1 \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u067e\u0631 \u0644\u06a9\u06be \u06a9\u0631 \u06a9\u0627\u0631\u0641\u0631\u0645\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">sudo sh -c 'echo hello_init > \/sys\/kernel\/tracing\/set_ftrace_filter'\nsudo sh -c 'echo function > \/sys\/kernel\/tracing\/current_tracer'\nsudo cat \/sys\/kernel\/tracing\/trace\n<\/code><\/pre>\n<p>\u067e\u0631\u0627\u0646\u06d2 \u0633\u0633\u0679\u0645\u0632 \u067e\u0631\u060c \u0631\u0627\u0633\u062a\u06c1 \u06cc\u06c1 \u06c1\u0648\u06af\u0627: <code>\/sys\/kernel\/debug\/tracing<\/code> \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u0644\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>trace-cmd<\/code> \u0627\u06cc\u06a9 \u06c1\u06cc \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u0648 \u0644\u067e\u06cc\u0679\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-epilogue\">\u0627\u06cc\u067e\u06cc\u0644\u0627\u06af<\/h2>\n<p>\u0645\u0646\u062f\u0631\u062c\u06c1 \u0628\u0627\u0644\u0627 \u0633\u0628\u06be\u06cc \u0645\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06cc\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06cc\u06c1\u06cc \u0645\u062c\u06be\u06d2 \u062f\u0644\u0686\u0633\u067e \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u06be\u0631\u06cc \u06c1\u0648\u0626\u06cc \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0627\u0646\u06c1\u06cc \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0686\u0644\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0648 \u062e\u0648\u062f \u06a9\u0631\u0646\u0644 \u06a9\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0648 \u067e\u0691\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u067e\u06cc\u0686 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u06a9\u06d2 \u062e\u06cc\u0627\u0644 \u0645\u06cc\u06ba \u0633\u0633\u0679\u0645 \u0646\u0627\u0641\u0630 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u062c\u0628 \u06cc\u06c1 \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0627\u0633 \u067e\u0631 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u062c\u0633\u06d2 \u0631\u062f \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688\u0646\u06af \u06a9\u0648 \u0627\u06cc\u06a9 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0627\u062c\u0627\u0632\u062a \u0645\u0627\u0688\u0644 \u0634\u0627\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u0627\u06d4 \u06cc\u06c1\u06cc \u0648\u062c\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062f\u0627\u0646\u0627 \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u062f\u0633\u062a\u062e\u0637\u0648\u06ba \u0627\u0648\u0631 \u062a\u0627\u0644\u06d2 \u0648\u0627\u0644\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u06a9\u06cc \u062d\u0641\u0627\u0638\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u06cc\u06ba \u0646\u06d2 \u0627\u06cc\u06a9 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0688\u06cc\u0633\u06a9 \u0679\u0627\u067e OS \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0633 \u0645\u0646\u0632\u0644 \u06a9\u0648 \u0645\u0627\u0631\u0627 \u062c\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u06a9\u0627 \u0645\u06cc\u0646\u06cc \u0641\u06cc\u0633\u0679 \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0648 \u06cc\u06c1 \u06a9\u0631\u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0688\u06cc\u0628\u06cc\u0646 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u06a9\u0648 \u0627\u0628\u06be\u06cc \u0628\u06be\u06cc \u0627\u0633 \u06a9\u06d2 \u0646\u06cc\u0686\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0648\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0645\u0627\u0688\u0644 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0642\u0628\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062f\u0627\u0646\u0627 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u067e\u0691\u062a\u0627\u0644 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0628\u0627\u0644\u06a9\u0644 \u0679\u06be\u06cc\u06a9 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u06a9\u0648\u0626\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u0627\u0648\u0631 \u06cc\u06c1 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc \u0631\u06a9\u0627\u0648\u0679 \u0628\u0646 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u06cc\u06ba \u0646\u0638\u0627\u0645 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0627\u0633\u0631\u0627\u0631 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba thechris.in \u067e\u0631 \u0644\u06a9\u06be\u062a\u0627 \u06c1\u0648\u06ba\u06d4<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0644\u06cc\u0646\u06a9\u0633 kernel module \u06cc\u06c1 \u06a9\u0648\u0688 \u06a9\u0627 \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u0627 \u0679\u06a9\u0691\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u067e\u0648\u0631\u06d2 \u062f\u0627\u0646\u0627 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0626\u06d2 \u0628\u063a\u06cc\u0631 \u0686\u0644\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062f\u0627\u0646\u0627 \u0645\u06cc\u06ba \u0644\u0648\u0688 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0627\u0641\u06cc \u0622\u0633\u0627\u0646 \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0645\u0634\u06cc\u0646 \u062c\u06cc\u0633\u06cc \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba\u060c \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627\u060c \u0628\u0631\u0622\u0645\u062f \u0634\u062f\u06c1 \u0627\u0648\u0631 \u063a\u06cc\u0631 \u062d\u0644 \u0634\u062f\u06c1 \u0639\u0644\u0627\u0645\u062a\u0648\u06ba \u0627\u0648\u0631 \u062d\u062a\u0645\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":29381,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-29380","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/29380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=29380"}],"version-history":[{"count":1,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/29380\/revisions"}],"predecessor-version":[{"id":29382,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/29380\/revisions\/29382"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media\/29381"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=29380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=29380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=29380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}