गाइड

WSL (Windows Subsystem for Linux): यह क्या है, इंस्टॉल और Windows में Linux सेटअप

अपडेट किया गया: · Skillaria.Top

WSL (Windows Subsystem for Linux) Windows 10 और 11 में बनी एक ऐसी सुविधा है, जो अलग virtual machine और dual boot के बिना असली Linux डिस्ट्रीब्यूशन चलाती है। इसे PowerShell में administrator के रूप में एक कमांड wsl --install से इंस्टॉल किया जाता है; डिफ़ॉल्ट रूप से WSL 2 और Ubuntu लगते हैं, जिनमें असली Linux kernel हल्की virtual machine में चलता है।

Windows Subsystem for Linux (WSL) Windows 10 और 11 का एक हिस्सा है, जो Windows के भीतर ही Linux डिस्ट्रीब्यूशन चलाने देता है: bash टर्मिनल, apt, ssh, grep, Docker और कोई भी कंसोल यूटिलिटी। VirtualBox इंस्टॉल करने या दूसरे OS के लिए डिस्क बाँटने की ज़रूरत नहीं पड़ती: Ubuntu कुछ ही सेकंड में एक सामान्य टर्मिनल विंडो की तरह खुल जाता है। नीचे देखेंगे कि WSL 1 और WSL 2 में क्या अंतर है, सुविधा कैसे इंस्टॉल करें, फ़ाइलों, VS Code और ग्राफ़िकल ऐप्स के साथ कैसे काम करें और आम गड़बड़ियों को कैसे ठीक करें।

WSL क्या है: Linux और Windows में

संक्षेप में, WSL आपको Windows छोड़े बिना पूरा Linux वातावरण देता है, जो डेवलपमेंट और सीखने के लिए काम आता है। आप कमांड लाइन या Microsoft Store से कोई डिस्ट्रीब्यूशन (Ubuntu, Debian, openSUSE, Kali, AlmaLinux और अन्य) इंस्टॉल करते हैं, और फिर उसमें वैसे ही काम करते हैं जैसे सर्वर पर: यूज़र, परमिशन, पैकेज और सेवाएँ।

यह समझना ज़रूरी है कि WSL क्या नहीं है। यह Cygwin जैसा कमांड इम्यूलेटर या पोर्ट किए गए टूल का संग्रह नहीं है: WSL 2 में Microsoft द्वारा बनाया गया असली Linux kernel चलता है। इसलिए Linux के बाइनरी बिना दोबारा कंपाइल किए चलते हैं, और WSL में सीखे कौशल सीधे असली सर्वर पर लागू होते हैं।

इस सुविधा के सामान्य उपयोग ये हैं:

  • कंप्यूटर पर अलग मशीन के बिना Linux और कमांड लाइन सीखना;
  • वेब डेवलपमेंट, जब प्रोडक्शन Linux पर चलता है (Python, Node.js, PHP, Go);
  • Docker Desktop, जो इंजन के रूप में WSL 2 इस्तेमाल करता है;
  • SSH से सर्वरों से जुड़ना, bash स्क्रिप्ट लिखना, और परिचित वातावरण में git चलाना।

WSL 1 और WSL 2: अंतर क्या है

सुविधा के दो आर्किटेक्चर हैं। WSL 1 Linux के system calls को Windows kernel के calls में बदलता है, यानी वहाँ असली Linux kernel नहीं होता। WSL 2 Hyper-V पर आधारित हल्की virtual machine में असली Linux kernel चलाता है, जो सेकंडों में शुरू होती है और अपनी मेमोरी खुद संभालती है।

पैरामीटरWSL 1WSL 2
Kernelनहीं, system calls का अनुवादअसली Linux kernel
System calls की संगतताआंशिकपूर्ण
Docker, systemdनहींहाँ
Linux फ़ाइलों (~/) की गतिकमतेज़
Windows फ़ाइलों (/mnt/c) की गतितेज़उल्लेखनीय रूप से कम
Virtualization चाहिएनहींहाँ
NetworkWindows के साथ साझाअपना virtual network (डिफ़ॉल्ट रूप से NAT)

लगभग सभी कामों के लिए WSL 2 चुनें, वही डिफ़ॉल्ट है। WSL 1 तब काम का है जब virtualization चालू नहीं हो सकता (उदाहरण के लिए, Windows खुद किसी virtual machine में चल रहा हो और nested virtualization उपलब्ध न हो), या जब प्रोजेक्ट Windows डिस्क पर ही रहना चाहिए और उसके साथ लगातार काम होता हो।

Windows 10 और 11 में WSL कैसे इंस्टॉल करें

Windows 11 और Windows 10 के version 2004 या नए (build 19041+) पर इंस्टॉलेशन एक कमांड में हो जाता है। PowerShell या «Terminal» को administrator के रूप में खोलें और चलाएँ:

