
FreeBSD Device Driver पुस्तक
पहले कदम से कर्नेल निपुणता तक
एडसन ब्रांडी द्वारा · संस्करण 2.0 (अप्रैल 2026)
FreeBSD Device Drivers: पहले कदम से कर्नेल निपुणता तक एक मुफ्त, ओपन-सोर्स पुस्तक है जो आपको "मैंने कभी कर्नेल कोड नहीं लिखा" से लेकर "मैं उत्पादन-गुणवत्ता वाले FreeBSD ड्राइवर लिख, डीबग और सबमिट कर सकता हूँ" तक ले जाती है। यह एक संदर्भ पुस्तक नहीं, बल्कि एक निर्देशित पाठ्यक्रम है, जो 38 अध्यायों, 6 परिशिष्टों और दर्जनों हाथों-हाथ प्रयोगशालाओं के रूप में संरचित है जो वास्तविक FreeBSD 14.x सिस्टम पर संकलित और लोड होते हैं।
यह पुस्तक उन पाठकों के लिए है जो सीखने को तैयार हैं बजाय इसके कि वे पहले से योग्य हों। यह UNIX की मूल बातों और C भाषा से शुरू होती है, कर्नेल द्वारा आपसे मांगे जाने वाले प्रत्येक अवधारणा को कदम-दर-कदम समझाती है, और तभी ड्राइवर विकास का द्वार खोलती है। जब तक आप DMA, इंटरप्ट और PCI कार्य तक पहुंचते हैं, तब तक शब्दावली स्वाभाविक लगती है, थोपी नहीं।
"कर्नेल प्रोग्रामिंग अभी भी प्रोग्रामिंग है, केवल अधिक स्पष्ट नियमों, अधिक जिम्मेदारी और थोड़ी अधिक शक्ति के साथ। एक बार जब आप इसे समझ लेते हैं, तो डर उत्साह में बदल जाता है।" (अध्याय 1 से)
पहले से ही उत्कृष्ट FreeBSD कर्नेल संदर्भ मौजूद हैं, जिनमें man 9, आर्किटेक्चर हैंडबुक और Newbus पेपर शामिल हैं। जो कमी थी वह एक एकल पाठ है जो:
myfirst ड्राइवर अध्याय दर अध्याय विकसित होता है, सिंक्रोनाइज़ेशन, फिर हार्डवेयर एक्सेस, फिर इंटरप्ट, फिर DMA प्राप्त करता है। आप अपने हाथों में एक ही कोड को परिपक्व होते देखते हैं।पुस्तक सात भागों में संगठित है जो एक दूसरे पर निर्मित होते हैं:
| भाग | शीर्षक | फोकस |
|---|---|---|
| 1 | आधार: FreeBSD, C और कर्नेल | प्रयोगशाला सेटअप, UNIX, कर्नेल कार्य के लिए C, ड्राइवर शारीरिकी |
| 2 | अपना पहला ड्राइवर बनाना | कैरेक्टर ड्राइवर, डिवाइस फ़ाइलें, रीड/राइट, I/O |
| 3 | समवर्तीता और सिंक्रोनाइज़ेशन | थ्रेड्स, म्यूटेक्स, कॉन्डवर, टाइमर, टास्कक्यू, सेमाफोर |
| 4 | हार्डवेयर और प्लेटफ़ॉर्म-स्तरीय एकीकरण | PCI, इंटरप्ट, MSI/MSI-X, DMA, पावर प्रबंधन |
| 5 | डीबगिंग, उपकरण और वास्तविक दुनिया के अभ्यास | ट्रेसिंग, KGDB, उन्नत डीबगिंग, प्रदर्शन ट्यूनिंग |
| 6 | परिवहन-विशिष्ट ड्राइवर लिखना | USB, सीरियल, स्टोरेज/VFS, नेटवर्क ड्राइवर |
| 7 | निपुणता विषय: विशेष परिदृश्य और किनारे के मामले | पोर्टेबिलिटी, वर्चुअलाइज़ेशन, सुरक्षा, एम्बेडेड, रिवर्स इंजीनियरिंग, अपस्ट्रीम सबमिशन |
अंत तक, आपने अपने स्वयं के कर्नेल मॉड्यूल लिखे और लोड किए होंगे, एक कैरेक्टर ड्राइवर बनाया होगा, वास्तविक इंटरप्ट और DMA को संभाला होगा, कर्नेल पैनिक को डीबग किया होगा, लोड के तहत अपने ड्राइवर को प्रोफाइल किया होगा, और अपने कार्य को FreeBSD प्रोजेक्ट में वापस योगदान करने के हर चरण से गुज़रे होंगे।
| पृष्ठ | 4,500+ |
| अध्याय | 38 |
| परिशिष्ट | 6 |
| पढ़ने का समय | ~100 घंटे |
| प्रयोगशाला समय | ~100 घंटे |
| कुल अध्ययन समय | ~200 घंटे (≈6 महीने प्रति सप्ताह 5 घंटे) |
| लक्ष्य FreeBSD रिलीज़ | 14.3 |
| भाषाएँ | अंग्रेज़ी (मूल) · ब्राज़ीलियाई पुर्तगाली (AI-अनुवादित) · स्पेनिश (AI-अनुवादित) |
| प्रारूप | PDF · EPUB · HTML · Markdown स्रोत |
अनुशंसित गति एक सप्ताह में एक अध्याय है, लगभग पाँच घंटे साप्ताहिक अध्ययन के साथ। वह अनुसूची पूरी पुस्तक को एक शैक्षणिक वर्ष में पहुँचने योग्य बनाती है। कुछ अध्याय (विशेष रूप से अध्याय 4 C पर, और भाग 4 के हार्डवेयर अध्याय) स्वाभाविक रूप से कई सप्ताह फैलते हैं।
प्रयोगशालाओं की दृढ़ता से अनुशंसा की जाती है। कर्नेल प्रोग्रामिंग मांसपेशी स्मृति को इस तरह पुरस्कृत करती है जैसे कुछ अन्य विषय करते हैं। वही अटैच पैटर्न, वही सफाई श्रृंखला, और वही लॉकिंग आकृति अध्याय दर अध्याय और ड्राइवर दर ड्राइवर दोहराई जाती है। उन पैटर्न को टाइप करना, उन्हें संकलित करना, उन्हें चालू कर्नेल में लोड करना, और उन्हें जानबूझकर विफल होते देखना उन्हें आंतरिक करने का सबसे प्रभावी तरीका है।