نصب زیرسیستم ویندوز برای لینوکس (WSL) روی نسخه‌های مختلف ویندوز و Server Core

آنچه در این مقاله میخوانید

جدیدترین مقالات

نصب زیرسیستم ویندوز برای لینوکس (WSL) روی نسخه‌های مختلف ویندوز و Server Core

مدتی است که مایکروسافت نصب زیرسیستم ویندوز برای لینوکس (WSL) را از طریق ابزار wsl.exe ساده‌سازی کرده است. به همین دلیل، اکثر راهنماها به این روش اشاره می‌کنند. با این حال، در عمل، این روش چندان هم ساده نیست، زیرا این دستور در Server Core کار نمی‌کند و فقط برای WSL نسخه ۲ مناسب است.

در حالت ایده‌آل، زیرسیستم ویندوز برای لینوکس (WSL) باید در تمام نسخه‌های پشتیبانی‌شده‌ی ویندوز با یک دستور واحد نصب، به‌روزرسانی یا حذف شود. اما در عمل این‌گونه نیست. مشکل نه در روش‌های مختلف (که همگی به یک هدف منتهی می‌شوند)، بلکه در ناسازگاری بین نسخه‌های مختلف سیستم‌عامل و پیاده‌سازی‌های WSL نهفته است.

نصب ساده با wsl.exe

برای روش نصب آسان، تنها کافی است دستور زیر را اجرا کنید:

wsl –install

این دستور WSL را از Microsoft Store دانلود کرده و همچنین توزیع پیش‌فرض لینوکس (در حال حاضر Ubuntu) را نصب می‌کند. اگر توزیع دیگری را ترجیح می‌دهید، می‌توانید با استفاده از گزینه -d یا --distribution آن را مشخص کنید.

برای مشاهده نام دقیق توزیع‌های در دسترس، این دستور را اجرا کنید:

wsl –list –online

Display available Linux distributions 1536x944 1 نصب زیرسیستم ویندوز برای لینوکس (WSL) روی نسخه‌های مختلف ویندوز و Server Core مرداد 1405 1

برای نصب Debian، از دستور زیر استفاده کنید:

wsl.exe –install -d Debian

محدودیت‌های نصب ساده

نصب ساده با استفاده از دستور wsl.exe معمولاً در ویندوز ۱۱ و ویندوز سرور ۲۰۲۲ کار می‌کند، اما فقط در نسخه دارای رابط گرافیکی (Desktop Experience). در نسخه Server Core، این دستور یا بی‌صدا متوقف می‌شود یا برای مدتی طولانی گیر می‌کند و در نهایت با خطای 0xc004000d خارج می‌شود، به‌ویژه اگر قابلیت‌های مجازی‌سازی فعال نباشند (مثلاً در یک ماشین مجازی).

محدودیت دیگر این روش نصب این است که فقط از WSL 2 پشتیبانی می‌کند. اگر به WSL 1 نیاز دارید – مثلاً زمانی که ویندوز در یک ماشین مجازی اجرا می‌شود و Nested Virtualization (مجازی‌سازی تو در تو) ممکن نیست – باید نسخه‌ای از WSL را که همچنان به‌صورت قابلیت اختیاری (Optional Feature) در ویندوز موجود است نصب کنید. این نسخه شامل WSL 2 نیز هست، اما دیگر به‌روزرسانی نمی‌شود.

If you install the subsystem via wsl.exe you will only get the second generation WSL2 نصب زیرسیستم ویندوز برای لینوکس (WSL) روی نسخه‌های مختلف ویندوز و Server Core مرداد 1405 3

در اصل، ابزار 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 انجام داد.

Add subsystem for Linux as a feature in Server Manager نصب زیرسیستم ویندوز برای لینوکس (WSL) روی نسخه‌های مختلف ویندوز و Server Core مرداد 1405 5

به‌عنوان جایگزین، می‌توانید این دستور را در پاورشل اجرا کنید:

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 خواهید بود.

Executing wsl update fails on Server Core thus preventing the download of the Linux kernel for WSL2 نصب زیرسیستم ویندوز برای لینوکس (WSL) روی نسخه‌های مختلف ویندوز و Server Core مرداد 1405 7

نصب نسخه‌های پیش‌نمایش (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 استفاده شود.

Even though wsl l shows the distro installed with the web download option it cannot be removed using this tool 1536x602 1 نصب زیرسیستم ویندوز برای لینوکس (WSL) روی نسخه‌های مختلف ویندوز و Server Core مرداد 1405 9

در این حالت، برای حذف توزیع باید از برنامه 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 می‌توانید از دستور زیر استفاده کنید:

Invoke-WebRequest https://aka.ms/wsl-ubuntu-1804 `
-OutFile ubuntu-1804.zip -UseBasicParsing
فایل‌های APPX در واقع آرشیوهای ZIP با پسوند متفاوت هستند. به همین دلیل، در مثال بالا بسته با پسوند .zip ذخیره می‌شود تا بتوان از Expand-Archive برای استخراج آن استفاده کرد:
Expand-Archive -Path .\ubuntu-1804.zip
محتویات آرشیو در پوشه‌ای به نام 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) به‌طور خودکار ثبت نمی‌شوند، باید پروفایل‌های توزیع‌های لینوکس را خودتان به‌صورت دستی اضافه کنید.

برای این کار:

  1. تنظیمات Windows Terminal را باز کنید.

  2. گزینه Add new profile را اجرا کنید.

  3. روی Duplicate کلیک کرده و یک پروفایل PowerShell را کپی کنید.

  4. نام جدید و خط فرمان را ویرایش کنید.

در قسمت 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)، باید از روش‌های کاملاً متفاوت استفاده کرد.

رتبه بندی