9 पॉइंट द्वारा GN⁺ 2025-12-02 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • Windows NT की सबसिस्टम संरचना अन्य ऑपरेटिंग सिस्टम के लिए प्रोग्राम चलाने हेतु एक API कॉल रूपांतरण लेयर पर आधारित रही है
  • WSL1 ने इसी परंपरा को आगे बढ़ाते हुए Linux कॉल को Windows kernel कॉल में बदलने वाला हल्का अनुवाद लेयर का काम किया
  • WSL2 में प्रदर्शन से जुड़ी समस्याएँ हल करने के लिए Hyper-V आधारित पूर्ण Linux VM में रूपांतरण हुआ और वास्तविक Linux kernel चलाया जाने लगा
  • WSL2 में डायनामिक मेमोरी मैनेजमेंट, Windows ड्राइव माउंट, WSLg द्वारा GUI इंटीग्रेशन जैसी सुविधाओं की वजह से सामान्य VM की तुलना में अधिक एकीकरण मिलता है
  • फ़ाइल प्रबंधन की असुविधा और डिस्क इमेज निर्भरता जैसी सीमाएँ होने के बावजूद, WSL1 और WSL2 के फायदे-नुकसान को चुनिंदा तौर पर मिलाकर इस्तेमाल करने की flexibility ही सबसे महत्वपूर्ण है

Windows NT में सबसिस्टम की अवधारणा

  • Windows NT का सबसिस्टम(subsystem) अन्य ऑपरेटिंग सिस्टम के प्रोग्राम चलाने के लिए एक API सेट और कॉल रूपांतरण लेयर को दर्शाता है
    • पुराने समय में NT में OS/2 सबसिस्टम(OS2SS.EXE) और POSIX सबसिस्टम(PSXSS.EXE) मौजूद थे
    • CSRSS.EXE Win32 API अनुवाद लेयर के रूप में काम करता है, और कुछ क्षमताएँ kernel mode (WIN32K.SYS) में चली गईं
  • POSIX सबसिस्टम सरकार-मान्यता के लिए न्यूनतम इम्प्लीमेंटेशन था, जिसे बाद में Interix आधारित Windows Services for Unix से बदल दिया गया

WSL1: अनुवाद आधारित Linux लेयर

  • WSL1(Windows Subsystem for Linux) Linux सिस्टम कॉल को Windows कॉल में बदलने वाला पतला अनुवाद लेयर है
    • रन करते समय bash प्रोसेस केवल कुछ MB मेमोरी लेता है और Task Manager में सामान्य प्रक्रिया के रूप में दिखता है
    • root फाइलसिस्टम NTFS पर अलग-अलग फाइल स्ट्रक्चर के रूप में मौजूद रहता है, इसलिए स्टोरेज ओवरहेड लगभग नहीं होता
  • सीमाएँ
    • I/O प्रदर्शन में गिरावट: Linux और Win32 फाइलसिस्टम API के अंतर से होने वाली ट्रांसलेशन लागत
    • GUI चलाने के लिए बाहरी X server की जरूरत (जैसे: X410)
    • Raw socket उपलब्ध नहीं होने से traceroute, nmap, tcpdump जैसे कमांड नहीं चल पाते

WSL2: Hyper-V आधारित Linux VM

  • यूजर्स की जरूरत के अनुसार Microsoft ने Hyper-V पर चलने वाला पूर्ण Linux VM जोड़ा
    • root फाइलसिस्टम एक single VHDX file में मैनेज होता है
    • कमांड wsl --set-version "Ubuntu" 2 से WSL1 और WSL2 के बीच परिवर्तन संभव है
  • प्रदर्शन विशेषताएँ
    • cold boot थोड़ा धीमा होता है, लेकिन वास्तविक native Linux kernel चलता है
    • मेमोरी उपयोग डायनमिक होता है और अधिकतम फिजिकल मेमोरी का आधा तक बढ़ सकता है
    • stress टेस्ट में मेमोरी लोड के साथ बढ़ने के बाद अपने आप घटती दिखती है
    • जरूरत पड़ने पर wsl --shutdown से VM बंद की जा सकती है

