- WSL2 توزیعهای واقعی لینوکس را با پشتیبانی کامل از هسته و فراخوانیهای سیستمی در ویندوز ادغام میکند.
- نصب با wsl --install ساده شده است، که اجزا را فعال میکند، هسته را نصب میکند و اوبونتو را به طور پیشفرض پیکربندی میکند.
- ترکیب WSL2، ویندوز ترمینال و VS Code امکان ایجاد یک محیط توسعه تقریباً مشابه محیط عملیاتی را فراهم میکند.
- WSL2 استفاده از Docker، پایگاههای داده و ابزارهای لینوکس را تا حد زیادی بهبود میبخشد، ضمن اینکه راحتی دسکتاپ ویندوز را نیز حفظ میکند.
اگر در ویندوز برنامهنویسی میکنید اما روی سرورهای لینوکس مستقر هستید، احتمالاً بیش از یک بار با تفاوتهای محیطی، کتابخانههایی که فقط در محیط عملیاتی از کار میافتند یا داکر که به طور نامنظم اجرا میشود، دست و پنجه نرم کردهاید. WSL دقیقاً برای جلوگیری از این کابوس ایجاد شد و با WSL2 مایکروسافت بالاخره به هدفش رسید: یک لینوکس تقریباً بومی، ادغامشده در ویندوز و بدون نیاز به راهاندازی یک ماشین مجازی سنگین.
این گزینه در حال حاضر برای هزاران توسعهدهنده ارجحیت دارد زیرا به شما امکان میدهد یک ترمینال اوبونتو، دبیان یا کالی را در ویندوز ۱۰ یا ۱۱ باز کنید، دستورات، داکر، پایگاههای داده یا ابزارهای خط فرمان را مانند زمانی که روی یک سرور لینوکس هستید اجرا کنید، اما بدون اینکه برنامهها و بازیهای ویندوز خود را از دست بدهید. بیایید ببینیم که چگونه کار میکند، چگونه آن را نصب کنیم، چه تفاوتی با WSL1 دارد و چگونه میتوان بیشترین بهره را از آن در کارهای روزانه خود برد.
WSL چیست و چرا زندگی یک توسعهدهنده ویندوز را تغییر میدهد؟
WSL مخفف کلمه زیرسیستم ویندوز برای لینوکسزیرسیستمی که به شما امکان میدهد توزیعهای گنو/لینوکس را بدون نیاز به یک ماشین مجازی سنتی یا بوت دوگانه، درون ویندوز اجرا کنید. میتوانید اوبونتو، دبیان، کالی، اوپنسوزه، آرچ (با استفاده از appx) یا سایر توزیعها را نصب کنید و از ابزارهای کنسول آنها مستقیماً از دسکتاپ ویندوز خود استفاده کنید.
برخلاف WSL1، WSL2 از یک هسته واقعی لینوکس استفاده میکند این سیستم عامل در یک ماشین مجازی سبک که توسط ویندوز (Hyper-V و پلتفرم ماشین مجازی) مدیریت میشود، اجرا میشود و از فراخوانیهای سیستمی ELF64 پشتیبانی کامل دارد. WSL1 یک لایه ترجمه سیستمی بود که برای وظایف خاص سریع بود اما محدودیتهای جدی در سازگاری، به ویژه با ابزارهایی مانند Docker، داشت.
برای توسعهدهندگان وب، توسعهدهندگان backend، DevOps یا متخصصان داده، این بدان معناست که میتوانید کار در محیطی تقریباً مشابه محیط تولید (که در بیشتر موارد لینوکس است)، با استفاده از همان کتابخانهها، مدیران پایگاه داده، صفها، سرورهای پیامرسانی و غیره، بدون رها کردن ویندوز. عبارت کلاسیک "روی دستگاه من کار میکند" دیگر مربوط به گذشته است زیرا شما روی ویندوز توسعه میدهید و روی یک توزیع کاملاً متفاوت لینوکس مستقر میکنید.
WSL2 یک دسکتاپ گرافیکی کامل لینوکس نیست مشابه ماشین مجازی گنوم یا کیدیای، رابط اصلی ترمینال است. با این حال، امروزه میتوانید برنامههای رابط کاربری گرافیکی لینوکس را نیز بر روی WSL2 اجرا کنید و حتی از شتابدهی پردازنده گرافیکی برای کارهای سنگین مانند یادگیری ماشین یا گرافیک پیشرفته بهره ببرید. اگر نیاز به دسترسی از راه دور به برنامهها دارید، میتوانید پیکربندی کنید کروم ریموت دسکتاپ در ویندوز.
ویندوز در مقابل لینوکس: مشکل کلاسیک محیط توسعه
ویندوز همچنان پرنصبترین سیستم عامل روی کامپیوترهای رومیزی استدر حالی که اکثر استقرار برنامههای کاربردی در محیط لینوکس انجام میشود، این دوگانگی همیشه برای توسعهدهندگانی که در ویندوز کار میکنند اما برنامهها را در سرورهای لینوکس نگهداری یا مستقر میکنند، تضاد ایجاد کرده است.
کاربران macOS به طور سنتی اصطکاک کمتری را تجربه کردهاند از آنجا که macOS از پایه و اساس یونیکس استفاده میکند و بسیاری از ابزارها رفتاری مشابه لینوکس دارند، این یکی از دلایلی بود که بسیاری از توسعهدهندگان سالها پیش به مک مهاجرت کردند: آنها به دنبال یک ترمینال مناسب و محیطی نزدیکتر به محیط تولید بودند.
نقطه عطف بزرگ از راه رسید کارگر باراندازکانتینرها برای توسعه و استقرار ضروری شدند، اما در ویندوز، عملکرد و تجربه کاربری بسیار ضعیف بود و لایههای سازگاری ناکارآمدی داشت. WSL2 بسیاری از این مشکلات را حل میکند و محیطی را ارائه میدهد که در آن داکر بسیار بهتر کار میکند.
WSL1 در مقابل WSL2: تفاوتها و چرا باید از نسخه ۲ استفاده کنید
WSL در دو نسخه اصلی وجود دارد: WSL1 و WSL2اگرچه هر دو به شما امکان اجرای لینوکس روی ویندوز را میدهند، اما معماری آنها از یکی به دیگری تغییر زیادی کرده است و این تغییر در عملکرد و سازگاری قابل توجه است.
- WSL1 فراخوانیهای سیستمی لینوکس را ترجمه میکند به هسته ویندوز. این منجر به زمان بوت بسیار سریع و ادغام خوب فایلها میشود، اما سازگاری محدودی با برخی برنامهها دارد، به خصوص برنامههایی که به یک هسته واقعی لینوکس نیاز دارند، مانند موتورهای پایگاه داده خاص یا Docker که با ظرفیت کامل اجرا میشود.
- WSL2 از یک ماشین مجازی سبک با هسته کامل لینوکس استفاده میکند.توسط ویندوز مدیریت میشود. این سیستم عامل سازگاری کامل با فراخوانیهای سیستمی، بهبود عملکرد سیستم فایل (بهویژه در خود سیستم فایل لینوکس) و امکان ویژگیهای پیشرفتهای مانند داکر بومی روی WSL2 و دسترسی مستقیم به هسته را فراهم میکند.
- هر دو نسخه برخی از ویژگیها را به اشتراک میگذارندمزایای آن شامل ادغام با ویندوز، زمان بوت سریع، سازگاری با ابزارهای مجازیسازی مانند VMWare یا VirtualBox (در نسخههای اخیر) و پشتیبانی از توزیعهای مختلف است. با این حال، تنها WSL2 دارای هسته کامل لینوکس و پشتیبانی کامل از فراخوانیهای سیستمی است.
همه موارد فوق، گزینه پیشنهادی امروز استفاده از WSL2 است.مگر اینکه دلیل خیلی خاصی برای ماندن با WSL1 داشته باشید. برای مثال، Docker Desktop طوری طراحی شده که با WSL2 ادغام شود و بسیاری از راهنماها و ابزارهای مدرن از قبل این نسخه را به عنوان استاندارد در نظر میگیرند.

