WSL (Windows Subsystem for Linux): কী, ইনস্টল ও Windows-এ Linux সেটআপ
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 চালু করা যাচ্ছে না। ক্রমানুসারে যাচাই করুন:
- BIOS/UEFI-তে হার্ডওয়্যার virtualization চালু আছে কি না: Intel VT-x (Intel Virtualization Technology) বা AMD-V (SVM Mode)। অবস্থা দেখা যায় Task Manager → “Performance” → CPU → “Virtualization: Enabled”-এ।
- “Virtual Machine Platform” কম্পোনেন্ট চালু আছে কি না।
- বুট লোডারে 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 কোর্সের অনুশীলন এই সেটআপ থেকেই শুরু হয়।
সাধারণ প্রশ্ন
WSL কি বিনামূল্যে?
হ্যাঁ। WSL Windows 10 ও 11-এর সব সংস্করণে আছে, Home সহ, এবং Linux ডিস্ট্রিবিউশনও বিনামূল্যে বিতরণ করা হয়।
WSL-এ কি Docker চালানো যায়?
হ্যাঁ, তবে শুধু WSL 2-তে। আপনি WSL 2 ইঞ্জিনসহ Docker Desktop ইনস্টল করতে পারেন, অথবা সরাসরি ডিস্ট্রিবিউশনে Docker Engine বসাতে পারেন, সাধারণ Ubuntu সার্ভারের মতো।
WSL ডিস্ট্রিবিউশনের ফাইলগুলো আসলে কোথায় থাকে?
WSL 2-তে সেগুলো Windows ব্যবহারকারীর প্রোফাইলের ভেতরে <code>ext4.vhdx</code> 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: с нуля до уверенного администрирования” কোর্সে বিষয়টি অনুশীলনসহ বিস্তারিত শেখানো হয়েছে।
কোর্সে যান