WSL2 की इंटीग्रेशन फीचर्स और सीमाएँ

  • WSL2 पारंपरिक VM से अलग Windows इंटीग्रेशन को और मजबूत करता है
    • Windows ड्राइव ऑटो-माउंट, \\wsl$\ पथ से Linux ड्राइव एक्सेस, और WSLg से GUI ऐप रन
    • GUI ऐप्स Remote Desktop Protocol के जरिए stream होते हैं, DPI और टेक्स्ट स्केलिंग के लिए अलग सेटिंग की जरूरत पड़ती है
  • फाइल प्रबंधन की चुनौतियाँ
    • Linux वर्क डेटा ext4.vhdx इमेज के अंदर रहता है, जिससे portability और recovery risk मौजूद रहती है
    • wsl --unregister Distro चलाने पर सभी डेटा तुरंत हट जाते हैं
    • Windows ड्राइव (/mnt/c) का उपयोग करने पर NTFS + VM ओवरहेड के कारण प्रदर्शन घटता है
  • फाइलसिस्टम प्रोटोकॉल
    • WSL1 में drvfs, जबकि WSL2 में Plan9 का 9p protocol प्रयोग होता है
    • रूपांतरण प्रक्रिया में drvfs से जुड़ी बग की रिपोर्ट किए जाने के उदाहरण सामने आए हैं
  • वैकल्पिक तरीका
    • अलग VHDX image बना कर wsl --mount --vhd से mount करने पर वर्क डेटा अलग रखने की सलाह दी जाती है
    • .wslconfig में यह behavior auto सेट नहीं किया जा सकता, इसलिए स्क्रिप्ट के ज़रिये सेटअप करना पड़ता है

निष्कर्ष

  • Windows NT की मॉड्यूलर डिज़ाइन और स्थिर kernel ABI पुराने ड्राइवरों की compatibility को बनाए रखती है
  • WSL1 की ताकत इसका हल्का मेमोरी उपयोग है, जबकि WSL2 वास्तविक Linux kernel के कारण बेहतर compatibility और performance देता है
  • WSL2 पारंपरिक VM के नुकसान को कम करके host OS के साथ इंटीग्रेशन को मजबूत करने वाला architecture देता है
  • पारंपरिक परिभाषा में यह VM के करीब है, पर इसे “सबसिस्टम” कहने लायक एक हल्के एकीकृत वातावरण के रूप में भी देखा जा सकता है

3 टिप्पणियां

 
crawler 2025-12-02