پیشنیازهای نصب WSL2 در ویندوز ۱۰ و ویندوز ۱۱
برای استفاده از WSL2 به یک نسخه نسبتاً جدید ویندوز نیاز دارید. به طور کلی، باید این شرایط را داشته باشید:
- ویندوز ۱۰ نسخه ۲۰۰۴ یا بالاتر (بیلد ۱۹۰۴۱+) برای استفاده از دستور ساده شده
wsl --install. - به طور خاص برای WSL2، ویندوز ۱۰ نسخه ۱۹۰۳، بیلد ۱۸۳۶۲ یا بالاتریا ویندوز ۱۱.
- معماری 64 بیتیWSL2 در ویندوز ۱۰ نسخه ۳۲ بیتی در دسترس نیست.
علاوه بر این، شما باید مطمئن شوید که مجازیسازی در BIOS فعال است. از تیم شما. اگر اینطور نباشد، ممکن است با خطاهایی مانند موارد زیر مواجه شوید: 0x80370102این پیامها معمولاً نشان میدهند که مجازیسازی سختافزار فعال نیست. وارد BIOS/UEFI شوید، گزینههای مربوط به CPU یا «فناوری مجازیسازی» را پیدا کنید و آن را فعال کنید.
نصب WSL2 از ابتدا با استفاده از دستور wsl –install
در نسخههای مدرن ویندوز ۱۰ و ویندوز ۱۱، نصب بسیار ساده شده است: فقط به یک دستور و راهاندازی مجدد نیاز دارد.
۱. پاورشل را به عنوان ادمین باز کنیددر منوی استارت عبارت «PowerShell» را جستجو کنید، روی آن کلیک راست کرده و گزینه «Run as administrator» را انتخاب کنید. در صورت نمایش اعلان کنترل حساب کاربری (UAC)، آن را بپذیرید.
۲. دستور نصب کامل را اجرا کنید:
فرماندهی: wsl --install
این دستور چندین مرحله داخلی را بدون نیاز به دست زدن به چیز دیگری انجام میدهد:
- اجزای اختیاری لازم را فعال کنید: زیر سیستم ویندوز برای لینوکس y پلتفرم ماشین مجازی.
- را دانلود و نصب کنید آخرین هسته لینوکس برای WSL.
- پیکربندی کنید WSL2 به عنوان نسخه پیشفرض.
- دانلود و نصب یک توزیع پیشفرض لینوکس (معمولاً) اوبونتو).
۳. وقتی ویندوز از شما درخواست کرد، کامپیوتر خود را مجدداً راهاندازی کنید.این برای عملیاتی شدن ویژگیهای تازه فعالشده ضروری است.
۴. در اولین بوت توزیع لینوکس (در اوبونتو، مگر اینکه خودتان طور دیگری مشخص کنید)، یک پنجره کنسول باز میشود که فایلها در آن استخراج میشوند. بار اول کمی بیشتر طول میکشد؛ شروعهای بعدی معمولاً تقریباً آنی هستند.
انتخاب و تغییر توزیع لینوکس در WSL
- به طور پیشفرض، دستور
wsl --installمعمولاً اوبونتو را نصب میکند به عنوان توزیع پیشفرض. با این حال، میتوانید توزیع دیگری را هم در حین نصب و هم بعد از آن انتخاب کنید. - برای مشاهده لیست توزیعهای موجود به صورت آنلاینپاورشل را باز کنید و تایپ کنید:
- فهرست:
wsl.exe --list --online - برای نصب یک توزیع خاص از طریق کنسولاز گزینه استفاده کنید
-dنشان دهنده نام شما: - نصب توزیع:
wsl.exe --install -d NombreDeLaDistro - اگر میخواهید توزیع پیشفرض را تغییر دهید (همانی که وقتی اجراش میکنی باز میشه)
wsl) ، شما میتوانید انجام دهید: - پیشفرض:
wsl.exe --set-default NombreDeLaDistro - و اگر فقط میخواهید یک توزیع خاص را به صورت یکجا راهاندازی کنید بدون تغییر پیشفرض، از این استفاده کنید:
- راه اندازی به موقع:
wsl.exe --distribution NombreDeLaDistro
علاوه بر توزیعهای فروشگاه مایکروسافت، میتوان توزیعهای سفارشی را از یک فایل TAR وارد کرد یا بستهها را نصب کرد. .appx در بعضی مواردمانند Arch Linux. شما حتی میتوانید تصاویر WSL سفارشی خود را برای استانداردسازی محیطهای درون یک شرکت ایجاد کنید.