wsl --install

यह कमांड ज़रूरी Windows घटक चालू करती है, WSL 2 kernel डाउनलोड करती है और Ubuntu इंस्टॉल करती है। रीस्टार्ट के बाद डिस्ट्रीब्यूशन की विंडो खुलेगी: Linux के लिए यूज़रनेम और पासवर्ड चुनें। ये Windows खाते से जुड़े नहीं हैं; यही पासवर्ड sudo के लिए चाहिए होगा।

Enter new UNIX username: alex
New password:
Retype new password:
passwd: password updated successfully
Installation successful!

तुरंत पैकेज अपडेट करें, जैसे किसी नए सर्वर पर:

sudo apt update && sudo apt upgrade -y

डिस्ट्रीब्यूशन कैसे चुनें

डिफ़ॉल्ट रूप से Ubuntu इंस्टॉल होता है, लेकिन आप दूसरा डिस्ट्रीब्यूशन भी चुन सकते हैं। उपलब्ध सूची:

wsl --list --online

सूची से नाम लेकर किसी खास डिस्ट्रीब्यूशन को इंस्टॉल करना:

wsl --install -d Debian

अगर WSL पहले से है, तो यह कमांड बस नया डिस्ट्रीब्यूशन जोड़ देगी। एक साथ कई सिस्टम रखे जा सकते हैं, जैसे काम के लिए Ubuntu और प्रयोगों के लिए Kali।

संस्करण की जाँच: wsl -l -v

इंस्टॉल किए गए डिस्ट्रीब्यूशन, उनकी स्थिति और WSL संस्करण देखने के लिए:

wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2
  Debian    Stopped         2

तारे का निशान डिफ़ॉल्ट डिस्ट्रीब्यूशन को दिखाता है: बिना पैरामीटर के wsl उसी को खोलता है। इसे बदलने के लिए: wsl --set-default Debian।

WSL 1 को WSL 2 में कैसे बदलें

नए इंस्टॉलेशन के लिए डिफ़ॉल्ट संस्करण यह कमांड तय करती है:

wsl --set-default-version 2

जो डिस्ट्रीब्यूशन पहले से इंस्टॉल है, उसे अलग से बदला जाता है (डेटा बना रहता है, लेकिन प्रक्रिया में कुछ मिनट लग सकते हैं):

wsl --set-version Ubuntu 2

उलटा बदलाव: wsl --set-version Ubuntu 1।

WSL प्रबंधन की उपयोगी कमांड

कमांडक्या करती है
wslडिफ़ॉल्ट डिस्ट्रीब्यूशन खोलती है
wsl -d Debianकिसी खास डिस्ट्रीब्यूशन को खोलती है
wsl --shutdownसभी डिस्ट्रीब्यूशन और WSL 2 virtual machine बंद करती है
wsl --terminate Ubuntuएक डिस्ट्रीब्यूशन बंद करती है
wsl --updateWSL और kernel अपडेट करती है
wsl --statusडिफ़ॉल्ट संस्करण और सामान्य स्थिति
wsl --export Ubuntu ubuntu.tarडिस्ट्रीब्यूशन का बैकअप archive में
wsl --import Ubuntu2 D:\wsl\u2 ubuntu.tarडिस्ट्रीब्यूशन को वापस लाना या क्लोन करना
wsl --unregister Ubuntuडिस्ट्रीब्यूशन को सारे डेटा के साथ हटाती है

--unregister से सावधान रहें: डिस्ट्रीब्यूशन के अंदर की फ़ाइलें Recycle Bin में जाए बिना मिट जाती हैं। इससे पहले --export ज़रूर करें।

Linux से Windows फ़ाइलें और वापस

Windows की डिस्कें WSL के भीतर /mnt डायरेक्टरी में अपने-आप माउंट होती हैं: डिस्क C: यानी /mnt/c, D: यानी /mnt/d।

cd /mnt/c/Users/alex/Downloads
ls -l
cp report.csv ~/projects/

उल्टी दिशा में, Linux की फ़ाइलें Explorer में नेटवर्क पथ \\wsl$\Ubuntu के ज़रिए दिखती हैं (Windows 11 में \\wsl.localhost\Ubuntu भी), और बाईं साइडबार के «Linux» सेक्शन में। मौजूदा Linux डायरेक्टरी को तुरंत Explorer में खोलने के लिए:

explorer.exe .

WSL से Windows प्रोग्राम (notepad.exe, code) चलाए जा सकते हैं, और PowerShell से Linux कमांड प्रीफ़िक्स के साथ: wsl ls -la। दोनों सिस्टमों के बीच पथ बदलने के लिए wslpath यूटिलिटी है:

wslpath 'C:\Users\alex'
/mnt/c/Users/alex

