मैं जानना चाहता था कि क्या कर्नेल को बदलना संभव है, उदाहरण के लिए, फेडोरा के लिनक्स कर्नेल को फ्रीबीएसडी के स्थान पर बदलना।
अब, पहले से ही डेबियन GNU / kFreeBSD मौजूद था । क्या बीएसडी कर्नेल में लिनक्स डिस्ट्रो को कस्टमाइज़ करना मेरे लिए संभव है?
मैं जानना चाहता था कि क्या कर्नेल को बदलना संभव है, उदाहरण के लिए, फेडोरा के लिनक्स कर्नेल को फ्रीबीएसडी के स्थान पर बदलना।
अब, पहले से ही डेबियन GNU / kFreeBSD मौजूद था । क्या बीएसडी कर्नेल में लिनक्स डिस्ट्रो को कस्टमाइज़ करना मेरे लिए संभव है?
जवाबों:
नहीं, प्रत्येक कर्नेल अपनी विशेषताओं को अपने तरीके से लागू करता है। POSIX संगतता की एक बड़ी मात्रा है, लेकिन एक बार जब आप इससे बाहर निकलते हैं, तो निष्पादन योग्य को पहले से ही गिरी हुई तंत्र के साथ संकलित करने की आवश्यकता होती है। कई परियोजनाओं में स्रोत कोड होता है जो केवल संकलित हो जाता है यदि आप स्पष्ट रूप से कहते हैं कि आप FreeBSD या लिनक्स के लिए संकलन कर रहे हैं। अनिवार्य रूप से kFreeBSD क्या है। उपकरण FreeBSD कर्नेल का समर्थन करते हैं, लेकिन उन्हें इसके लिए संकलित करना होगा।
उदाहरण के लिए, यदि आप epoll_create
FreeBSD पर उपयोग करने की कोशिश करते हैं तो चीजें अपेक्षा के अनुरूप काम नहीं करेंगी।
बेशक, आप बीएसडी सिस्टम एलएफएस-शैली से उपकरणों को संकलित कर सकते हैं, लेकिन यह हमेशा के लिए लेने की संभावना है। एक नए कर्नेल को संकलित करने जितना सरल नहीं है।
फ्रीबीएसडी एक लिनक्स कर्नेल का उपयोग नहीं करता है - जैसा कि इसके नाम से पता चलता है, यह बीएसडी कर्नेल का उपयोग करता है।
लिनक्स कर्नेल को एक अलग लिनक्स कर्नेल के साथ बदलना संभव है (या तो आपने खुद को बनाया था या एक जिसे आपने वितरण से निकाला था)। इस बात से अवगत रहें कि आपके वितरण में उपयोगकर्ता-स्थान कार्यक्रम संकलित किए जाने के लिए विशेष कर्नेल सुविधाओं पर निर्भर हो सकते हैं, और यदि आप उन विशेषताओं के बिना बनाए गए कर्नेल पर चलाते हैं तो वे ठीक से काम नहीं कर सकते हैं। उदाहरण के लिए, एक सिस्टम-आधारित वितरण को कर्नेल में cgroups की आवश्यकता होगी।
आपके द्वारा उल्लेखित उदाहरण के लिए, हाँ एक GNU वितरण लिनक्स कर्नेल के लिए या BSD कर्नेल के लिए बनाया जा सकता है। कई मामलों में, #ifdef
दोनों के लिए संकलित कार्यक्रमों के बीच संकलन-समय के अंतर (जैसे ) होते हैं, भले ही गुठली एक ही एबीआई का विज्ञापन करें। कम से कम, निम्न-स्तरीय पुस्तकालयों जैसे कि सी रनटाइम लाइब्रेरी में अलग-अलग कर्नेल एबीआई को समायोजित करना है।
कर्नेल एक स्वतंत्र हिस्सा है और नियमित रूप से ऑपरेटिंग सिस्टम अपडेट के दौरान बदल दिया जाता है। कुछ मालिकाना ड्राइवरों (NVIDIA, आदि) की स्थापना स्क्रिप्ट हैं जो ड्राइवर को कर्नेल स्रोत में पैच करते हैं, उस कर्नेल का निर्माण करते हैं और इसके साथ वर्तमान कर्नेल को प्रतिस्थापित करते हैं। इसलिए यदि आप अपने स्वयं के कर्नेल संस्करण को विकसित करते हैं जो सभी आवश्यक कार्यक्षमता का प्रदर्शन कर सकता है, तो इसे लगाने और बाकी ऑपरेटिंग सिस्टम को चारों ओर छोड़ने के लिए एक बड़ी समस्या नहीं होनी चाहिए। हालाँकि अक्सर ऐसा "नया कर्नेल" हाल के आधिकारिक संस्करण से लिया जाता है।
सोलारिस कर्नेल को कुछ हद तक इस तरह से पोर्ट किया गया है, जिसके परिणामस्वरूप ओपनसोलारिस ग्नोम पर्यावरण चला रहा है।
फिर भी, पूरी तरह से अलग कर्नेल डालना महत्वपूर्ण प्रयास है, क्योंकि इंटरफेस को ब्रिज करना होगा। यह बहुत सी प्रोग्रामिंग की आवश्यकता है और निर्माण स्क्रिप्ट के बारे में नहीं है।