वितरण kernel-header
पैकेज होते हैं, जैसा कि उनके नाम का अर्थ है, केवल कर्नेल हेडर फाइलें (प्लस आवश्यक प्लंबिंग) जो कि कर्नेल मॉड्यूल जैसे सॉफ़्टवेयर बनाने के लिए आवश्यक हैं।
बिल्ड आउटपुट को छोड़कर, आपको कर्नेल स्रोत निर्देशिका में बाइनरी फ़ाइलों को खोजने की उम्मीद नहीं करनी चाहिए । (यदि आप स्वयं कर्नेल को कॉन्फ़िगर और निर्मित करते हैं, तो कर्नेल स्रोत निर्देशिका में संकलित ऑब्जेक्ट, मॉड्यूल, निर्मित कर्नेल स्वयं और कुछ अन्य बाइनरी बिट्स और टुकड़े होंगे जो इसे काम करते हैं।)
KConfig
फाइलें कर्नेल कॉन्फ़िगरेशन विकल्पों का विवरण हैं । (और उनकी निर्भरताएं) जो किसी दिए गए निर्देशिका / मॉड्यूल के लिए उपलब्ध हैं।
इसके अलावा, यह सब (ज्यादातर) सी स्रोत कोड, हेडर फाइलें और Makefile
एस है। यहाँ और वहाँ कुछ सहायक स्क्रिप्ट हैं, और विधानसभा स्रोत भी।
हैडर पैकेज (आपने जो भी स्थापित किया है) में केवल ऊपर का हेडर भाग होता है (और यह सब नहीं - केवल "निर्यात" हेडर), और बिल्ड इंफ्रास्ट्रक्चर के कुछ। तो जो आप देख रहे हैं वह अपेक्षित है। हैडर संकुल नहीं है सी स्रोत कोड होता है (कुछ स्टब्स और निर्माण के बुनियादी ढांचे कोड को छोड़कर)। इस प्रकार के पैकेज होने का पूरा बिंदु अंतरिक्ष (और बैंडविड्थ) को बचाने के लिए है - पूरे लिनक्स कर्नेल स्रोत का पेड़ बड़ा है, और पूरी तरह से अनावश्यक है यदि आप कर्नेल को खुद संकलित करने का इरादा नहीं रखते हैं। हेडर पैकेज मॉड्यूल के निर्माण के लिए आवश्यक सही चीजों को प्रदान करने के लिए वितरण द्वारा निर्मित और शिप किए जाते हैं, लेकिन अब और नहीं। (वे निश्चित रूप से संकलित कर्नेल को शामिल नहीं करते हैं।)
आपकी टिप्पणी को संबोधित करते हुए: हेडर पैकेज कहीं भी स्थानांतरित नहीं होते हैं। वे कर्नेल के विशिष्ट संस्करणों के लिए बनाए गए हैं, एक विशिष्ट निर्देशिका में पैक किए गए हैं, और यह वही है। यह सिर्फ फाइलों का एक सेट है। (ध्यान दें कि हेडर पैकेज में वर्तमान स्थिर कर्नेल बाइनरी पैकेज के रूप में एक ही संस्करण नहीं है - हेडर पैकेज जेनेरिक हैं, और आपके द्वारा चलाए जा रहे वास्तविक कर्नेल से पिछड़ सकते हैं। हालांकि, उन्हें कर्नेल से नहीं होना चाहिए। वह संस्करण जो वर्तमान स्थापित (या लक्ष्य) कर्नेल से अधिक हाल का है।)
स्थापित कर्नेल बायनेरिज़ आमतौर पर /boot
बूटलोडर बायनेरिज़ और कॉन्फ़िगरेशन फ़ाइलों के साथ निर्देशिका में स्थापित किए जाते हैं । (यह कभी-कभी एक स्वतंत्र फाइल सिस्टम है, जो डिफ़ॉल्ट रूप से माउंट नहीं किया जाता है।) फ़ाइलों का सटीक नाम कर्नेल और वितरण पर निर्भर करता है। (तो बूटलोडर करता है।)
स्थापित कर्नेल मॉड्यूल की उप-निर्देशिकाओं में रहते हैं:
/lib/modules/`uname -r`/
इसलिए मेरे सिस्टम पर उदाहरण के लिए, वे वर्तमान में हैं
/lib/modules/3.1.4-gentoo/
पूर्ण कर्नेल स्रोत कोड : उबंटू पर, यदि आप चाहते हैं कि पूर्ण कर्नेल स्रोत स्वयं कर्नेल का निर्माण करें, तो आपको यहां दिए गए निर्देशों का पालन करना चाहिए ।
आप एक स्रोत टारबॉल को भी डाउनलोड कर सकते हैं kernel.org
और इसे कहीं से अनपैक कर सकते हैं ( यदि आप इस टारबॉल का उपयोग करते हैं, तो अपने व्यक्तिगत सामान और RPM द्वारा प्रबंधित सामान अलग रखें) उबंटू-स्थापित फ़ाइलों को अधिलेखित न करें।
/usr/src/linux
कर्नेल स्रोतों को रखने के लिए एक पारंपरिक स्थान है, लेकिन कुछ भी आपको कर्नेल स्रोतों को कहीं और रखने से रोकता है। यह पथ भी अक्सर एक निर्देशिका के लिए एक प्रतीकात्मक लिंक है। उदाहरण के लिए मेरे पास मेरी मशीन है:
$ ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Dec 7 17:03 /usr/src/linux -> linux-3.1.4-gentoo
सीलिंक वहाँ निर्माण अनुप्रयोगों को सरल बनाने के लिए है जो कर्नेल स्रोत पर निर्भर करते हैं। आप उस पथ को अपने रनिंग (या लक्ष्य) कर्नेल से लिंक करते हैं ताकि आपको एक मॉड्यूल आउट-ऑफ-ट्री का निर्माण करते समय सटीक संस्करण या पथ जानकारी निर्दिष्ट न करनी पड़े। स्रोत-आधारित वितरण के लिए कम से कम एक गुच्छा मदद करता है।