مدتی است که مایکروسافت نصب زیرسیستم ویندوز برای لینوکس (WSL) را از طریق ابزار wsl.exe سادهسازی کرده است. به همین دلیل، اکثر راهنماها به این روش اشاره میکنند. با این حال، در عمل، این روش چندان هم ساده نیست، زیرا این دستور در Server Core کار نمیکند و فقط برای WSL نسخه ۲ مناسب است.
در حالت ایدهآل، زیرسیستم ویندوز برای لینوکس (WSL) باید در تمام نسخههای پشتیبانیشدهی ویندوز با یک دستور واحد نصب، بهروزرسانی یا حذف شود. اما در عمل اینگونه نیست. مشکل نه در روشهای مختلف (که همگی به یک هدف منتهی میشوند)، بلکه در ناسازگاری بین نسخههای مختلف سیستمعامل و پیادهسازیهای WSL نهفته است.
نصب ساده با wsl.exe
برای روش نصب آسان، تنها کافی است دستور زیر را اجرا کنید:
wsl –install
این دستور WSL را از Microsoft Store دانلود کرده و همچنین توزیع پیشفرض لینوکس (در حال حاضر Ubuntu) را نصب میکند. اگر توزیع دیگری را ترجیح میدهید، میتوانید با استفاده از گزینه -d یا --distribution آن را مشخص کنید.
برای مشاهده نام دقیق توزیعهای در دسترس، این دستور را اجرا کنید:
wsl –list –online

برای نصب Debian، از دستور زیر استفاده کنید:
wsl.exe –install -d Debian
محدودیتهای نصب ساده
نصب ساده با استفاده از دستور wsl.exe معمولاً در ویندوز ۱۱ و ویندوز سرور ۲۰۲۲ کار میکند، اما فقط در نسخه دارای رابط گرافیکی (Desktop Experience). در نسخه Server Core، این دستور یا بیصدا متوقف میشود یا برای مدتی طولانی گیر میکند و در نهایت با خطای 0xc004000d خارج میشود، بهویژه اگر قابلیتهای مجازیسازی فعال نباشند (مثلاً در یک ماشین مجازی).
محدودیت دیگر این روش نصب این است که فقط از WSL 2 پشتیبانی میکند. اگر به WSL 1 نیاز دارید – مثلاً زمانی که ویندوز در یک ماشین مجازی اجرا میشود و Nested Virtualization (مجازیسازی تو در تو) ممکن نیست – باید نسخهای از WSL را که همچنان بهصورت قابلیت اختیاری (Optional Feature) در ویندوز موجود است نصب کنید. این نسخه شامل WSL 2 نیز هست، اما دیگر بهروزرسانی نمیشود.

در اصل، ابزار wsl.exe برای نصب زیرسیستم لینوکس که همراه با ویندوز ارائه میشود نیز مناسب است، زیرا دارای یک سوئیچ اختصاصی است:
wsl –install –inbox
تنها مشکل اینجاست که در Windows Server 2022 Core، ابزار wsl.exe از سوئیچ --inbox پشتیبانی نمیکند. همچنین در Windows Server 2019، ابزار WSL فقط پس از نصب ویژگی اختیاری (Optional Feature) در دسترس خواهد بود.
راهاندازی WSL بهعنوان یک قابلیت اختیاری (Optional Feature)
اگر نصب زیرسیستم لینوکس (WSL) در یک نسخه ویندوز از طریق wsl.exe امکانپذیر نباشد، باید از روش سنتی استفاده کنید. برای این کار:
در ویندوز کلاینت (مثلاً ویندوز 10 یا 11)، از مسیر Control Panel > Programs > Turn Windows features on or off استفاده کنید.
در ویندوز سرور، این کار را میتوان از طریق Add Roles and Features Wizard در Server Manager انجام داد.