WSL 2 की परफ़ॉर्मेंस का मुख्य नियम: प्रोजेक्ट Linux फ़ाइल सिस्टम में रखें (~/projects), न कि /mnt/c में। Windows डिस्क तक पहुँच नेटवर्क प्रोटोकॉल से होती है, और बड़े प्रोजेक्ट पर git status या npm install जैसे काम वहाँ कई गुना धीमे चलते हैं।

VS Code और WSL

Visual Studio Code WSL के साथ रिमोट मशीन की तरह काम कर सकता है: इंटरफ़ेस Windows में रहता है, जबकि टर्मिनल, एक्सटेंशन, इंटरप्रेटर और debugger Linux के भीतर चलते हैं। इसके लिए Microsoft का WSL एक्सटेंशन चाहिए। फिर डिस्ट्रीब्यूशन के टर्मिनल में प्रोजेक्ट डायरेक्टरी में जाएँ और चलाएँ:

cd ~/projects/site
code .

पहली बार चलाने पर VS Code Linux में अपना सर्वर हिस्सा अपने-आप इंस्टॉल कर देगा। नीचे बाईं ओर «WSL: Ubuntu» संकेत दिखेगा, यानी एम्बेडेड टर्मिनल से जो भी चलेगा वह Linux में चलेगा। Python या ESLint जैसे एक्सटेंशन «WSL में» इंस्टॉल करने होते हैं; VS Code इसके लिए बटन दिखाता है।

ग्राफ़िकल ऐप्स WSL में (WSLg)

Windows 11 और अद्यतन WSL वाले Windows 10 में WSLg है, जो Linux ग्राफ़िकल ऐप्स को बिना X server की सेटिंग के सपोर्ट करता है। प्रोग्राम सामान्य तरीके से इंस्टॉल करें, उसकी विंडो Windows विंडो के साथ खुलेगी और शॉर्टकट Start मेनू में आएगा।

sudo apt install gedit -y
gedit ~/.bashrc &

WSLg X11 और Wayland, आवाज़ और clipboard को सपोर्ट करता है। फिर भी रोज़मर्रा के लिए पूरे Linux डेस्कटॉप का विकल्प यह नहीं है: WSL अलग-अलग ऐप्स के लिए बना है, GNOME या KDE पूरे के लिए नहीं।

systemd और WSL 2 के संसाधन

WSL 2 के नए संस्करणों में systemd सपोर्ट है: नए Ubuntu इंस्टॉलेशन में यह डिफ़ॉल्ट रूप से चालू होता है। अगर नहीं है, तो डिस्ट्रीब्यूशन के भीतर /etc/wsl.conf फ़ाइल में जोड़ें:

[boot]
systemd=true

और PowerShell से सुविधा को रीस्टार्ट करें: wsl --shutdown। इसके बाद systemctl और nginx या PostgreSQL जैसी सेवाएँ चलती हैं।

WSL 2 virtual machine की मेमोरी और प्रोसेसर सीमित करने के लिए Windows की तरफ़ %UserProfile%\.wslconfig फ़ाइल है:

[wsl2]
memory=4GB
processors=2

सेटिंग wsl --shutdown के बाद लागू होती है।

WSL इंस्टॉल करते समय आम गड़बड़ियाँ

त्रुटि 0x80370102

पूरा संदेश कुछ इस तरह होता है: «WslRegisterDistribution failed with error: 0x80370102» (सिस्टम का संदेश Windows के भाषा संस्करण के अनुसार बदल सकता है)। इसका कारण लगभग हमेशा एक ही होता है: WSL 2 virtual machine शुरू नहीं हो पाती। क्रम से जाँचें:

  1. BIOS/UEFI में हार्डवेयर virtualization चालू है या नहीं: Intel VT-x (Intel Virtualization Technology) या AMD-V (SVM Mode)। स्थिति Task Manager → «Performance» → CPU → «Virtualization: Enabled» में दिखती है।
  2. क्या «Virtual Machine Platform» घटक चालू है।
  3. क्या boot loader में hypervisor बंद तो नहीं है।

ये घटक administrator के PowerShell से चालू होते हैं:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
bcdedit /set hypervisorlaunchtype auto

इसके बाद कंप्यूटर रीस्टार्ट करें। अगर आप खुद किसी virtual machine के भीतर Windows चला रहे हैं, तो होस्ट पर nested virtualization की अनुमति देनी होगी, या फिर WSL 1 इस्तेमाल करें।

