
विंडोज़ पर उबंटू पर बैश लिनक्स (WSL) के लिए विंडोज सबसिस्टम के माध्यम से देशी Linux ELF64 बायनेरिज़ को विंडोज़ पर चलने में सक्षम बनाता है। हालांकि उबंटू की घोषणा पर बैश से कई लोग चौंक गए थे, लेकिन यह ध्यान देने योग्य है कि यह विभिन्न ऑपरेटिंग सिस्टमों के बीच संगतता के लिए नए दरवाजे खोलता है। Microsoft एक और कदम आगे बढ़ाता है और बताता है कि इसका WSL कैसे काम करता है ताकि हम बेहतर ढंग से समझ सकें कि दोनों सिस्टम एक दूसरे के साथ कैसे संवाद करते हैं।
WSL को Microsoft Windows कर्नेल टीम द्वारा बनाया गया था और इसमें उपयोगकर्ता मोड और कर्नेल मोड दोनों घटक शामिल हैं। अधिक विशेष रूप से, सिस्टम से बना है:
- लिनक्स इंस्टेंस जीवन चक्र को संभालने वाली एक उपयोगकर्ता मोड सत्र प्रबंधक सेवा
- पिको प्रदाता ड्राइवर (lxss.sys, lxcore.sys) जिनकी भूमिका Linux syscalls का अनुवाद करके Linux कर्नेल का अनुकरण करना है
- पिको अनमॉडिफाइड यूजर मोड लिनक्स (जैसे / बिन / बैश) को होस्ट करने की प्रक्रिया करता है।
तीन घटकों के बीच संबंध इस प्रकार वर्णित है:
यह उपयोगकर्ता मोड लिनक्स बायनेरिज़ और विंडोज कर्नेल घटकों के बीच का स्थान है जहां जादू होता है। पिको प्रक्रियाओं में असंशोधित लिनक्स बायनेरिज़ रखकर हम लिनक्स सिस्टम कॉल को विंडोज कर्नेल में निर्देशित करने में सक्षम बनाते हैं। lxss.sys और lxcore.sys ड्राइवर Linux सिस्टम कॉल को NT API में अनुवाद करते हैं और Linux कर्नेल का अनुकरण करते हैं।
इस प्रक्रिया में मुख्य चुनौती दो प्रणालियों को एक साथ काम करना है:
WSL Windows NT कर्नेल के शीर्ष पर Linux कर्नेल इंटरफ़ेस को वर्चुअलाइज़ करके अनमॉडिफाइड Linux ELF64 बायनेरिज़ को निष्पादित करता है। कर्नेल इंटरफेस में से एक जो इसे उजागर करता है वह सिस्टम कॉल (syscalls) है। एक syscall कर्नेल द्वारा प्रदान की जाने वाली एक सेवा है जिसे उपयोगकर्ता मोड से कॉल किया जा सकता है। Linux कर्नेल और Windows NT कर्नेल दोनों ही उपयोगकर्ता मोड में कई सौ syscalls को उजागर करते हैं, लेकिन उनके अलग-अलग शब्दार्थ हैं और आम तौर पर सीधे संगत नहीं होते हैं। उदाहरण के लिए, लिनक्स कर्नेल में फोर्क, ओपन और किल जैसी चीजें शामिल हैं, जबकि विंडोज एनटी कर्नेल में तुलनीय NtCreateProcess, NtOpenFile और NtTerminateProcess है।
लिनक्स के लिए विंडोज सबसिस्टम में कर्नेल मोड ड्राइवर (lxss.sys और lxcore.sys) शामिल हैं जो विंडोज एनटी कर्नेल के साथ समन्वय में लिनक्स सिस्टम कॉल अनुरोधों को संभालने के लिए जिम्मेदार हैं। ड्राइवरों में लिनक्स कर्नेल से कोड नहीं होता है, बल्कि इसके बजाय लिनक्स-संगत कर्नेल इंटरफेस का एक साफ कमरा कार्यान्वयन होता है। देशी लिनक्स पर, जब एक सिस्कल को उपयोगकर्ता मोड से निष्पादन योग्य बनाया जाता है तो इसे लिनक्स कर्नेल द्वारा नियंत्रित किया जाता है। WSL पर, जब समान निष्पादन योग्य से एक syscall बनाया जाता है, तो Windows NT कर्नेल अनुरोध को lxcore.sys को अग्रेषित करता है। जहाँ संभव हो, lxcore.sys Linux syscall को समतुल्य Windows NT कॉल में अनुवादित करता है जो बदले में हैवी लिफ्टिंग करता है।
ओपन-सोर्स प्लेटफॉर्म में माइक्रोसॉफ्ट की रुचि को ध्यान में रखते हुए, कई लोगों ने सोचा कि क्या टेक दिग्गज को कैनोनिकल जैसी प्रमुख लिनक्स-केंद्रित कंपनियों का अधिग्रहण करना चाहिए, उबंटू ऑपरेटिंग सिस्टम के पीछे की कंपनी। हालाँकि Microsoft और Canonical ने ओपन-सोर्स सॉफ़्टवेयर पर सहयोग किया, लेकिन न तो इस संभावना पर कोई टिप्पणी जारी की।
यदि आप रुचि रखते हैं कि लिनक्स - विंडोज इंटरैक्शन कैसे विकसित होता है, माइक्रोसॉफ्ट के ब्लॉग पर जाएं. टीम ने वादा किया कि इस विषय पर और अधिक ब्लॉग पोस्ट का अनुसरण किया जाएगा।
संबंधित कहानियां जिन्हें आपको देखना चाहिए:
- लिनक्स उपयोगकर्ता रिपोर्ट "हेडफ़ोन ने विंडोज 8.1 में काम करना बंद कर दिया" समस्याएं
- माइक्रोसॉफ्ट और कैननिकल बिल्ड 2016 में बैश को विंडोज 10 में लाते हैं
- म्यूनिख ने विंडोज एक्सपी यूजर्स को मुफ्त उबंटू सीडी बांटना शुरू किया