वाह, यहाँ डेवलपर ssug भी है

 
GN⁺ 2025-12-02
Hacker News की राय
  • WSL2 Hyper-V के subset पर चलता है, और मूल रूप से hypervisor के ऊपर चलने वाला एक VM है
    लेकिन यह सामान्य Hyper-V VM से कुछ मायनों में अलग है। उदाहरण के लिए, WSL2 की Linux distribution GPU partitioning (यानी PCI/GPU passthrough) और DirectX के विशेष implementation के ज़रिए X या Wayland environment में भी GPU acceleration इस्तेमाल कर सकती है
    ऐसे फीचर PowerShell आदि के ज़रिए कुछ hack करके सामान्य Hyper-V में भी संभव हैं, लेकिन आधिकारिक रूप से केवल Windows Server पर समर्थित हैं

    • मुझे लगा था कि GPU passthrough सामान्य Windows 11 पर भी चलता है, लेकिन मैंने विस्तार से नहीं देखा। फिर भी यह काफ़ी प्रभावशाली फीचर है. ग्राफ़िक्स से जुड़े फीचर्स पर नया लेख लिखने का सोच रहा हूँ
    • आखिरकार वह एक सामान्य VM ही है, लेकिन इसका automated होना अच्छी बात है
      हालांकि “X या Wayland rendering संभालते हैं” यह एक गलतफ़हमी है। वास्तव में GPU का उपयोग application खुद करती है, और X/Wayland rendering पूरी होने के बाद सिर्फ़ window compositing जैसा काम संभालते हैं
      color conversion जैसे जटिल काम भी होते हैं, लेकिन उनकी computation कम होती है
    • क्या WSL2 और WinNT kernel दोनों Hyper-V के ऊपर लगभग एक ही स्तर पर नहीं चलते? हाँ, NT kernel को hardware access के ज़्यादा अधिकार मिलते हैं
    • Linux चलाने के लिए Windows Server license खरीदकर install करना पड़े, यह सोचकर ही हँसी आती है
    • WSL2 का graphics integration उम्मीद से ज़्यादा निराशाजनक था। पुराना X-server setup बेहतर था। लेकिन X आधुनिक API को support नहीं करता, इसलिए developers की उसमें दिलचस्पी धीरे-धीरे कम हो रही है। उम्मीद है WSL2 support बढ़ने पर यह सुधरेगा
  • WSL1 pico process पर आधारित था, और यह Drawbridge research से निकली तकनीक है
    संबंधित वीडियो The Linux Kernel Hidden Inside Windows 10 और WSL Pico Process Overview देखें
    यही Drawbridge तकनीक SQL Server को Linux पर चलाने में भी इस्तेमाल हुई
    इसका विवरण Ars Technica लेख में है

  • समझ आता है कि WSL2 पर क्यों शिफ्ट किया गया, लेकिन WSL1 development को पूरी तरह बंद कर देना अफ़सोस की बात है
    हमारा CI environment ज़्यादातर Linux-आधारित है, लेकिन कुछ toolchain Wine में ठीक से नहीं चलते (जैसे MSVC)
    इसलिए हमें ऐसा environment चाहिए था जिसमें Windows पर Linux build सहज रूप से चल सके। WSL1 में यह संभव था, लेकिन WSL2 में process namespace या file descriptor साझा नहीं होते, इसलिए कई workaround की ज़रूरत पड़ती है
    IO speed तेज़ हुई है, लेकिन file sharing धीमी है, इसलिए वास्तविक उपयोग के लिए यह उपयुक्त नहीं है

    • WSL2 में भी /mnt/c के ज़रिए Windows files तक पहुँचा जा सकता है
    • MSVC की जगह clang-cl और xwin का संयोजन आज़माया जा सकता है।
      मैंने पहले Python C extension module इसी तरीके से build किया था
  • WSL2 Windows environment के साथ बहुत क़रीबी रूप से integrated VM है
    कंपनी की policy के कारण Windows इस्तेमाल करना पड़ता है, इसलिए development के लिए इसे रोज़ाना उपयोग करता हूँ, और ज़्यादातर मामलों में अनुभव काफ़ी अच्छा है

    • मैं कंपनी द्वारा दिए गए VM पर काम कर रहा हूँ, लेकिन performance धीरे-धीरे घुटनभरी लगने लगी है। WSL2 पर जाने का सोच रहा हूँ।
      हालांकि यह RHEL8-आधारित है, इसलिए केवल Debian-आधारित support होना असुविधाजनक है। जानना चाहता हूँ कि इन दिनों graphical app support कैसा है
    • कहते हैं “क़रीबी integration” है, लेकिन वास्तव में ps या top में सिर्फ़ VM process ही दिखते हैं।
      docker run -it ubuntu से भी मिलती-जुलती functionality मिल जाती है, तो फ़र्क़ क्या है, यह जानना चाहता हूँ।
      निजी तौर पर मुझे अलग-थलग workspace बहुत असुविधाजनक लगा
  • WSL2 आखिरकार हल्का VM ही है। यह Firecracker जैसी अवधारणा है, जिसका लक्ष्य fast boot और कम memory usage है
    लेकिन कई Docker चलाने पर memory requirement बढ़ जाती है। आरामदायक उपयोग के लिए कम-से-कम 20GB या उससे ज़्यादा चाहिए

    • अच्छी बात यह है कि आजकल 32GB RAM वाले laptop पहले जितने महंगे नहीं रहे
    • WSL2 का boot 1~2 सेकंड में बहुत तेज़ी से हो जाता है, यह कैसे implement किया गया है, जानना दिलचस्प होगा। BIOS screen हटाना समझ में आता है, लेकिन उसके अलावा भी कोई optimization लगती है
  • व्यक्तिगत रूप से मुझे WSL1 कहीं ज़्यादा उपयोगी लगता है। C++ और .NET toolchain, ssh/scp आदि ज़्यादातर CLI tools अच्छे से काम करते हैं
    इसके उलट WSL2 लगभग बेकार है। अगर Linux VM चाहिए हो तो मैं VMware इस्तेमाल करता हूँ
    VMware में snapshot tree, 3D acceleration, USB device connection, virtual network configuration जैसी सुविधाएँ भरपूर हैं और GUI भी सुविधाजनक है

  • WSL के अंदर का VM disk \\wsl$ path से access किया जा सकता है
    अगर पुराना software UNC path support नहीं करता, तो उसे drive letter से map करके हल किया जा सकता है

  • VHDX file के लगातार बड़ी होती जाने की समस्या है। इसे manually compact करना पड़ता है

    • sparse VHD सक्षम करने से मदद मिल सकती है। यह परफ़ेक्ट समाधान नहीं है, लेकिन systemd-trim service से कुछ हद तक समस्या कम हो सकती है
      संबंधित issue के लिए GitHub WSL #12103 देखें
      फिर भी काम न बने तो manual optimization method इस्तेमाल किया जा सकता है
    • auto-shrink फीचर है, लेकिन कभी-कभी वही उल्टा समस्या पैदा कर देता है
  • जानकारी के लिए, WSL डिफ़ॉल्ट रूप से Windows firewall rules को bypass करता है। समझ नहीं आता कि Microsoft ने इसे इस तरह क्यों डिज़ाइन किया

    • क्या यह सच में ऐसा है? WSL में ssh connection ठीक से न होने की वजह से मुझे हमेशा परेशानी हुई है
  • सोचता हूँ कि क्या वास्तविक ext4 partition mount करके image file-आधारित block device simulation से होने वाले performance loss को कम किया जा सकता है

 
tangokorea 2026-04-23

जब मैं WSL2 का अक्सर इस्तेमाल करने लगा और धीरे-धीरे Linux का अलग से उपयोग कम होने लगा, तब मेरे मन में यह सोच आती है कि क्या यह भी EEE है?
EEE - अपनाना, विस्तार करना, और समाप्त करना (Embrace, Extend, and Extinguish)