بهعنوان جایگزین، میتوانید این دستور را در پاورشل اجرا کنید:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
در ویندوز سرور نیز میتوانید از دستور زیر استفاده کنید:
Install-WindowsFeature -Name Microsoft-Windows-Subsystem-Linux
در Windows Server 2019، کار در همین مرحله به پایان میرسد، زیرا فقط از WSL 1 پشتیبانی میکند.
اما اگر بخواهید از WSL 2 در Server 2022 استفاده کنید، باید پلتفرم ماشین مجازی (VM Platform) را نیز فعال کنید:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
پس از راهاندازی مجدد سیستم، WSL 2 فعال خواهد شد، اما لازم است کرنل لینوکس را بهصورت جداگانه اضافه کنید:
wsl.exe –update
اما توجه داشته باشید:
این دستور در Server Core اجرا نمیشود، بنابراین حتی در Windows Server 2022 Core نیز شما تنها قادر به استفاده از WSL 1 خواهید بود.

نصب نسخههای پیشنمایش (Previews)
مانند سایر مؤلفههای ویندوز که بهطور مستقل از سیستمعامل توسعه مییابند—مانند PowerShell یا Windows Terminal—میتوانید نسخههای پیشنمایش WSL را نیز امتحان کنید.
برای این منظور، دستور wsl.exe سوئیچ --pre-release را همراه با --install ارائه میدهد:
wsl –install –pre-release
با این حال، این دستور در حال حاضر فقط روی نسخههای Insider ویندوز 11 پشتیبانی میشود.
در سایر نسخهها، باید فایل نصب WSL را از GitHub دانلود و بهصورت دستی اجرا کنید.
اگر بخواهید یک نسخه پیشنمایش را به جدیدترین نسخه ارتقاء دهید، اجرای:
wsl –upgrade
به نتیجه مطلوب نمیرسد. در عوض، باید نسخه قدیمی را ابتدا حذف کرده و سپس نسخه جدید را با استفاده از دستور فوق نصب نمایید.
نصب با استفاده از Winget
WSL بهعنوان یک بسته در ابزار Winget نیز در دسترس است.
با این حال، این روش یک نصب یکنواخت ارائه نمیدهد، زیرا Winget روی Windows Server پشتیبانی نمیشود و باید بهصورت دستی پیکربندی شود.
از نظر تئوری، میتوانید در ویندوز 10 یا 11 WSL را با دستور زیر نصب کنید:
winget install “Windows Subsystem for Linux”
اما در عمل، نصب ممکن است متوقف شود و به درستی انجام نشود.
بررسی نسخه نصبشده WSL
قبل از نصب اولین توزیع لینوکس، توصیه میشود بررسی کنید که کدام نسخه WSL نصب شده است:
wsl.exe –status
مایکروسافت بهطور پیشفرض WSL2 را فعال میکند. برای اطمینان از آن میتوانید از دستور زیر استفاده کنید:
wsl.exe –set-default-version 2
همچنین میتوانید برای هر توزیع لینوکس بهصورت جداگانه نسخه WSL را تعیین کنید:
wsl.exe –set-version <name-of-distribution> 2
افزودن یک توزیع لینوکس
اکنون میتوانید توزیعهای لینوکس را نصب کنید. این نصب در سطح کاربر انجام میشود؛ بنابراین هر حساب کاربری نسخه جداگانهای از توزیعها خواهد داشت.
اگر WSL را از طریق wsl.exe نصب کرده باشید، معمولاً Ubuntu پیشفرض یا توزیعی که در حین نصب مشخص کردهاید، قبلاً نصب شده است (مگر اینکه از سوئیچ --no-distribution استفاده کرده باشید).
برای افزودن توزیعهای بیشتر میتوانید از دستور زیر استفاده کنید:
wsl.exe –install -d <Distro>
اما اگر WSL را از طریق ویژگی اختیاری سیستمعامل نصب کرده باشید، این دستور ممکن است به خطای 0x8000ffff منجر شود.
راه جایگزین: میتوانید توزیعهای دیگر را از Microsoft Store در سیستمهای کلاینت دانلود کنید.
دانلود آخرین نسخه توزیع از GitHub
روش بالا توزیعها را از Microsoft Store دریافت میکند. اگر بخواهید آخرین نسخه توزیع را مستقیماً از GitHub دریافت کنید، میتوانید از دستور زیر استفاده کنید:
wsl.exe –install -d Debian –web-download
اما این روش یک مشکل دارد: توزیع نصبشده به این روش را نمیتوان با دستورات زیر متوقف یا حذف کرد:
wsl -t
wsl –unregister
بنابراین توصیه میشود فقط در مواقع خاص از --web-download استفاده شود.

