क्या अलग-अलग लिनक्स / यूनिक्स गुठली विनिमेय हैं?


14

क्या मैं लिनक्स कर्नेल ले सकता हूं और इसका उपयोग, कह सकता हूं, FreeBSD और इसके विपरीत (FreeBSD कर्नेल में, कहो, एक डेबियन)? वहाँ एक सार्वभौमिक जवाब है? मर्यादाएं क्या होती हैं? रुकावटें क्या हैं?


5
नहीं, बिल्कुल नहीं। एक अच्छा व्यायाम यह कोशिश करना और देखना होगा कि यह कैसे टूटता है। आप लिनक्स कर्नेल को बहुत पुराने लिनक्स कर्नेल के साथ मज़बूती से प्रतिस्थापित नहीं कर सकते। यूजरलैंड टूल्स को बदलना निश्चित रूप से उल्लेखनीय है (यदि पुन: संकलित किया गया है)।
Kusalananda

3
debian.org/ports/kfreebsd-gnu और debian.org/ports/hurd आपकी रुचि हो सकती है
muru

@ कुसलानंद यूजरलैंड टूल्स की जगह के बारे में, बीएसडी से लिनक्स में जाना दर्दनाक हो सकता है: कुछ बीएसडी उपकरण गैर-बीएसडी सिस्टम पर निर्माण करने के लिए काफी कठिन हैं ... मैं वर्षों में कुछ उपकरण भर आया हूं जो मुझे पोर्ट करना पसंद होगा , लेकिन यह गैर-तुच्छ हो गया: - /।
स्टीफन किट

1
@StephenKitt रिवर्स भी सच है :-) खासकर जब सॉफ्टवेयर एक्सेस /procया अन्य लिनक्स-विशिष्ट घंटियाँ और सीटी के लिए सक्षम होने के बारे में धारणा बनाता है ।
Kusalananda

आप जो कुछ भी कर सकते हैं वह x86_64 (linux) कर्नेल को लेना है और इसे i386 32-बिट वितरण (64-बिट इंटेल सीपीयू मानकर और संकलित 32-बिट बायनेरिज़ के लिए) पर स्थापित करना है। यह काफी अच्छी तरह से जाना जाता है, लेकिन तुरंत स्पष्ट नहीं ...
Radovan Garabík

जवाबों:


39

नहीं, यूनिक्स-शैली ऑपरेटिंग सिस्टम के विभिन्न कार्यान्वयनों से गुठली विनिमेय नहीं हैं, विशेष रूप से क्योंकि वे सभी सिस्टम (उपयोगकर्ता स्थान) के बाकी हिस्सों के लिए अलग-अलग इंटरफेस पेश करते हैं - उनके सिस्टम कॉल ( ioctlबारीकियों सहित ), जो विभिन्न वर्चुअल फ़ाइल सिस्टम का उपयोग करते हैं। ..

स्रोत स्तर पर, कुछ हद तक विनिमेय है, कर्नेल और सी लाइब्रेरी का संयोजन है, या इसके बजाय, उपयोगकर्ता-स्तरीय एपीआई जो कर्नेल और लाइब्रेरीज़ को उजागर करता है (अनिवार्य रूप से, POSIX द्वारा वर्णित परत पर दृश्य, बिना पर विचार है कि क्या यह है वास्तव में POSIX)। इसके उदाहरणों में डेबियन जीएनयू / kFreeBSD शामिल है , जो एक फ्रीबीएसडी कर्नेल के ऊपर एक डेबियन सिस्टम बनाता है, और डेबियन जीएनयू / हर्ड , जो हर्ड के ऊपर एक डेबियन सिस्टम बनाता है।

यह कर्नेल इंटरचेंजबिलिटी के स्तर पर काफी नहीं है, लेकिन एक सामान्य अनुप्रयोग बाइनरी इंटरफ़ेस को मानकीकृत करने का प्रयास किया गया है, जिससे बिनर्स को विभिन्न सिस्टमों पर पुन: उपयोग की आवश्यकता के बिना उपयोग किया जा सके। एक उदाहरण इंटेल बाइनरी कम्पेटिबिलिटी स्टैंडर्ड है , जो बायनेरिज़ को इसके कार्यान्वयन के लिए किसी भी यूनिक्स प्रणाली पर चलने की अनुमति देता है, जिसमें आईबीसीएस 2 परत के साथ लिनक्स के पुराने संस्करण भी शामिल हैं। मैंने 90 के दशक के उत्तरार्ध में लिनक्स पर WordPerfect चलाने के लिए इसका उपयोग किया था।

यह भी देखें कि लिनक्स के अंदर फ्रीबीएसडी चुरोट का निर्माण कैसे करें


1
कर्नेल और उपयोगकर्ता API को समन्वयित रखना कितना महत्वपूर्ण है, इस पर कुछ लोगों की राय काफी मज़बूत है :)
tonysdg

4
वास्तव में @tonysdg, और मेरा विश्वास करो, मुझे इसके बारे में सब पता है : - /।
स्टीफन किट

@tonysdg मुझे आपके लिंक पर एक पृष्ठ नहीं मिला। (जब तक कि यह एक चुटकुला मुझे याद न हो?)
म्बिग

1
@ mbrig: कल तक, यह वहां था - यहाँ एक संग्रहीत संस्करण है: web.archive.org/web/20171102142621/http://…
tonysdg

@StephenKitt: Ouch :( क्षमा करें! लेकिन कर्नेल में कोड शुरू करने के लिए भी प्रमुख यश!
tonysdg

4

कुछ गुठली में द्विआधारी संगतता है जो आपको विभिन्न ABI के साथ उपयोगकर्ता कार्यक्रम (जैसे फ्रीबल्ड एक हद तक लिनक्स बायनेरिज़ के साथ काम कर सकती है) को मिश्रण करने की अनुमति देती है - हालांकि, कोर बायनेरिज़ (जैसे init प्रोग्राम, मॉड्यूल लोडर, डिवाइस लोडर सेटअप उपकरण, C लाइब्रेरी) , फाइल सिस्टम को सेटअप करने के लिए आवश्यक उपकरण ...) अभ्यास में बहुत अधिक आवश्यकता होगी, एक विदेशी कर्नेल के साथ सिस्टम को सफलतापूर्वक बूट करने के लिए कर्नेल स्तर इंटरफेस के बारे में पता होना चाहिए।

इसके अलावा, फाइलसिस्टम को संगत करने की आवश्यकता होगी। इसके अलावा, बाइनरी संगतता विकल्पों को कर्नेल में "हार्ड" संकलित करने की आवश्यकता होगी - कर्नेल मॉड्यूल के रूप में कार्यान्वित कुछ भी विफल होगा क्योंकि आप मॉड्यूल लोडर नहीं चला सकते थे।

जैसा कि उल्लेख किया गया है, उपयोगकर्ता वातावरण कुछ हद तक पोर्टेबल हो जाता है यदि आप पुनर्नवीनीकरण करने के लिए तैयार हैं - जैसे कि फ़्रीबेस्ड-आधारित डेबियन सिस्टम, या लिनक्स पर netbsd pkgsrc सिस्टम सेट करना (बिल्कुल गैर तुच्छ, लेकिन समर्थित और संभव!)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.