نام کاربری و رمز عبور لینوکس خود را در WSL پیکربندی کنید
اولین باری که توزیع لینوکس نصب شده با WSL را باز میکنیداز شما خواسته میشود که یک نام کاربری و رمز عبور UNIX ایجاد کنید. این حساب کاربری، کاربر پیشفرض آن توزیع خواهد بود.
چندین نکته مهم در مورد این کاربر را در نظر داشته باشید:
- به حساب کاربری ویندوز شما متصل نیست.شما میتوانید (و توصیه میشود) نام را متفاوت کنید.
- وقتی رمز عبور را تایپ میکنید، چیزی روی صفحه نمایش داده نمیشود. (بدون ستاره). این به عنوان ورودی "کور" شناخته میشود که در لینوکس کاملاً طبیعی است.
- این کاربر در آن توزیع به عنوان مدیر در نظر گرفته میشود و میتونه استفاده کنه
sudoبرای اجرای دستورات با امتیازات بالا. - هر توزیع، کاربران خاص خود را دارد. و رمزهای عبور؛ اگر توزیع جدیدی اضافه کنید، باید فرآیند ایجاد حساب کاربری را تکرار کنید.
اگر می خواهید تغییر رمز عبور بعد، توزیع را باز کنید و اجرا کنید: تغییر رمز عبور: passwd
اگر رمز عبور کاربری توزیع را فراموش کردهاید اما اگر هنوز دسترسی ادمین در ویندوز دارید، میتوانید کنترل را به این صورت بازیابی کنید:
- یک خط فرمان یا PowerShell را به عنوان مدیر باز کنید و در توزیع پیشفرض به عنوان کاربر ریشه (root) وارد شوید:
wsl -u root
برای یک توزیع خاص:
wsl -d NombreDistro -u root - داخل آن ترمینال ریشه، اجرا کن:
passwd nombre_usuarioو رمز عبور جدید را تعیین کنید. - از WSL خارج شوید با
exitو با حساب کاربری بازیابی شده، دوباره به طور عادی وارد سیستم شوید.
روشهای بوت کردن و استفاده از توزیعهای لینوکس روی ویندوز
وقتی چندین توزیع نصب کردیدبسته به اینکه در هر زمان معین چه چیزی برای شما راحتتر است، میتوانید آنها را به روشهای مختلف باز کنید.
- ترمینال ویندوز (توصیه میشود). ویندوز ترمینال، شبیهساز ترمینال مدرن مایکروسافت است. هر بار که یک توزیع جدید لینوکس را در WSL نصب میکنید، یک پروفایل جدید در ویندوز ترمینال ظاهر میشود که میتوانید آن را سفارشی کنید (آیکون، طرح رنگ، دستور راهاندازی و غیره). این راحتترین راه برای کار همزمان با چندین خط فرمان است.
- از منوی استارت. میتوانید نام توزیع ("اوبونتو"، "دبیان"، "کالی لینوکس"...) را تایپ کنید. با کلیک بر روی آن، مستقیماً در پنجره کنسول مخصوص به خود باز میشود.
- از طریق پاورشل یا CMD. شما میتوانید مستقیماً نام توزیع را تایپ کنید (برای مثال،
ubuntu) یا از دستور عمومی استفاده کنید:
wslبرای ورود به توزیع پیشفرض، یا
wsl -d NombreDistroبرای وارد کردن یک مورد خاص. - اجرای یک دستور خاص لینوکس از طریق ویندوز از سینتکس زیر استفاده کنید:
wsl
به عنوان مثال:wsl ls -la,wsl pwd,wsl dateو غیره. به این ترتیب شما دستورات ویندوز و لینوکس را در یک خط لوله (pipeline) با هم ترکیب میکنید.