در این حالت، برای حذف توزیع باید از برنامه Settings یا PowerShell استفاده کنید:
Get-AppxPackage -Name *kali* | Remove-AppxPackage
راهاندازی توزیع در Windows Server Core
این روش روی Server Core کار نمیکند، چون این نسخه مرورگر وب ندارد و فایلهای APPX را نمیتوان به روش معمول نصب کرد. بنابراین، باید از PowerShell و دستور Invoke-WebRequest برای دانلود توزیع استفاده کرد.
لینک دانلود برای هر توزیع به صورت زیر است:
Ubuntu 18.04: https://aka.ms/wsl-ubuntu-1804
Debian GNU/Linux: https://aka.ms/wsl-debian-gnulinux
Kali Linux: https://aka.ms/wsl-kali-linux
OpenSUSE: https://aka.ms/wsl-opensuse-42
SLES: https://aka.ms/wsl-sles-12
برای مثال، برای Ubuntu میتوانید از دستور زیر استفاده کنید:
-OutFile ubuntu-1804.zip -UseBasicParsing
.zip ذخیره میشود تا بتوان از Expand-Archive برای استخراج آن استفاده کرد:ubuntu-1804 قرار میگیرند که در آن میتوانید فایل اجرایی .exe را برای نصب لینوکس اجرا کنید.حذف توزیع و WSL
اگر میخواهید یک توزیع را از WSL حذف کنید، ابتدا آن را با دستور زیر متوقف کنید:
wsl.exe -t <نام توزیع>
سپس با دستور زیر آن را حذف کنید:
wsl.exe –unregister <نام توزیع>
اگر توزیع را با wsl.exe نصب نکردهاید، نمیتوانید از همین ابزار برای حذف آن استفاده کنید. در این صورت باید از Settings یا PowerShell استفاده کنید، همانطور که در بالا گفته شد.
ادغام WSL با Windows Terminal
اگر روی سیستمی که WSL نصب شده، Windows Terminal را نیز نصب کنید، این برنامه بهصورت خودکار برای هر توزیع لینوکس یک پروفایل ایجاد میکند. در نتیجه، میتوانید ترمینال bash را مستقیماً از منوی ترمینال باز کنید.
از آنجا که Terminal در ویندوز 11 از پیش نصب شده است اما پوستههای جدید (Shells) بهطور خودکار ثبت نمیشوند، باید پروفایلهای توزیعهای لینوکس را خودتان بهصورت دستی اضافه کنید.
برای این کار:
تنظیمات Windows Terminal را باز کنید.
گزینه Add new profile را اجرا کنید.
روی Duplicate کلیک کرده و یک پروفایل PowerShell را کپی کنید.
نام جدید و خط فرمان را ویرایش کنید.
در قسمت Command line، مقدار زیر را:
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
با این دستور جایگزین کنید:
%SystemRoot%\System32\wsl.exe -d <نام توزیع>
جمعبندی
با اینکه مایکروسافت سعی دارد نصب زیرسیستم لینوکس (WSL) را با wsl.exe سادهتر کند، در عمل فرآیند نصب همچنان ناهماهنگ و پیچیده است.
این روند در ویندوز 11 نسبتاً خوب عمل میکند—البته به شرطی که به WSL1 نیاز نداشته باشید.
در غیر این صورت، باید با دو نسخه WSL سروکار داشته باشید: یکی از طریق Microsoft Store و دیگری همراه با سیستمعامل.
در بسیاری از موارد، حتی گزینههای حیاتی مانند --version وجود ندارند، چه برسد به سوئیچهای مختلف --install.
برای نصب بهعنوان ویژگی اختیاری (Optional Feature)، باید از روشهای کاملاً متفاوت استفاده کرد.