दूसरी आम समस्याएँ

  • 0x800701bc — WSL 2 kernel अपडेट नहीं है। wsl --update चलाएँ।
  • कमांड wsl --install केवल मदद दिखाती है — WSL पहले से इंस्टॉल है; डिस्ट्रीब्यूशन जोड़ने के लिए wsl --install -d Ubuntu चलाएँ।
  • VPN चालू होने पर WSL में इंटरनेट नहीं — VPN क्लाइंट virtual network के रूट पकड़ लेता है। Windows 11 में .wslconfig की [wsl2] सेक्शन में networkingMode=mirrored मदद करता है।
  • WSL बहुत जगह लेता है — virtual disk ext4.vhdx बढ़ता है, लेकिन फ़ाइलें हटाने के बाद अपने-आप छोटा नहीं होता। उसे हाथ से छोटा किया जा सकता है, या --export/--import से डिस्ट्रीब्यूशन को दोबारा बनाया जा सकता है।
  • Linux का पासवर्ड भूल गए — PowerShell से root के रूप में लॉग इन करें: wsl -u root, फिर passwd alex।

WSL, virtual machine या dual boot

Windows वाले कंप्यूटर पर Linux पाने का WSL अकेला तरीका नहीं है। चुनाव काम पर निर्भर करता है।

विकल्पफ़ायदेनुकसानकब चुनें
WSL 2सेकंडों में शुरू, साझा फ़ाइलें, VS Code, Dockerपूरा डेस्कटॉप नहीं, नेटवर्क और डिस्क की कुछ खासियतेंडेवलपमेंट, कमांड लाइन सीखना, स्क्रिप्ट
Virtual machine (VirtualBox, Hyper-V, VMware)पूरी अलगाव, snapshots, कोई भी डिस्ट्रीब्यूशन और डेस्कटॉप, अपना network adapterभारी, संसाधन पहले से बाँधने पड़ते हैंसर्वर का परीक्षण स्टैंड, network या boot के प्रयोग, डिस्क partition के अभ्यास
Dual bootपूरी हार्डवेयर क्षमता, नेटिव ग्राफ़िक्स और ड्राइवरबदलने के लिए रीबूट, disk partition में जोखिमLinux मुख्य सिस्टम हो, गेम और GPU काम Linux पर हों

Linux शुरू से सीखने के लिए WSL आम तौर पर काफ़ी है: फ़ाइलें, परमिशन, प्रोसेस, पैकेज, bash स्क्रिप्ट और SSH सर्वर जैसे ही काम करते हैं। Virtual machine तब चाहिए जब बात उन चीज़ों की हो जो WSL में अलग ढंग से बनी हैं: boot loader, भौतिक डिस्क का partition, network interfaces और होस्ट पर firewall।

निष्कर्ष

Windows Subsystem for Linux एक कमांड wsl --install से Windows के भीतर असली Linux देता है। WSL 2 चुनें, wsl -l -v से संस्करण जाँचें, प्रोजेक्ट ~/ में रखें, /mnt/c में नहीं, और VS Code को WSL एक्सटेंशन से जोड़ें। अगर इंस्टॉल 0x80370102 पर रुकता है, तो BIOS में virtualization चालू करें और «Virtual Machine Platform» घटक इंस्टॉल करें। इसी कार्यस्थल से Linux कोर्स का अभ्यास शुरू होता है।

अक्सर पूछे जाने वाले प्रश्न

क्या WSL मुफ़्त है?

हाँ। WSL Windows 10 और 11 के सभी संस्करणों में आता है, Home सहित, और Linux डिस्ट्रीब्यूशन भी मुफ़्त वितरित होते हैं।

क्या WSL में Docker चल सकता है?

हाँ, लेकिन केवल WSL 2 में। आप WSL 2 इंजन वाला Docker Desktop इंस्टॉल कर सकते हैं, या सीधे डिस्ट्रीब्यूशन में Docker Engine लगा सकते हैं, जैसे किसी आम Ubuntu सर्वर पर।

WSL डिस्ट्रीब्यूशन की फ़ाइलें असल में कहाँ रहती हैं?

WSL 2 में वे Windows यूज़र प्रोफ़ाइल के भीतर ext4.vhdx virtual disk में रहती हैं। उसे सीधे खोलने की ज़रूरत नहीं: Explorer में <code>\\wsl$\</code> पथ इस्तेमाल करें।

WSL को पूरी तरह कैसे हटाएँ?

पहले <code>wsl --unregister <नाम></code> से डिस्ट्रीब्यूशन हटाएँ, फिर «Installed apps» में «Windows Subsystem for Linux» हटाएँ और ज़रूरत हो तो Windows घटक बंद करें।

क्या WSL को दूसरी डिस्क पर ले जाया जा सकता है?

हाँ: <code>wsl --export Ubuntu ubuntu.tar</code>, फिर <code>wsl --unregister Ubuntu</code>, और <code>wsl --import Ubuntu D:\wsl\ubuntu ubuntu.tar</code>। नए संस्करणों में <code>wsl --manage Ubuntu --move</code> भी है।

इस विषय को वीडियो में सीखें

यह विषय “Linux: с нуля до уверенного администрирования” कोर्स में अभ्यास के साथ विस्तार से समझाया गया है।

कोर्स पर जाएँ