ترمینال ویندوز: همراه ایدهآل برای WSL2
برای بهرهمندی هرچه بیشتر از WSL2، نصب آن ارزشش را دارد ترمینال ویندوز از فروشگاه مایکروسافت. این بسیار راحتتر و قدرتمندتر از خط فرمان کلاسیک یا حتی پنجره پیشفرض PowerShell است.
ترمینال ویندوز اجازه میدهد ایجاد پروفایل برای هر توزیعتعریف کنید که کدام ترمینال به طور پیشفرض باز شود (PowerShell، CMD، Ubuntu و غیره)، از تبها، پنلهای تقسیمشده، تمهای رنگی مختلف، فونتهای سفارشی، تصاویر پسزمینه و میانبرهای پیشرفته صفحهکلید استفاده کنید.
برای بسیاری از توسعهدهندگان در ویندوزویندوز ترمینال + WSL2 ترکیبی است که بدون ترک محیط معمول ویندوز، تجربه کاری یک سیستم لینوکس بومی یا macOS با یک ترمینال پیشرفته را به شما نزدیک میکند.
راهاندازی محیط توسعه: VS Code، Visual Studio، Git و پایگاههای داده
پس از راهاندازی و اجرای WSL2، مرحله منطقی بعدی این است که ویرایشگر یا IDE مورد علاقه خود را ادغام کنید با آن محیط. مایکروسافت تلاش زیادی کرده است تا Visual Studio Code و Visual Studio به طور کامل با WSL کار کنند.
کد VS
در حالت ایدهآل، شما باید آن را نصب کنید بسته توسعه از راه دوراین افزونه به شما امکان میدهد پوشهای را که در WSL قرار دارد، مانند یک پروژه محلی باز کنید، اما سرور VS Code را در داخل توزیع اجرا کنید. فقط تایپ کنید:
code .
از طریق ترمینال WSL، در پوشه پروژه شما، VS Code آن مسیر "راه دور" را با کل اکوسیستم خود باز میکند: افزونهها، اشکالزدایی، ترمینال یکپارچه و غیره، اما در واقع بر روی لینوکس کار میکند.
استودیو بصری
این به شما امکان میدهد WSL را به عنوان هدف برای پروژههای C++ با استفاده از CMake پیکربندی کنید. میتوانید روی ویندوز، WSL یا دستگاههای از راه دور کامپایل و اشکالزدایی کنید و هدف را از داخل خود IDE تغییر دهید.
در مورد کنترل نسخه، استفاده از گیت در WSL به سادگی نصب آن با استفاده از مدیر بسته توزیع شما است (برای مثال، sudo apt install git (در اوبونتو) و پیکربندی اعتبارنامهها، فایلهای حذف، انتهای خطوط و غیره. همچنین میتوانید از Windows Credential Manager برای ادغام احراز هویت استفاده کنید.
پیکربندی پایگاههای داده در WSL (MySQL، PostgreSQL، MongoDB، Redis، SQL Server، SQLite و غیره) بسیار شبیه به انجام آن در هر سرور لینوکسی است. میتوانید سرویسها را درون توزیع شروع کنید یا از کانتینرهای Docker در WSL2 استفاده کنید و سپس بسته به نیاز خود، برنامههای خود را از ویندوز یا از خود WSL متصل کنید.
مدیریت درایوهای خارجی، رابط کاربری گرافیکی و پشتیبانگیری از توزیعها
WSL2 همچنین اجازه میدهد دیسکهای خارجی یا درایوهای USB را نصب کنید مستقیماً در محیط لینوکس. مستندات خاصی برای نصب دیسکها با دستور وجود دارد wsl --mountاین به شما انعطافپذیری زیادی هنگام کار با دادههایی که در واحدهای دیگر دارید، میدهد.
اگر می خواهید اجرای برنامههای گرافیکی لینوکس (رابط کاربری گرافیکی) در WSL2 اکنون به لطف پشتیبانی مایکروسافت از برنامههای رابط کاربری گرافیکی امکانپذیر است. این به شما امکان میدهد ویرایشگرهای گرافیکی، ابزارهای طراحی یا محیطهای دسکتاپ سبک را بدون نیاز به بوت کردن یک ماشین مجازی سنتی باز کنید.
برای انجام این کار پشتیبانگیری یا انتقال کامل یک توزیع به رایانه دیگرWSL شامل دو دستور بسیار مفید است:
- یک توزیع را صادر کنید:
wsl --export NombreDistro backup-wsl.tar
این یک فایل TAR با کل سیستم فایل آن تولید میکند. - وارد کردن یک توزیع:
wsl --import NombreDistro C:\ruta\destino backup-wsl.tar --version 2
این کار آن توزیع را با تمام محتویاتش به مسیر دیگری بازیابی میکند و در صورت تمایل، تضمین میکند که از WSL2 استفاده میکند.
این مکانیزم export/import برای شبیهسازی محیطهای توسعه، اشتراکگذاری آنها با همکاران یا صرفاً حفظ یک نسخه پشتیبان امنیتی قبل از ایجاد تغییرات اساسی بسیار مناسب است.
WSL2 خود را به عنوان محیط توسعه اصلی تثبیت کرده است. برای بسیاری از کاربران ویندوز که نمیخواهند بازی، استفاده از نرمافزارهای خاص یا گردش کار خود را در این سیستم کنار بگذارند، اما به یک محیط واقعی لینوکس برای برنامهنویسی نیاز دارند، امتحان کردن WSL2 میتواند یک تغییر اساسی در نحوه کار شما باشد.
ویراستار متخصص در مسائل فناوری و اینترنت با بیش از ده سال تجربه در رسانه های مختلف دیجیتال. من به عنوان ویراستار و تولید کننده محتوا برای شرکت های تجارت الکترونیک، ارتباطات، بازاریابی آنلاین و تبلیغات کار کرده ام. من همچنین در وب سایت های اقتصاد، دارایی و سایر بخش ها نوشته ام. کار من نیز علاقه من است. اکنون، از طریق مقالات من در Tecnobits، سعی می کنم تمام اخبار و فرصت های جدیدی را که دنیای فناوری هر روز برای بهبود زندگی مان به ما ارائه می دهد، کشف کنم.
