# WSL (Windows Subsystem for Linux): কী, ইনস্টল ও Windows-এ Linux সেটআপ

URL: https://skillaria.top/bn/guides/linux/wsl-windows-linux-setup

WSL (Windows Subsystem for Linux) Windows 10 ও 11-এ থাকা একটি ফিচার, যা আলাদা virtual machine বা dual boot ছাড়াই আসল Linux ডিস্ট্রিবিউশন চালায়। PowerShell-এ administrator হিসেবে একটি কমান্ড wsl --install দিয়ে এটি ইনস্টল হয়; ডিফল্টভাবে WSL 2 ও Ubuntu বসে, যেখানে হালকা virtual machine-এর ভেতরে আসল Linux kernel চলে।

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 call-কে Windows kernel-এর call-এ অনুবাদ করে, সেখানে আলাদা Linux kernel নেই। WSL 2 Hyper-V-ভিত্তিক হালকা virtual machine-এর ভেতরে আসল Linux kernel চালায়, যা সেকেন্ডের মধ্যে শুরু হয় এবং নিজের মেমোরি নিজে সামলায়।

| প্যারামিটার | WSL 1 | WSL 2 |
| --- | --- | --- |

| Kernel | না, system call-এর অনুবাদ | আসল Linux kernel |

| System call-এর সামঞ্জস্য | আংশিক | পূর্ণ |

| 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` | ডিস্ট্রিবিউশনের ব্যাকআপ আর্কাইভে |

| `wsl --import Ubuntu2 D:\wsl\u2 ubuntu.tar` | ডিস্ট্রিবিউশন ফিরিয়ে আনা বা ক্লোন করা |

| `wsl --unregister Ubuntu` | ডিস্ট্রিবিউশন সব ডেটাসহ মুছে দেয় |

`--unregister` নিয়ে সাবধান: ডিস্ট্রিবিউশনের ভেতরের ফাইল রিসাইকেল বিন ছাড়াই মুছে যায়। আগে অবশ্যই `--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-এ থাকে, আর টার্মিনাল, এক্সটেনশন, ইন্টারপ্রেটার ও ডিবাগার 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 আছে, যা X server সেটআপ ছাড়াই Linux-এর গ্রাফিক্যাল অ্যাপ সমর্থন করে। প্রোগ্রাম স্বাভাবিকভাবে ইনস্টল করুন, তার উইন্ডো 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. বুট লোডারে 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) | পূর্ণ আলাদা পরিবেশ, snapshot, যেকোনো ডিস্ট্রিবিউশন ও ডেস্কটপ, নিজস্ব network adapter | ভারী, রিসোর্স আগে থেকে বরাদ্দ করতে হয় | সার্ভারের টেস্ট ল্যাব, network বা boot-এর পরীক্ষা, ডিস্ক partition-এর অনুশীলন |

| Dual boot | হার্ডওয়্যারের পূর্ণ ক্ষমতা, নেটিভ গ্রাফিক্স ও ড্রাইভার | বদলাতে রিবুট, disk partition-এ ঝুঁকি | Linux মূল সিস্টেম হলে, Linux-এ গেম ও GPU কাজ থাকলে |

শূন্য থেকে Linux শিখতে WSL সাধারণত যথেষ্ট: ফাইল, অনুমতি, প্রসেস, প্যাকেজ, bash স্ক্রিপ্ট ও SSH সার্ভারের মতোই কাজ করে। Virtual machine লাগে তখন, যখন বিষয়টি এমন জিনিস নিয়ে যা WSL-এ আলাদাভাবে গঠিত: boot loader, ভৌত ডিস্কের partition, network interface এবং হোস্টের 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)
