परिचय
लेखक
- Linux Kernel Module Programming Guide को सबसे पहले Ori Pomerantz ने Linux v2.2 के लिए लिखा था
- Peter Jay Salzman ने इसे Linux v2.4 के लिए अपडेट किया
- Michael Burian ने Linux v2.6 के लिए सह-मेंटेनेंस किया
- Bob Mottram ने Linux v3.8 के बाद के वर्ज़नों के उदाहरण अपडेट किए
- Jim Huang ने इसे हाल के Linux वर्ज़नों (v5.0 और बाद के) के लिए अपडेट किया और LaTeX दस्तावेज़ को संशोधित किया
आभार
- कई योगदानकर्ताओं ने सुधार और सुझाव दिए
kernel module क्या है?
- Linux kernel module ऐसा code segment है जिसे आवश्यकता के अनुसार kernel में dynamically load और unload किया जा सकता है
- kernel module सिस्टम को reboot किए बिना kernel functionality को विस्तार देता है
- module न होने पर हर नई functionality जोड़ने के लिए kernel को फिर से build करना और सिस्टम को reboot करना पड़ता है
kernel module package
- Ubuntu/Debian:
sudo apt-get install build-essential kmod
- Arch Linux:
sudo pacman -S gcc kmod
मेरे kernel में कौन-कौन से module हैं?
lsmod कमांड से वर्तमान kernel में loaded modules देखे जा सकते हैं
/proc/modules फ़ाइल में भी इन्हें देखा जा सकता है
क्या kernel डाउनलोड और compile करना ज़रूरी है?
- इस guide का पालन करने के लिए kernel को डाउनलोड और compile करना आवश्यक नहीं है
- test distribution पर examples चलाना सुरक्षित है
शुरू करने से पहले
- module versioning, X Window System के उपयोग, SecureBoot आदि से जुड़ी सावधानियाँ
Header
- kernel header files इंस्टॉल होना आवश्यक है
- Ubuntu/Debian:
sudo apt-get install kmod linux-headers-$(uname -r)
- Arch Linux:
sudo pacman -S linux-headers
- Fedora:
sudo dnf install kernel-devel kernel-headers
उदाहरण
- सभी उदाहरण दस्तावेज़ की
examples subdirectory में हैं
Hello World
सबसे सरल module
hello-1.c फ़ाइल बनाना और compile करना
- module को load और unload करने का तरीका समझाया गया है
Hello और Goodbye
module_init और module_exit macro के उपयोग का उदाहरण
__init और __exit macro
__init macro initialization function पूरा होने के बाद memory मुक्त कर देता है
__exit macro module के kernel में built-in होने पर function को छोड़ देता है
license और module documentation
MODULE_LICENSE macro का उपयोग करके module का license निर्दिष्ट किया जाता है
MODULE_AUTHOR, MODULE_DESCRIPTION macro के उपयोग के उदाहरण
command line arguments पास करना
module_param macro का उपयोग करके module को command line arguments दिए जाते हैं
MODULE_PARM_DESC macro का उपयोग करके arguments का विवरण जोड़ा जाता है
कई फ़ाइलों में फैला module
- कई source files में विभाजित kernel module का उदाहरण
precompiled kernel के लिए module build करना
- precompiled kernel के लिए module build करने की विधि समझाई गई है
GN⁺ का सारांश
- यह guide Linux kernel module programming के लिए एक व्यापक मार्गदर्शिका है, जो विभिन्न उदाहरणों के साथ kernel module के मूल सिद्धांतों से लेकर उन्नत विषयों तक को कवर करती है
- kernel module के माध्यम से सिस्टम को reboot किए बिना kernel functionality का विस्तार किया जा सकता है, जो developers के लिए बड़ा लाभ है
- module versioning, SecureBoot आदि जैसी सावधानियों को अच्छी तरह समझना और उनका पालन करना चाहिए
- संबंधित परियोजनाओं में Linux Device Drivers, The Linux Programming Interface आदि शामिल हैं
1 टिप्पणियां
Hacker News टिप्पणियाँ