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

URL: https://skillaria.top/hi/guides/linux/wsl-linux-on-windows

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 1 | WSL 2 |
| --- | --- | --- |

| Kernel | नहीं, system calls का अनुवाद | असली Linux kernel |

| System calls की संगतता | आंशिक | पूर्ण |

| Docker, systemd | नहीं | हाँ |

| Linux फ़ाइलों (`~/`) की गति | कम | तेज़ |

| Windows फ़ाइलों (`/mnt/c`) की गति | तेज़ | उल्लेखनीय रूप से कम |

| Virtualization चाहिए | नहीं | हाँ |

| Network | Windows के साथ साझा | अपना 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 --update` | WSL और 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 कोर्स का अभ्यास शुरू होता है।

## FAQ

**क्या 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 में \\wsl$\ पथ इस्तेमाल करें।

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

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

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

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


---
Source: Skillaria.Top (https://skillaria.top)
